mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-16 21:46:03 +08:00
Store UV coordinates to 3MF file
CURA-12544
This commit is contained in:
parent
96d2caf195
commit
50ea216a60
@ -109,7 +109,8 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
def _convertUMNodeToSavitarNode(um_node,
|
def _convertUMNodeToSavitarNode(um_node,
|
||||||
transformation = Matrix(),
|
transformation = Matrix(),
|
||||||
exported_settings: Optional[Dict[str, Set[str]]] = None,
|
exported_settings: Optional[Dict[str, Set[str]]] = None,
|
||||||
center_mesh = False):
|
center_mesh = False,
|
||||||
|
scene: Savitar.Scene = None):
|
||||||
"""Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode
|
"""Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode
|
||||||
|
|
||||||
:returns: Uranium Scene node.
|
:returns: Uranium Scene node.
|
||||||
@ -150,7 +151,11 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
if indices_array is not None:
|
if indices_array is not None:
|
||||||
savitar_node.getMeshData().setFacesFromBytes(indices_array)
|
savitar_node.getMeshData().setFacesFromBytes(indices_array)
|
||||||
else:
|
else:
|
||||||
savitar_node.getMeshData().setFacesFromBytes(numpy.arange(mesh_data.getVertices().size / 3, dtype=numpy.int32).tostring())
|
savitar_node.getMeshData().setFacesFromBytes(numpy.arange(mesh_data.getVertices().size / 3, dtype=numpy.int32).tobytes())
|
||||||
|
|
||||||
|
uv_coordinates_array = mesh_data.getUVCoordinatesAsByteArray()
|
||||||
|
if uv_coordinates_array is not None and len(uv_coordinates_array) > 0:
|
||||||
|
savitar_node.getMeshData().setUVCoordinatesPerVertexAsBytes(uv_coordinates_array, scene)
|
||||||
|
|
||||||
# Handle per object settings (if any)
|
# Handle per object settings (if any)
|
||||||
stack = um_node.callDecoration("getStack")
|
stack = um_node.callDecoration("getStack")
|
||||||
@ -187,7 +192,8 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
if child_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr:
|
if child_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr:
|
||||||
continue
|
continue
|
||||||
savitar_child_node = ThreeMFWriter._convertUMNodeToSavitarNode(child_node,
|
savitar_child_node = ThreeMFWriter._convertUMNodeToSavitarNode(child_node,
|
||||||
exported_settings = exported_settings)
|
exported_settings = exported_settings,
|
||||||
|
scene = scene)
|
||||||
if savitar_child_node is not None:
|
if savitar_child_node is not None:
|
||||||
savitar_node.addChild(savitar_child_node)
|
savitar_node.addChild(savitar_child_node)
|
||||||
|
|
||||||
@ -320,13 +326,15 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child,
|
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child,
|
||||||
transformation_matrix,
|
transformation_matrix,
|
||||||
exported_model_settings,
|
exported_model_settings,
|
||||||
center_mesh = True)
|
center_mesh = True,
|
||||||
|
scene = savitar_scene)
|
||||||
if savitar_node:
|
if savitar_node:
|
||||||
savitar_scene.addSceneNode(savitar_node)
|
savitar_scene.addSceneNode(savitar_node)
|
||||||
else:
|
else:
|
||||||
savitar_node = self._convertUMNodeToSavitarNode(node,
|
savitar_node = self._convertUMNodeToSavitarNode(node,
|
||||||
transformation_matrix,
|
transformation_matrix,
|
||||||
exported_model_settings)
|
exported_model_settings,
|
||||||
|
scene = savitar_scene)
|
||||||
if savitar_node:
|
if savitar_node:
|
||||||
savitar_scene.addSceneNode(savitar_node)
|
savitar_scene.addSceneNode(savitar_node)
|
||||||
|
|
||||||
@ -500,7 +508,7 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
def sceneNodesToString(scene_nodes: [SceneNode]) -> str:
|
def sceneNodesToString(scene_nodes: [SceneNode]) -> str:
|
||||||
savitar_scene = Savitar.Scene()
|
savitar_scene = Savitar.Scene()
|
||||||
for scene_node in scene_nodes:
|
for scene_node in scene_nodes:
|
||||||
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(scene_node, center_mesh = True)
|
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(scene_node, center_mesh = True, scene = savitar_scene)
|
||||||
savitar_scene.addSceneNode(savitar_node)
|
savitar_scene.addSceneNode(savitar_node)
|
||||||
parser = Savitar.ThreeMFParser()
|
parser = Savitar.ThreeMFParser()
|
||||||
scene_string = parser.sceneToString(savitar_scene)
|
scene_string = parser.sceneToString(savitar_scene)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user