From 4d63f37421d85e6218746ba61e7a0da2760c0a70 Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Sat, 8 Nov 2025 23:09:41 -0500 Subject: [PATCH] feat: enhance material creation to ensure Principled BSDF node exists and set properties --- tools/blender_export_primitives.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/tools/blender_export_primitives.py b/tools/blender_export_primitives.py index cf39cdd..6ef14dd 100644 --- a/tools/blender_export_primitives.py +++ b/tools/blender_export_primitives.py @@ -15,12 +15,21 @@ def create_material(name, base_color): mat.use_nodes = True nodes = mat.node_tree.nodes - # Get the Principled BSDF node (created by default) - bsdf = nodes.get("Principled BSDF") - if bsdf: - bsdf.inputs['Base Color'].default_value = base_color - bsdf.inputs['Roughness'].default_value = 0.5 - bsdf.inputs['Metallic'].default_value = 0.1 + # Find the Principled BSDF node (should be created by default) + bsdf = None + for node in nodes: + if node.type == 'BSDF_PRINCIPLED': + bsdf = node + break + + # If not found, create it + if not bsdf: + bsdf = nodes.new(type='ShaderNodeBsdfPrincipled') + + # Set material properties + bsdf.inputs['Base Color'].default_value = base_color + bsdf.inputs['Roughness'].default_value = 0.5 + bsdf.inputs['Metallic'].default_value = 0.1 return mat @@ -71,8 +80,6 @@ bpy.ops.export_scene.gltf( ) print(f"Exported model.glb (BLUE) to {output_dir}") -print(f"Exported model.glb (BLUE) to {output_dir}") - print("\n✓ All primitive models with colors exported successfully!") print(f" - RED Cube: {os.path.join(output_dir, 'cube.glb')}") print(f" - GREEN Sphere: {os.path.join(output_dir, 'sphere.glb')}")