저는 AI로 생성된 3D 모델을 Unity로 직접 가져오는 작업을 자동화했고, 이를 통해 생산 속도가 크게 향상되었습니다. 사용자 지정 에디터 스크립트를 작성하여 수동 에셋 처리의 번거롭고 오류 발생 가능성이 있는 단계를 없앴습니다. 이 가이드는 Unity 개발자와 기술 아티스트를 위한 것으로, AI 3D 생성을 프로젝트에 직접 연결하여 빠른 반복과 일관된 품질을 가능하게 하는 강력한 파이프라인을 구축하고자 하는 분들을 위한 것입니다. 그 결과, 물류에 소요되는 시간은 줄어들고 창의성과 게임 플레이에 더 많은 시간을 할애할 수 있게 됩니다.
주요 내용:
.fbx 또는 .gltf와 같은 기본적이고 프로덕션 준비가 된 출력을 제공하는 생성기를 사용하면 Unity에서 설정 복잡성을 크게 줄일 수 있습니다.AI로 생성된 모델을 수동으로 다운로드, 가져오기 및 구성하는 것은 주요 병목 현상입니다. 가져오기 스케일 수정, 재질 재할당, 일관된 명명 보장에 시간을 낭비했습니다. 임시 파일로 인해 버전 제어가 복잡해졌고, 디자인을 반복하는 것은 이 모든 단계를 반복하는 것을 의미했습니다. 이러한 수동적인 통제는 빠른 프로토타이핑을 방해했고 대량 생성을 사실상 사용할 수 없게 만들었습니다.
Unity 에디터 스크립트를 사용하면 에셋을 프로그래밍 방식으로 가로채고 처리할 수 있습니다. 저는 전용 파이프라인 관리자 역할을 하는 스크립트를 작성합니다. 새 모델이 생성되면 스크립트가 자동으로 모델을 가져오고, 프로젝트별 설정을 적용하고, 장면 또는 프리팹 시스템에 통합합니다. 이는 여러 단계가 필요하고 몇 분이 걸리던 프로세스를 몇 초 만에 완료되는 백그라운드 작업으로 바꿉니다.
정량화 가능한 이점은 분명합니다. 에셋 통합 시간이 70% 이상 단축되었습니다. 아티스트와 디자이너가 변형을 생성하고 거의 즉시 컨텍스트에서 볼 수 있었기 때문에 프로토타이핑 주기가 가속화되었습니다. 일관성이 크게 향상되었습니다. 가져온 모든 모델은 올바른 피벗, 균일한 스케일 및 할당된 재질을 가집니다. 이러한 신뢰성은 AI 생성 콘텐츠에 의존하는 시스템을 구축하는 데 중요합니다.
먼저 Unity 프로젝트에 엄격한 폴더 계층 구조를 정의합니다. 저는 항상 Assets/AI_Generated/와 같은 전용 루트 폴더를 만들고, 그 안에 Raw_Imports, Processed_Prefabs, Materials, Textures와 같은 하위 폴더를 만듭니다. 이 조직은 스크립트 로직 및 에셋 관리에 중요합니다. 또한 API 키 및 기본 가져오기 구성을 저장할 영구 Settings 에셋(예: ScriptableObject)을 설정합니다.
Tripo AI와 같이 API가 있는 도구의 경우 통신을 처리하는 전용 C# 클래스를 만듭니다. API 엔드포인트와 키는 안전하게 저장하고 하드 코딩하지 않습니다. 이 클래스는 생성 요청(텍스트 또는 이미지)을 보내고, 중요하게는 완료를 폴링하고 결과 모델 파일(예: .fbx 또는 .glb)을 Raw_Imports 폴더로 다운로드하는 작업을 트리거하는 역할을 합니다.
이것이 파이프라인의 핵심입니다. 저는 AssetPostprocessor 또는 사용자 지정 에디터 창을 사용합니다. 스크립트는 다음을 수행합니다.
Raw_Imports 폴더에서 새 파일을 감시합니다.AssetDatabase.ImportAsset()을 호출합니다.GameObject에 액세스하여 변환 재설정, Materials 폴더의 명명된 재질 설정, 필요한 경우 메시 가져오기 스케일 조정과 같은 규칙을 적용합니다.Processed_Prefabs에 프리팹을 만들고 원본 파일을 아카이브로 이동합니다.메시를 가져오는 것은 시작에 불과합니다. 제 스크립트는 추가 프로세스를 연결합니다.
재질 할당은 일반적인 실패 지점입니다. Unity가 기본 재질을 사용하도록 두지 않습니다. 제 스크립트는 Materials 폴더에 이름으로 기존 재질이 있는지 확인합니다. 존재하지 않으면 프로젝트의 마스터 셰이더(예: URP Lit)를 사용하여 재질을 생성합니다. 텍스처의 경우 파일 이름을 구문 분석하거나 구성된 명명 규칙(ModelName_Albedo.png)을 사용하여 올바르게 할당합니다. 런타임 인스턴스화된 변형에는 항상 MaterialPropertyBlock을 사용하여 재질 누수를 방지합니다.
AI 생성기는 종종 일관되지 않은 스케일로 모델을 출력합니다. 가져오기 스크립트에서 모델 임포터에 범용 스케일 팩터(예: 0.01 또는 1.0)를 적용합니다. 또한 가져오기 시 모델을 회전해야 하는 경우가 많습니다(예: Z-up에서 Y-up으로 X축에서 -90도). 생성기의 피벗을 사용할 수 없는 경우(예: 베이스에 있는 경우) 간단한 스크립트를 사용하여 메시 바운드 중앙에 새 부모 GameObject를 만들고 이를 기능 피벗으로 사용합니다.
파이프라인은 정상적으로 실패해야 합니다. API 호출 및 파일 작업을 try-catch 블록으로 묶습니다. 모든 작업은 파일과 Unity 콘솔에 명확한 메시지([AI Pipeline] 'Rock_01'을 성공적으로 가져왔습니다. 또는 [AI Pipeline] 오류: API에서 모델을 다운로드하지 못했습니다.)와 함께 로깅됩니다. 이 로그는 실패한 일괄 작업을 디버깅하는 데 필수적입니다.
엄격한 명명 패턴을 사용합니다. AssetType_Descriptor_Variant_##. 예를 들어, VEG_Tree_Pine_01. 에디터 스크립트는 이를 구문 분석하여 태그를 자동 할당할 수 있습니다. 버전 관리를 위해 원본 가져오기 폴더에 타임스탬프를 추가합니다(Raw_Imports/2024-05-27/). 이렇게 하면 Assets 폴더가 깨끗하게 유지되고 명확한 감사 추적을 제공합니다.
모델이 가져와지면 Unity의 LODGroup 생성을 트리거합니다. MeshSimplifier를 사용하여 2-3개의 저해상도 메시를 생성하고, LOD Group을 구축하고, 구성된 화면 임계값으로 할당하는 스크립트를 작성합니다. 이는 모든 새 환경 에셋에 대해 밤새 실행하는 일괄 처리 프로세스입니다.
진지한 프로젝트 개발의 경우 콘텐츠 전달 시스템과의 직접적인 통합이 중요합니다. 제 파이프라인은 생성된 프리팹에 Addressable 레이블을 자동으로 태그합니다. 그런 다음 일괄 가져오기 후 Addressables 그룹을 새로 고치거나 원격 에셋 번들을 위한 새 빌드를 트리거하는 스크립트를 가질 수 있습니다.
디자이너가 Unity를 떠나지 않고도 모델을 생성할 수 있는 사용자 지정 EditorWindow를 구축했습니다. 텍스트 프롬프트를 입력하고 에셋 유형(Prop, Character, Environment)을 선택한 다음 "생성"을 클릭합니다. UI는 API 호출을 처리하고 진행률 표시줄을 표시하며 완성된 프리팹을 현재 장면 또는 선택한 폴더에 배치합니다.
대규모 라이브러리를 구축하기 위해 CSV 파일 또는 프롬프트 목록을 시스템에 공급합니다. 일괄 스크립트는 큐를 관리하고, API의 속도 제한을 처리하며, 각 모델을 전체 파이프라인을 통해 순차적으로 처리합니다. 여기에는 긴 시간 초과 및 일시 중지/재시도 로직을 포함하는 것이 필수적입니다.
직접 API 통합은 프로토타이핑 중 긴밀한 피드백 루프에 적합합니다. 상태 업데이트를 받고 잠재적으로 데이터를 스트리밍할 수 있습니다. 그러나 오류 처리 및 네트워크 안정성 측면에서 복잡성이 추가됩니다. 저는 종종 파일 기반 감시 시스템을 선호합니다. AI 도구(Tripo AI와 같은)가 감시되는 네트워크 또는 로컬 폴더로 내보냅니다. 제 Unity 스크립트는 해당 폴더의 모든 새 항목을 처리합니다. 이는 더 분리되어 있고 안정적이며 더 무거운 모델 파일을 더 잘 처리합니다.
Unity 에디터를 차단하지 마십시오. 저는 절대로 동기식 API 호출을 하지 않습니다. 모든 생성 요청은 비동기식입니다. 실시간 요구 사항의 경우 콜백 또는 이벤트 시스템을 사용하여 모델이 준비되었을 때 UI에 알립니다. 대부분의 프로덕션 작업의 경우 비동기식이 괜찮습니다. 모델이 생성되어 폴더에 저장되고 다음 Unity 새로 고침 시 또는 AssetDatabase.Refresh()를 통해 프로젝트에 나타납니다.
출력 형식은 가져오기 복잡성을 결정합니다. .fbx는 Unity에서 보편적으로 신뢰할 수 있습니다. .glb/.gltf는 잘 지원되지만 때때로 스케일 조정이 필요합니다. 도구가 모호한 형식이나 복잡한 재질 그래프를 출력하는 경우 후처리 스크립트가 훨씬 더 무거워집니다. 저는 파이프라인을 간단하고 강력하게 유지하기 위해 깨끗하고 표준적인 3D 출력을 제공하는 도구를 우선적으로 사용합니다.
제 워크플로우에서는 Tripo AI의 기능을 활용하여 PBR-ready 텍스처와 깔끔한 토폴로지가 미리 적용된 모델을 생성합니다. 이는 제 Unity 가져오기 스크립트가 재질 그래프를 재구성하거나 비상 리토폴로지를 수행할 필요가 없다는 것을 의미합니다. 제공된 텍스처를 표준 셰이더에 할당하기만 하면 됩니다. 이러한 기본 프로덕션 준비 상태는 작성하고 유지해야 하는 자동화된 "수정" 단계의 수를 크게 줄여주므로 LOD 및 에셋 번들 통합과 같은 더 높은 수준의 파이프라인 자동화에 집중할 수 있습니다.
moving at the speed of creativity, achieving the depths of imagination.
텍스트·이미지를 3D 모델로 변환
매월 무료 크레딧 제공
압도적인 디테일 복원력