Source code for cgl.plugins.unreal.tasks.shd
try:
import unreal
except ImportError:
pass
from cgl.plugins.smart_task import SmartTask
[docs]
class Task(SmartTask):
def __init__(self, dcc="unreal_engine", task="mld", path_object=None):
self.dcc = dcc
self.task = task
if not path_object:
self.set_path_object()
else:
self.path_object = path_object
self.set_task_object()
[docs]
def get_msd_data(self, path_object=None):
pass
[docs]
def create_material(shader_destination, material_name):
asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
asset_tools.create_asset(
material_name, shader_destination, unreal.Material, unreal.MaterialFactoryNew()
)
[docs]
def attach_materials_to_model(model_path, materials_folder):
missing_material_list = []
model_obj = unreal.load_object(None, model_path)
if not model_obj:
print("Error: Can't Load MDL for Shader")
return False
for material_slot in model_obj.static_materials:
slot_name = material_slot.material_slot_name
slot_index = model_obj.get_material_index(slot_name)
material_path = f"{materials_folder}{slot_name}"
loaded_material = unreal.load_object(None, material_path)
if loaded_material:
model_obj.set_material(slot_index, loaded_material)
else:
print(f"Couldn't Find Material: {loaded_material}")
missing_material_list.append(slot_name)
return missing_material_list
if __name__ == "__main__":
from cgl.core.path.object import PathObject
import cgl.plugins.unreal.path as path
import cgl.plugins.unreal.turntable as tt
from cgl.plugins.unreal.utils import sequence, asset
from importlib import reload
reload(path)
reload(sequence)
reload(tt)
reload(asset)
filepath = r"Z:\prod\premise\source\ASJ\assets\wdb\talithaOutfit\cth\default\publish\001.000\high"
po = PathObject().from_path_string(filepath)
Task(path_object=po).import_latest()
# ue_obj = path.UnrealObject().from_path_object(po)
# tt.create_turntable(ue_obj, mesh_task="mdl")
# render_path = ue_obj.get_render_path(dirname=False)
# print(render_path)
# game_dirname = ue_obj.get_game_path(dirname=True)
#
# level_sequence_name = "shd_turntable_sequence"
#
# asset_data = unreal.EditorAssetLibrary.find_asset_data(
# f"{game_dirname}/{level_sequence_name}"
# )
# print(asset_data)
# # if asset_data:
# # self.shared_data["level_sequence"] = asset_data