Spaces:
Running
Running
| import bpy | |
| import sys | |
| # Clear the scene | |
| bpy.ops.object.select_all(action="SELECT") | |
| bpy.ops.object.delete(use_global=False) | |
| # Load mesh.ply | |
| ply_path = sys.argv[-1] | |
| bpy.ops.wm.ply_import(filepath=ply_path) | |
| # Create a new material | |
| material = bpy.data.materials.new(name="New_Material") | |
| material.use_nodes = True | |
| # Assign the material to the object | |
| obj = bpy.context.selected_objects[0] | |
| if obj.data.materials: | |
| obj.data.materials[0] = material | |
| else: | |
| obj.data.materials.append(material) | |
| # Add a Vertex Color node and link it | |
| nodes = material.node_tree.nodes | |
| links = material.node_tree.links | |
| # Clear default nodes | |
| for node in nodes: | |
| nodes.remove(node) | |
| # Create nodes | |
| output_node = nodes.new(type="ShaderNodeOutputMaterial") | |
| vertex_color_node = nodes.new(type="ShaderNodeVertexColor") | |
| principled_bsdf = nodes.new(type="ShaderNodeBsdfPrincipled") | |
| # Set the vertex color layer name | |
| vertex_color_node.layer_name = "Col" | |
| # Arrange nodes | |
| vertex_color_node.location = (-300, 0) | |
| principled_bsdf.location = (0, 0) | |
| output_node.location = (300, 0) | |
| # Link nodes | |
| links.new(vertex_color_node.outputs["Color"], principled_bsdf.inputs["Base Color"]) | |
| links.new(principled_bsdf.outputs["BSDF"], output_node.inputs["Surface"]) | |
| # Rotate the object | |
| bpy.context.object.rotation_euler[2] = 1.57079 | |
| # Export the scene to a glTF file | |
| glb_path = ply_path.replace(".ply", ".glb") | |
| bpy.ops.export_scene.gltf(filepath=glb_path, export_format="GLB") | |
| # Free up memory | |
| bpy.ops.wm.read_factory_settings(use_empty=True) | |