[UE4] Blueprint & Python으로 Datasmith 가져오기 프로세스 맞춤설정
Datasmith를 사용하여 정상적으로 가져오면 아래 이미지와 같이 2단계 프로세스가 실행됩니다.
이미지는 공식 문서에서 인용
h tp // 아피. 그래, 응. 코 m/JP응/엔테 rp 리세/다타 s미 th/오오ぇrゔぃ에 w/쿠스와 다진 m포 rtP로세스 s/그리고 x. HTML
Blueprint/Python을 사용하면 이 두 프로세스를 분해하여 따로따로 실행하거나 그 사이에 독자적인 처리를 짜서 실제로 가져오기 전에 실행할 수 있습니다.
이번은 일례로서, 바운딩 박스의 3변의 합계가 일정 이하의 오브젝트를 제외해 임포트 해 보고 싶습니다.
나사 등 세세한 부품을 제외하는 데 사용할 수 있을까 생각합니다.
Blueprint의 경우
Editor Scripting Utilities 플러그인을 활성화해야 합니다.
편집기 편집 > 플러그인에서 Editor Scripting Utilities에서 검색하여 활성화하십시오.
먼저 콘텐츠 브라우저에서 블루프린트 클래스를 만듭니다.
상위 클래스는 Placed Editor Utility Base로 설정됩니다.
Blueprint 그래프는 이런 느낌입니다.
보기 쉽도록 이 사이트에도 업하고 있습니다.
h tps://b ぅ에 p 린츠에. 이 m / b p p rin t / _ x g ri d /
가장 왼쪽의 이벤트 노드는 사용자 정의 이벤트이며, 편집기에서 호출을 선택하면 편집기에서 실행할 수 있습니다.
여기를 참고로 설정해보십시오.
h tp // 아피. 그래, 응. 코 m/JP응/엔기네/에아와 r/Sc리 p 칭다다토토마치온/Bぅ에p린 ts/이여 x. HTML
거친 처리의 흐름을 해설하면,
Datasmith 파일을 참조하여 Datasmith Scene 빌드
↓
구축된 씬의 모든 액터를 배열로서 취득해, For Each Loop로 개별적으로 바운딩 박스의 크기를 평가해 일정 이하이면 씬으로부터 삭제
↓
마지막으로 가져온 액터가 있으면 삭제
위에서 재구성한 것을 가져오고 마지막으로 메모리의 Datasmith Scene 재설정
같은 흐름이 있습니다.
파이썬의 경우
Python 플러그인을 사용하도록 설정해야 합니다.
편집기 편집 > 플러그인에서 Python 플러그인을 활성화하십시오.
언리얼 엔진에서 Python을 사용하는 방법은 여기를 참조하십시오.
h tp // 아피. 그래, 응. 코 m/JP응/엔기네/에아와 r/Sc리 p칭암다토 마치온/Py 텐/그리고 x. HTML
import unreal
#.udatasmithのファイルパスを指定。
ds_file_on_disk = ""
ds_scene_in_memory = unreal.DatasmithSceneElement.construct_datasmith_scene_from_file(ds_file_on_disk)
if ds_scene_in_memory is None:
print "Scene loading failed."
quit()
#バウンディングボックス3辺の和が一定以下のメッシュを取り除く。
remove_size = 500
for mesh in ds_scene_in_memory.get_meshes():
mesh_size = mesh.get_bounding_box_height() + mesh.get_bounding_box_width() + mesh.get_bounding_box_depth()
if remove_size > mesh_size:
ds_scene_in_memory.remove_mesh(mesh)
# 上記で取り除いたメッシュを参照するメッシュ アクタをシーンから取り除く。
for mesh_actor in ds_scene_in_memory.get_all_mesh_actors():
mesh_reference = mesh_actor.get_mesh_element()
if mesh_reference is None:
print("removing an actor with a missing mesh:" + mesh_actor.get_element_name())
ds_scene_in_memory.remove_mesh_actor(mesh_actor)
# インポート オプションを設定する。
options = unreal.DatasmithImportBaseOptions()
options.scene_handling = unreal.DatasmithImportScene.NEW_LEVEL
# アセットとアクタを作成することでプロセスをファイナライズする。
# 宛先フォルダは /Game/ で始まる必要がある。
ds_scene_in_memory.import_scene("/Game/MyStudioScene", options)
# Datasmith シーンをクリーン アップする。
ds_scene_in_memory.destroy_scene()
print "Custom import process complete!"
이런 느낌입니다.
공식 문서에도 있듯이 이름으로 판별하여 삭제하거나 그 밖에도 여러가지 응용할 수 있다고 생각합니다.
참고 링크
h tp // 아피. 그래, 응. 코 m/JP응/엔테 rp 리세/다타 s미 th/오오 ぇrゃぃ에 w/쿠 s와 다진 m포 rtP 로세 s/ 어서 x. HTML
htps //w w. 그래, 응. 코 m / 그럼 / ch-b-g / 마킨 g- 아레 아 l - 치메 - 데시 군 - 와 lmc ぁ음, 음, l-s
Reference
이 문제에 관하여([UE4] Blueprint & Python으로 Datasmith 가져오기 프로세스 맞춤설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/EGJ-Hiroyuki_Kobayashi/items/409e33d750962b50f21c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)