GameLogic представляет собой основной компонент управления игрой. Он получает все внутриигровые события и распределяет их по соответствующим подсистемам, эффективно уменьшая связность кода.Transponder автоматически обнаруживает взаимодействие и передает событие приближения игрока компоненту GameLogic. В ответ UIFactory создает панель пользовательского интерфейса для ввода данных.GameLogic.TripoClient (Примечание: необходимо предварительно предоставить действительный TripoAPIKey).TripoAPI собирает запрос, отправляет его и начинает регулярно опрашивать сервер для проверки обновлений. После успешного выполнения игрок получает TaskID для сгенерированной модели от сервера Tripo. Этот TaskID затем используется для запроса генерации скелета.TripoAPI возвращает URL-адрес для загрузки модели в TripoClient. Затем TripoClient загружает и разбирает модель в формате GLB через плагин glTFfast.RuntimeHumanoidAvatarBuilder монтируется на модель. Этот компонент сопоставляет скелет GLB-модели с системой Unity Humanoid Avatar, что позволяет выполнять ретаргетинг анимации.TripoClient создает экземпляр модели в сцене. На этом этапе разработчики могут использовать существующие ресурсы гуманоидной анимации для управления вновь сгенерированной моделью.GameLogic прослушивает ввод с клавиатуры игрока для динамического переключения управления между игроком и сгенерированной моделью. В частности, он регулирует приоритет камеры и переназначает целевой объект управления ThirdPersonController.Версия Unity: 2022.3.55
Путь к исходному коду и сценам: Assets-LowPoly Environment Pack - Demo - Demo1
Создать новый проект
Импорт требуемого пакета ресурсов
Пожалуйста, откройте свой браузер и перейдите в Unity Asset Store. Найдите и загрузите следующие бесплатные пакеты (также доступны в предоставленных файлах проекта):
Добавьте в "Мои ресурсы", а в последующих всплывающих окнах нажмите "Открыть в Unity" и загрузите.
После загрузки каждого пакета перейдите в Unity > Assets (вверху меню Unity) > Import Package > Custom Package и импортируйте их по одному. Нажмите Import в каждом запросе.
Некоторые импортированные материалы могут выглядеть розовыми (указывая на проблему с шейдером). Для конвертации:
Вариант 1: Установка через Git (требует локальной среды Git)
Вариант 2: Загрузка с официального сайта Tripo, который также включает плагин glTFast.
Для настройки вашей пользовательской среды:
Перейдите по пути: Assets > StarterAsset > ThirdPersonController > Prefabs
Перетащите следующие три префаба на панель Hierarchy:
Вышеуказанная настройка использует скрипт контроллера от третьего лица, предоставленный Unity. На этом этапе, нажав кнопку Play на панели инструментов Unity, вы можете использовать клавиши WASD для управления движением персонажа. Персонаж и камера теперь должны двигаться и соответствующим образом настраиваться!
Когда игрок приближается к определенному объекту, должна появляться панель ввода UI. Когда игрок отходит, панель должна исчезать.
Transponder и откройте скрипт с помощью Cursor.Пожалуйста, сгенерируйте скрипт Unity C# с именем Transponder, который вызывает OnPlayerEnter, когда GameObject с тегом "player" входит в коллайдер, и OnPlayerExit, когда игрок выходит.
Щелкните правой кнопкой мыши в сцене > Create Empty, переименуйте его в GameLogicManager (служит контейнером логики).
GameManager, который будет обрабатывать основную логику сцены.Мы цитируем компонент Transponder, а затем прослушиваем события, когда игроки входят или выходят. Эталонные слова промпта следующие:
Пожалуйста, сгенерируйте скрипт Unity C# с именем GameManager, который прослушивает.
После сохранения скрипта перетащите скрипт GameManager на объект GameManager и перетащите компонент Transponder в поле Transponder. Это завершает прослушивание событий входа и выхода игрока.
В Hierarchy, щелкните правой кнопкой мыши > UI > Panel, чтобы создать новую панель.
Добавьте 2 компонента в дочерние элементы под панелью:
Отрегулируйте макет и позиционирование, используя окно Game в качестве предварительного просмотра.
По завершении перетащите весь объект Panel в папку Assets, чтобы создать префаб.
Примечание: Если вы используете TextMeshPro, убедитесь, что назначен шрифт, совместимый с китайским языком, например NotoSansSC SDF, чтобы избежать квадратных символов в тексте.
InputDialog: обработка логики вводаЭталонный промпт:
ThirdPersonController).Прикрепите компонент InputDialog к InputDialogPrefab. Перетащите соответствующие объекты Text и InputField в их поля на компоненте (Dependencies).
Создайте новый C# скрипт с именем UIFactory
Эталонный промпт:
Этот компонент действует как посредник для отделения логики создания UI от обработки игровых событий.
Дважды проверьте, правильно ли назначены все зависимости компонентов.
В объекте GameManager назначьте:
UIFactory объекта GameLogicManager.Тестирование: Нажмите Play в Unity.
Примечание: В нашем исходном файле зафиксирована позиция, где генерируется панель. Измените это значение в соответствии со свойствами Transform выбранного вами Trigger. В качестве альтернативы вы можете установить Canvas > RenderMode префаба UI на ScreenSpace - Overlay, чтобы UI отображался в пространстве экрана и не входил в мировое пространство.
На этом этапе мы еще не можем отправлять промпты на сервер Tripo в реальном времени. Однако необходимый код для отправки промптов, сетевых запросов, генерации моделей, риггинга скелета, маппинга, адаптера и ретаргетинга анимации уже готов. Эти скрипты будут полностью интегрированы в плагин Tripo for Unity в будущих обновлениях. (Примечание: Убедитесь, что система UIEvent существует в вашей сцене, прежде чем продолжить; в противном случае UI не будет реагировать!)
На панели проекта Unity (обычно слева) найдите исходные файлы TripoClient.cs, TripoAPI.cs и RuntimeHumanoidAvatarBuilder.cs из вашей папки загрузок.
Вот что делает каждый скрипт:
TripoClient.cs и TripoAPI.cs: Обрабатывают отправку промптов и сетевую связь с сервером Tripo.RuntimeHumanoidAvatarBuilder.cs: Сопоставляет скелет модели с гуманоидным ригом Unity с использованием плагина GLTFast.TripoClient.cs и TripoAPI.cs представляют собой облегченные версии плагина Tripo For Unity, но с функциональностью риггинга. Мы продолжим обновлять и оптимизировать этот процесс в будущих выпусках.
TripoClient.cs и TripoAPI.cs на этот новый объект, чтобы прикрепить скрипты.Поскольку мы обновили систему ввода игрока, нам необходимо обновить логику передачи промптов в GameManager. По умолчанию скрипт GameManager уже должен прослушивать события OnPlayerEnter и OnPlayerExit. Если вы работаете с кодом, сгенерированным ИИ, или связываете логику между несколькими компонентами, полезно вставить ранее сгенерированный код в качестве контекста.
Скрипт, который мы предоставили, уже определил функцию обратного вызова, когда GameManager вызывает экземпляр UIFactory. Определенно, есть и другие решения, но в данном случае промпт, который можно использовать для завершения этой части логики, может выглядеть следующим образом.
Обновленное поведение: в скрипте GameManager
UIFactory создает экземпляр диалогового окна ввода (префаб InputDialog).Как только игрок завершит ввод промпта, он будет передан скрипту TripoClient с примером вызова tripoClient.TextToModel(prompt, pos);. Измените связанные скрипты.
Изменить GameManager.cs:
Проверьте свою настройку
Теперь вы готовы генерировать свою собственную AI-модель в Unity. Наслаждайтесь созданием!
После того, как модель была сгенерирована, следующим шагом является сопоставление существующих ресурсов анимации со скелетом вашей модели. Убедитесь, что скрипт RuntimeHumanoidAvatarBuilder был добавлен в ваш проект. Этот скрипт обрабатывает сопоставление гуманоидного GLB-скелета с Avatar Unity, а скрипт TripoClient автоматически прикрепит его к сгенерированной модели.
Давайте сначала организуем структуру и зависимости проекта. Перед началом игры, за исключением объектов окружения, пользовательские GameObjects должны находиться в следующем состоянии. Разверните каждый компонент скрипта и убедитесь, что все поля правильно назначены. Если вы столкнетесь с какими-либо проблемами, сравните их с исходными файлами, чтобы проверить на наличие неправильного назначения компонентов.
В противном случае, в нашей демонстрации модель представляет собой боевого меха, поэтому ее свойство Transform > Scale увеличено в десять раз. Это также относится к его свойствам, связанным с Controller.
Выберите компонент ModelContainer и последовательно добавьте следующие компоненты (все предоставляются пакетом Starter Assets):
В компоненте Third Person Controller установите поле Camera на MainCamera в сцене.
Создайте пустой дочерний компонент, назовите его ModelCamera, и добавьте к нему компонент CinemachineFreeLook (вам нужно импортировать плагин Cinemachine, который включен в пакет Starter Assets).
Затем создайте дочерний компонент в ModelContainer, назовите его CameraRoot, и отрегулируйте его координату Y на 5 (высота талии модели). Присвойте поля Follow и LookAt компонента ModelCamera к CameraRoot. Теперь камера будет следовать за движением модели.
На этом этапе трансформер должен воспроизводить анимацию бездействия, но пока не может быть управляем.
Эти компоненты: CharacterController, PlayerInput, ThirdPersonController, BasicRigidBody и StarterAssetsInputs, предоставляются Unity StarterAssets и обрабатывают ввод игрока. Компонент Animator управляет анимацией, а Avatar, сгенерированный RuntimeHumanoidAvatarBuilder, будет автоматически назначен полю Avatar Animator'а.
Для тестирования:
Теперь во время выполнения трансформером можно управлять. Затем последний шаг — реализовать логику переключения управления.
Обновите следующую логику в функции Update вашего скрипта GameLogic:
isLoad указывает, была ли модель сгенерирована. Если false, пропустите процесс.isInModel указывает, управляет ли игрок в данный момент трансформером или игроком.При входе в трансформер:
При выходе из трансформера:
После завершения вышеуказанной логики нажатие клавиши F позволяет игроку войти и управлять трансформером. Повторное нажатие клавиши F переключает управление обратно на игрока, при этом трансформер остается на месте, но игрок появляется точно в месте нахождения трансформера.
На этом этапе демо-версия функционально завершена. Если вы хотите улучшить пользовательский опыт, вы можете:
Поздравляем!
Спасибо за вашу усердную работу! Теперь вы завершили всю демо-версию. Вы можете свободно генерировать и управлять моделями-трансформерами, используя свои собственные идеи и ассеты.
Нужна помощь?
Если вы столкнетесь с трудностями или у вас есть отзывы о TripoGame, пожалуйста, свяжитесь с нами по нашей официальной электронной почте! tripogame@vastai3d.com. Мы будем рады услышать вас!
Этот учебник предназначен для демонстрации того, как Tripo API может использоваться в игровом процессе в реальном времени. Сам дизайн игры предназначен только для справки. Мы надеемся активно решать потенциальные проблемы, с которыми могут столкнуться разработчики.
В настоящее время демо-версия поддерживает генерацию только гуманоидных моделей из-за требований к риггингу. Если анимация отображается ненормально из-за нестабильных весов скелета, сгенерированных ИИ, используйте Avatar Mask для блокировки анимации проблемных частей тела. Например, в исходном файле уже отключена анимация рук в NoArmPerson Controller.
Для более быстрой генерации вы можете использовать TripoV2/TripoV1Turbo. Просто замените номер model_version "v2.5-20250123" в скрипте TripoAPI на
Модели FBX и GLB имеют разные ориентации, что может привести к проблемам с зависимостями при импорте. Если вам нужно импортировать FBX, используйте плагины, такие как TriLib, для загрузки модели и соответствующей адаптации.
moving at the speed of creativity, achieving the depths of imagination.