add up-versioning to the max loader

This commit is contained in:
Kayla Man 2023-05-09 21:47:04 +08:00
parent 1a9bbc3762
commit 564da974b1
5 changed files with 64 additions and 14 deletions

View file

@ -4,7 +4,7 @@ from openpype.pipeline import (
get_representation_path
)
from openpype.hosts.max.api.pipeline import containerise
from openpype.hosts.max.api import lib
from openpype.hosts.max.api import lib, maintained_selection
class FbxLoader(load.LoaderPlugin):
@ -36,7 +36,13 @@ importFile @"{filepath}" #noPrompt using:FBXIMP
self.log.debug(f"Executing command: {fbx_import_cmd}")
rt.execute(fbx_import_cmd)
container_name = f"{name}_CON"
# create "missing" container for obj import
container = rt.container()
container.name = f"{name}"
# get current selection
for selection in rt.getCurrentSelection():
selection.Parent = container
asset = rt.getNodeByName(f"{name}")
@ -48,15 +54,30 @@ importFile @"{filepath}" #noPrompt using:FBXIMP
path = get_representation_path(representation)
node = rt.getNodeByName(container["instance_node"])
rt.select(node.Children)
fbx_reimport_cmd = (
f"""
fbx_objects = self.get_container_children(node)
for fbx_object in fbx_objects:
fbx_object.source = path
FBXImporterSetParam "Animation" true
FBXImporterSetParam "Cameras" true
FBXImporterSetParam "AxisConversionMethod" true
FbxExporterSetParam "UpAxis" "Y"
FbxExporterSetParam "Preserveinstances" true
importFile @"{path}" #noPrompt using:FBXIMP
""")
rt.execute(fbx_reimport_cmd)
with maintained_selection():
rt.select(node)
lib.imprint(container["instance_node"], {
"representation": str(representation["_id"])
})
def switch(self, container, representation):
self.update(container, representation)
def remove(self, container):
from pymxs import runtime as rt

View file

@ -37,6 +37,14 @@ importFile @"{filepath}" #noPrompt using:FBXIMP
self.log.debug(f"Executing command: {fbx_import_cmd}")
rt.execute(fbx_import_cmd)
# create "missing" container for obj import
container = rt.container()
container.name = f"{name}"
# get current selection
for selection in rt.getCurrentSelection():
selection.Parent = container
asset = rt.getNodeByName(f"{name}")
return containerise(

View file

@ -61,6 +61,9 @@ class ObjLoader(load.LoaderPlugin):
"representation": str(representation["_id"])
})
def switch(self, container, representation):
self.update(container, representation)
def remove(self, container):
from pymxs import runtime as rt

View file

@ -9,7 +9,7 @@ from openpype.pipeline import (
load, get_representation_path
)
from openpype.hosts.max.api.pipeline import containerise
from openpype.hosts.max.api import lib
from openpype.hosts.max.api import lib, maintained_selection
class AbcLoader(load.LoaderPlugin):
@ -65,14 +65,26 @@ importFile @"{file_path}" #noPrompt
path = get_representation_path(representation)
node = rt.getNodeByName(container["instance_node"])
alembic_objects = self.get_container_children(node, "AlembicObject")
for alembic_object in alembic_objects:
alembic_object.source = path
lib.imprint(container["instance_node"], {
"representation": str(representation["_id"])
})
rt.select(node.Children)
for alembic in rt.selection:
abc = rt.getNodeByName(alembic.name)
rt.select(abc.Children)
for abc_con in rt.selection:
container = rt.getNodeByName(abc_con.name)
container.source = path
rt.select(container.Children)
for abc_obj in rt.selection:
alembic_obj = rt.getNodeByName(abc_obj.name)
alembic_obj.source = path
with maintained_selection():
rt.select(node)
def switch(self, container, representation):
self.update(container, representation)

View file

@ -3,7 +3,7 @@ from openpype.pipeline import (
load, get_representation_path
)
from openpype.hosts.max.api.pipeline import containerise
from openpype.hosts.max.api import lib
from openpype.hosts.max.api import lib, maintained_selection
class PointCloudLoader(load.LoaderPlugin):
@ -34,15 +34,21 @@ class PointCloudLoader(load.LoaderPlugin):
path = get_representation_path(representation)
node = rt.getNodeByName(container["instance_node"])
rt.select(node.Children)
for prt in rt.selection:
prt_object = rt.getNodeByName(prt.name)
prt_object.filename = path
prt_objects = self.get_container_children(node)
for prt_object in prt_objects:
prt_object.source = path
with maintained_selection():
rt.select(node)
lib.imprint(container["instance_node"], {
"representation": str(representation["_id"])
})
def switch(self, container, representation):
self.update(container, representation)
def remove(self, container):
"""remove the container"""
from pymxs import runtime as rt