GameLogic은 게임의 핵심 관리 컴포넌트를 나타냅니다. 모든 게임 내 이벤트를 수신하고 적절한 서브시스템에 배포하여 코드 결합도를 효과적으로 줄입니다.Transponder 컴포넌트가 자동으로 상호작용을 감지하고 플레이어 접근 이벤트를 GameLogic 컴포넌트에 전달합니다. 이에 따라 UIFactory는 사용자 입력을 위한 UI 패널을 인스턴스화합니다.GameLogic에 제출됩니다.TripoClient 컴포넌트에 전달합니다 (참고: 유효한 TripoAPIKey가 사전에 제공되어야 합니다).TripoAPI는 요청을 조립하고, 전송하며, 정기적으로 서버를 폴링하여 업데이트를 확인합니다. 성공하면 플레이어는 Tripo 서버로부터 생성된 모델에 대한 TaskID를 받습니다. 이 TaskID는 스켈레톤 생성을 요청하는 데 사용됩니다.TripoAPI는 모델의 다운로드 URL을 TripoClient에 반환합니다. TripoClient는 glTFfast 플러그인을 통해 GLB 형식 모델을 로드하고 파싱합니다.RuntimeHumanoidAvatarBuilder 컴포넌트가 모델에 마운트됩니다. 이 컴포넌트는 GLB 모델의 스켈레톤을 Unity의 Humanoid Avatar 시스템에 매핑하여 애니메이션 리타겟팅을 가능하게 합니다.TripoClient는 씬에 모델을 인스턴스화합니다. 이 시점에서 개발자는 기존 휴머노이드 애니메이션 리소스를 사용하여 새로 생성된 모델을 구동할 수 있습니다.GameLogic 컴포넌트는 플레이어의 키보드 입력을 수신하여 플레이어와 생성된 모델 간에 제어권을 동적으로 전환합니다. 특히, 카메라 우선순위를 조정하고 ThirdPersonController 제어 대상을 재할당합니다.Unity 버전: 2022.3.55
소스 코드 및 씬 경로: Assets-LowPoly Environment Pack - Demo - Demo1
새 프로젝트 생성
필수 리소스 패키지 가져오기
브라우저를 열고 Unity Asset Store로 이동합니다. 다음 무료 패키지를 검색하고 다운로드합니다 (제공된 프로젝트 파일에서도 사용 가능):
내 리소스에 추가하고, 이어지는 팝업에서 "Open in Unity"를 클릭하여 다운로드합니다.
각 패키지를 다운로드한 후, Unity > Assets (Unity 메뉴 상단) > Import Package > Custom Package로 이동하여 하나씩 가져옵니다. 각 프롬프트에서 Import를 클릭합니다.
일부 가져온 재질이 분홍색으로 나타날 수 있습니다 (셰이더 문제 표시). 변환하려면:
옵션 1: Git을 통해 설치 (로컬 Git 환경 필요)
옵션 2: Tripo 공식 웹사이트에서 다운로드 (glTFast 플러그인 포함)
사용자 지정 환경을 설정하려면:
다음으로 이동합니다: Assets > StarterAsset > ThirdPersonController > Prefabs
다음 세 가지 프리팹을 Hierarchy 패널로 드래그합니다:
위 설정은 Unity에서 제공하는 3인칭 컨트롤러 스크립트를 사용합니다. 이 시점에서 Unity 툴바에서 Play 버튼을 클릭하면 WASD 키를 사용하여 캐릭터의 움직임을 제어할 수 있습니다. 캐릭터와 카메라가 이제 그에 따라 움직이고 조정되어야 합니다!
플레이어가 특정 오브젝트에 접근하면 UI 입력 패널이 나타나야 합니다. 플레이어가 멀어지면 패널은 사라져야 합니다.
Transponder로 지정한 다음 Cursor로 스크립트를 엽니다.태그가 "player"인 GameObject가 콜라이더에 들어갈 때 OnPlayerEnter를, 플레이어가 나갈 때 OnplayerExit를 트리거하는 Transponder라는 Unity C# 스크립트를 생성해 주세요.
씬을 마우스 오른쪽 버튼으로 클릭 > Create Empty를 선택하고 이름을 GameLogicManager (로직 컨테이너 역할을 함)로 변경합니다.
GameManager라는 새 스크립트를 생성합니다.Transponder 컴포넌트를 인용하고 플레이어가 들어오거나 나갈 때 이벤트를 수신합니다. 참조 프롬프트 단어는 다음과 같습니다:
Transponder 인스턴스에서 OnPlayerEnter 및 OnPlayerExit 이벤트를 수신하는 GameManager라는 Unity C# 스크립트를 생성해 주세요. OnPlayerEnter 시 UIFactory 스크립트를 사용하여 UI 프롬프트 프리팹을 인스턴스화합니다. OnPlayerExit 시 이 UI 프리팹을 파괴합니다.
스크립트를 저장한 후 GameManager 스크립트를 GameManager 오브젝트로 드래그하고 Transponder 컴포넌트를 Transponder 필드로 드래그합니다. 이렇게 하면 플레이어의 진입 및 퇴장 이벤트 수신이 완료됩니다.
Hierarchy에서 마우스 오른쪽 버튼 클릭 > UI > Panel을 선택하여 새 패널을 생성합니다.
패널 아래 자식으로 2개의 컴포넌트를 추가합니다:
Game 뷰를 미리보기로 사용하여 레이아웃과 위치를 조정합니다.
완료되면 전체 Panel 오브젝트를 Assets 폴더로 드래그하여 프리팹을 생성합니다.
참고: TextMeshPro를 사용하는 경우, 텍스트에 사각형 문자가 나타나는 것을 방지하기 위해 NotoSansSC SDF와 같이 한국어 호환 글꼴을 할당해야 합니다.
InputDialog 스크립트 생성: 입력 로직 처리참조 프롬프트:
ThirdPersonController)를 비활성화합니다.InputDialog 컴포넌트를 InputDialogPrefab에 마운트합니다. 해당 Text 및 InputField 오브젝트를 컴포넌트의 각 필드로 드래그합니다 (종속성).
UIFactory라는 새 C# 스크립트를 생성합니다.
참조 프롬프트:
이 컴포넌트는 UI 생성 로직을 게임 이벤트 처리에서 분리하는 중개자 역할을 합니다.
모든 컴포넌트 종속성이 제대로 할당되었는지 다시 확인합니다.
GameManager 오브젝트에서 할당:
UIFactory 컴포넌트를 할당합니다.테스트: Unity에서 Play를 클릭합니다.
참고: 저희 소스 파일은 패널이 생성되는 고정된 위치를 가지고 있습니다. 선택한 Trigger의 Transform 속성에 따라 이 값을 수정하십시오. 또는 UI 프리팹의 Canvas > RenderMode를 ScreenSpace - Overlay로 설정하여 UI가 화면 공간 데이터로 렌더링되고 월드 공간으로 들어가지 않도록 할 수 있습니다.
이 단계에서는 아직 프롬프트를 Tripo 서버에 실시간으로 제출할 수 없습니다. 그러나 프롬프트 제출, 네트워크 요청, 모델 생성, 스켈레톤 리깅, 매핑, 어댑터 및 애니메이션 리타겟팅에 필요한 코드는 이미 준비되어 있습니다. 이 스크립트들은 향후 업데이트에서 Tripo for Unity 플러그인에 완전히 통합될 것입니다. (참고: 진행하기 전에 씬에 UIEvent 시스템이 있는지 확인하십시오; 그렇지 않으면 UI가 응답하지 않을 것입니다!)
Unity Project 패널 (일반적으로 왼쪽에 있음)에서 다운로드 폴더에서 TripoClient.cs, TripoAPI.cs, RuntimeHumanoidAvatarBuilder.cs 소스 파일을 찾습니다.
각 스크립트의 역할은 다음과 같습니다:
TripoClient.cs 및 TripoAPI.cs: Tripo 서버와의 프롬프트 제출 및 네트워크 통신을 처리합니다.RuntimeHumanoidAvatarBuilder.cs: GLTFast 플러그인을 사용하여 모델의 스켈레톤을 Unity의 휴머노이드 리그에 매핑합니다.TripoClient.cs와 TripoAPI.cs는 리깅 기능을 포함한 Tripo For Unity 플러그인의 라이트 버전을 나타냅니다. 향후 릴리스에서 이 프로세스를 계속 업데이트하고 간소화할 것입니다.
TripoClient.cs와 TripoAPI.cs를 이 새 오브젝트로 드래그하여 스크립트를 첨부합니다.플레이어 입력 시스템을 업그레이드했으므로 GameManager의 프롬프트 전송 로직을 업데이트해야 합니다. 기본적으로 GameManager 스크립트는 이미 OnPlayerEnter 및 OnPlayerExit 이벤트를 수신해야 합니다. AI 생성 코드 또는 여러 컴포넌트 간에 로직을 연결하는 경우, 이전에 생성된 코드를 컨텍스트로 붙여넣는 것이 도움이 됩니다.
저희가 제공한 스크립트는 GameManager가 UIFactory에 인스턴스 호출을 발행할 때 콜백 함수를 이미 정의했습니다. 물론 다른 해결책도 있지만, 이 경우 이 로직 부분을 완성하는 데 사용할 수 있는 프롬프트는 다음과 같습니다.
업데이트된 동작: GameManager 스크립트에서
UIFactory는 입력 대화 상자(InputDialog 프리팹)를 인스턴스화합니다.플레이어가 프롬프트 입력을 마치면 tripoClient.TextToModel(prompt, pos);와 같은 호출 예제와 함께 TripoClient 스크립트로 전달됩니다. 관련 스크립트를 수정합니다.
GameManager.cs 수정:
설정 테스트
이제 Unity에서 자신만의 AI 모델을 생성할 준비가 되었습니다. 즐겁게 빌드하세요!
모델이 생성되면 다음 단계는 기존 애니메이션 리소스를 모델의 스켈레톤에 매핑하는 것입니다. RuntimeHumanoidAvatarBuilder 스크립트가 프로젝트에 추가되었는지 확인하십시오. 이 스크립트는 휴머노이드 GLB 스켈레톤을 Unity의 아바타에 매핑하는 것을 처리하며, TripoClient 스크립트는 이를 생성된 모델에 자동으로 마운트합니다.
먼저 프로젝트의 구조와 종속성을 정리해 봅시다. 게임이 시작하기 전에 환경 오브젝트를 제외하고 사용자 지정 GameObject는 다음 상태여야 합니다. 각 스크립트 컴포넌트를 확장하고 모든 필드가 올바르게 할당되었는지 확인하십시오. 문제가 발생하면 소스 파일과 비교하여 잘못된 컴포넌트 할당을 확인하십시오.
그렇지 않으면, 저희 데모에서 모델은 전투 로봇이므로 Transform > Scale 속성이 10배 확대됩니다. 이는 Controller 관련 속성에도 적용됩니다.
ModelContainer 컴포넌트를 선택하고 다음 컴포넌트들을 순서대로 추가합니다 (모두 Starter Assets 패키지에서 제공됨):
Third Person Controller 컴포넌트에서 Camera 필드를 씬의 MainCamera로 설정합니다.
자식으로 빈 컴포넌트를 생성하고 이름을 ModelCamera로 지정한 다음 CinemachineFreeLook 컴포넌트를 추가합니다 (Starter Assets 패키지에 포함된 Cinemachine 플러그인을 가져와야 합니다).
그런 다음 ModelContainer 아래에 자식으로 컴포넌트를 생성하고 이름을 CameraRoot로 지정한 다음 Y-좌표를 5 (모델의 허리 높이)로 조정합니다. ModelCamera의 Follow 및 LookAt 필드를 모두 CameraRoot에 할당합니다. 이제 카메라가 모델의 움직임을 따라갈 것입니다.
이 시점에서 변신 로봇은 유휴 애니메이션을 재생해야 하지만 아직 제어할 수 없습니다.
이러한 컴포넌트들: CharacterController, PlayerInput, ThirdPersonController, BasicRigidBody, 그리고 StarterAssetsInputs는 Unity의 StarterAssets에서 제공되며 플레이어 입력을 처리합니다. Animator 컴포넌트는 애니메이션을 제어하며, RuntimeHumanoidAvatarBuilder에 의해 생성된 Avatar는 Animator의 Avatar 필드에 자동으로 할당됩니다.
테스트하려면:
이제 런타임 중에 변신 로봇을 제어할 수 있습니다. 마지막 단계는 제어 전환 로직을 구현하는 것입니다.
GameLogic 스크립트의 Update 함수에서 다음 로직을 업데이트합니다:
변신 로봇에 진입할 때:
변신 로봇에서 나갈 때:
위 로직이 완료되면 F 키를 누르면 플레이어가 변신 로봇에 진입하여 제어할 수 있습니다. F 키를 다시 누르면 제어권이 플레이어에게 다시 전환되지만, 변신 로봇은 제자리에 유지되며 플레이어는 변신 로봇의 정확한 위치에 다시 나타납니다.
이 시점에서 데모는 기능적으로 완성되었습니다. 경험을 다듬고 싶다면 다음을 수행할 수 있습니다:
축하합니다!
수고하셨습니다! 이제 전체 데모를 완료했습니다. 자신만의 아이디어와 자산을 사용하여 변신 로봇 모델을 자유롭게 생성하고 제어할 수 있습니다.
도움이 필요하신가요?
TripoGame에 대한 어려움이 있거나 피드백이 있다면 언제든지 공식 이메일로 문의하십시오! tripogame@vastai3d.com. 여러분의 의견을 기다리겠습니다!
이 튜토리얼은 Tripo API가 실시간 게임 플레이에 어떻게 사용될 수 있는지 보여주기 위한 것입니다. 게임 디자인 자체는 참고용입니다. 개발자들이 직면할 수 있는 잠재적인 문제들을 사전에 해결하고자 합니다.
현재 데모는 리깅 요구 사항으로 인해 휴머노이드 모델 생성만 지원합니다. 불안정한 AI 생성 스켈레톤 가중치로 인해 애니메이션이 비정상적으로 나타나면 Avatar Mask를 사용하여 문제가 있는 신체 부위 애니메이션을 차단하십시오. 예를 들어, 소스 파일은 NoArmPerson Controller에서 팔 애니메이션을 이미 비활성화합니다.
더 빠른 생성을 위해 TripoV2/TripoV1Turbo를 사용할 수 있습니다. TripoAPI 스크립트의 model_version 숫자 "v2.5-20250123"을 다음으로 교체하기만 하면 됩니다:
FBX 및 GLB 모델은 방향이 달라 가져올 때 종속성 문제가 발생할 수 있습니다. FBX를 가져와야 하는 경우 TriLib와 같은 플러그인을 사용하여 모델을 로드하고 그에 따라 조정을 처리하십시오.
moving at the speed of creativity, achieving the depths of imagination.