Preserve parent model settings in renderer

This commit is contained in:
2026-08-11 02:02:40 +01:00
parent d32fbac14a
commit b093c828b9
3 changed files with 13 additions and 690 deletions
+13 -7
View File
@@ -185,6 +185,12 @@ def merge_model(pack_root: Path, model_ref: str, cache: dict[str, dict[str, Any]
else:
merged["texture_size"] = [16, 16]
for key in ("display", "gui_light", "render_type", "groups", "credit", "ambientocclusion"):
if key in data:
merged[key] = data[key]
elif parent_model and key in parent_model:
merged[key] = parent_model[key]
cache[model_ref] = merged
return merged
@@ -458,8 +464,8 @@ def render_model(pack_root: Path, model_ref: str, output_path: Path, cache: dict
shadow = shadow.filter(ImageFilter.GaussianBlur(8))
canvas.alpha_composite(shadow)
faces: list[tuple[float, list[tuple[float, float, float]], Image.Image]] = []
for corners, element, model_data in transformed_elements:
faces: list[tuple[float, list[tuple[float, float, float]], Image.Image]] = []
for face_name, face in element.get("faces", {}).items():
vertices = face_vertices(corners, face_name)
if not vertices:
@@ -468,12 +474,12 @@ def render_model(pack_root: Path, model_ref: str, output_path: Path, cache: dict
texture = resolve_face_texture(pack_root, model_data, face)
faces.append((sort_face_key(projected), projected, texture))
faces.sort(key=lambda item: item[0])
for _, projected, texture in faces:
warped = transform_face(texture, projected, canvas)
if warped is None:
continue
canvas.alpha_composite(warped)
faces.sort(key=lambda item: item[0])
for _, projected, texture in faces:
warped = transform_face(texture, projected, canvas)
if warped is None:
continue
canvas.alpha_composite(warped)
canvas.save(output_path)