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にアクセスしてください。以下の無料パッケージを検索してダウンロードします(提供されているプロジェクトファイルにも含まれています)。
「My Resourcesに追加」をクリックし、その後のポップアップで「Open in Unity」をクリックしてダウンロードします。
各パッケージをダウンロードした後、Unityメニュー上部の「Unity > Assets > Import Package > Custom Package」に移動し、1つずつインポートします。各プロンプトで「Import」をクリックします。
一部のインポートされたマテリアルがピンク色に表示される場合があります(シェーダーの問題を示します)。変換するには:
オプション1:Git経由でインストール(ローカルGit環境が必要です)
https://github.com/atteneder/glTFast.git を入力し、「Add」をクリックして glTFast プラグインがインポートされるのを待ちます。オプション2:Tripo公式サイトからダウンロード、glTFastプラグインも含まれています。
カスタム環境を設定するには:
Assets > StarterAsset > ThirdPersonController > Prefabs に移動します。
以下の3つのプレハブをHierarchyパネルにドラッグします。
上記のセットアップでは、Unityが提供するサードパーソンコントローラースクリプトを使用しています。この時点で、UnityツールバーのPlayボタンをクリックすると、WASDキーを使用してキャラクターの動きを制御できます。キャラクターとカメラが適切に移動し、調整されるはずです!
プレイヤーが特定のオブジェクトに近づくと、UI入力パネルが表示されるようにします。プレイヤーが離れると、パネルは消えます。
Transponder にして、Cursorでスクリプトを開きます。GameLogicコンポーネントに送信します。Cursorでモデルを選択し、参照プロンプトを入力します。タグが "player" のGameObjectがコライダーに入ったときに OnPlayerEnter を、プレイヤーが退出したときに OnPlayerExit をトリガーする Unity C# スクリプトを Transponder という名前で生成してください。
シーンを右クリック > Create Empty、名前をGameLogicManagerに変更します(ロジックコンテナとして機能します)。
GameManager という名前で作成します。これはシーンのコアロジックを処理します。Transponderコンポーネントを引用し、プレイヤーが入場または退出したときのイベントをリッスンします。参照プロンプトは次のとおりです。
TransponderインスタンスからのOnPlayerEnterおよびOnPlayerExitイベントをリッスンするUnity C#スクリプトをGameManagerという名前で生成してください。 OnPlayerEnter時に、UIFactoryスクリプトを使用してUIプロンプトプレハブをインスタンス化してください。 OnPlayerExit時に、このUIプレハブを破棄してください。
スクリプトを保存した後、GameManagerスクリプトをGameManagerオブジェクトにドラッグし、TransponderコンポーネントをTransponderフィールドにドラッグします。これにより、プレイヤーの入場および退出イベントのリッスンが完了します。
Hierarchyで右クリック > UI > Panel を選択し、新しいパネルを作成します。
パネルの下に2つのコンポーネントを追加します。
Gameビューをプレビューとして使用し、レイアウトと位置を調整します。
完了したら、パネルオブジェクト全体をAssetsフォルダーにドラッグしてプレハブを作成します。
注意:TextMeshProを使用している場合は、テキスト内の四角い文字を避けるために、NotoSansSC SDFなど、中国語に対応したフォントを割り当てるようにしてください。
InputDialogスクリプトの作成:入力ロジックの処理参照プロンプト:
ThirdPersonController)を無効にします。InputDialogコンポーネントをInputDialogPrefabにマウントします。対応するTextオブジェクトとInputFieldオブジェクトを、コンポーネント(Dependencies)のそれぞれのフィールドにドラッグします。
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のAvatarへのマッピングを処理し、TripoClientスクリプトはそれを生成されたモデルに自動的にマウントします。
まず、プロジェクトの構造と依存関係を整理しましょう。ゲーム開始前は、環境オブジェクトを除いて、カスタムGameObjectは次の状態になっているはずです。各スクリプトコンポーネントを展開し、すべてのフィールドが正しく割り当てられていることを確認してください。問題が発生した場合は、ソースファイルと比較して、コンポーネントの割り当てが間違っていないか確認してください。
そうでなければ、私たちのデモでは、モデルは戦闘メカであるため、そのTransform > Scaleプロパティは10倍に拡大されています。これはそのコントローラー関連のプロパティにも当てはまります。
ModelContainerコンポーネントを選択し、以下のコンポーネントを順次追加します(すべてStarter Assetsパッケージによって提供されます)。
Third Person Controllerコンポーネントで、CameraフィールドをシーンのMainCameraに設定します。
空の子コンポーネントを作成し、ModelCameraと名前を付け、それにCinemachineFreeLookコンポーネントを追加します(Cinemachineプラグインをインポートする必要があります。これはStarter Assetsパッケージに含まれています)。
次に、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.