ガイドブック
行為ツリー
行為ツリーの概要
定義
行為ツリー(Behavior Tree) は、仮想キャラクターやシステムの動作を制御するための意思決定構造 です。行為ツリーは複数のノード で構成され、各ノードは1つの行動 または 意思決定のステップ を表します。階層構造を用いることで、複雑な動作をシンプルで管理しやすい子動作に分割 できます。
FactVerse Designer では、行為ツリーを使用して、以下のようなツインモデルの動作 を制御できます:
- ツインモデルの動作制御(例:設備の起動・停止)
- ツインモデルの状態管理(例:AGVのステータスを「待機」から「作業中」に切り替える)
実行ルール
- 行為ツリーの実行順序は、上から下、左から右の順で処理される。
- 行為ツリーが終端状態に到達すると、ルートノードに戻り、再び実行を開始する。
- ルートノードは、必ず1つの子ノードのみを持つ。
- ノードに子ノードがある場合、優先的にその子ノードを実行する。
- 子ノードは左から右の順に実行され、すべての子ノードが完了した後に次のノードが実行される。
- 行為ツリーは、アイドル状態にならない限り、または削除されない限り、順序通りに繰り返し実行される。
ノードの種類
ルートノード
行為ツリーを作成すると、自動的にルートノード が生成されます。ルートノードは行為ツリーの実行開始地点 であり、削除できません。また、1つの子ノードのみ接続可能 です。
複合ノード
複合ノード は、子ノードの実行順序や論理判断を制御するためのノード です。複合ノードには、並行ノード、選択ノード、順番ノード があります。複合ノードには複数の子ノードを追加可能 であり、各子ノードは複合ノードまたはアクションノード となります。
- 並行ノード:並行ノード配下のすべての子ノードが同時に実行される。成功条件は2種類から選択可能:
- 1つの子ノードが成功した時点で並行ノード全体を成功とみなす。
- すべての子ノードが成功した場合にのみ並行ノードを成功とみなす。
- 選択ノード:
- 子ノードは左から右の順に実行される。
- 最初に成功を返した子ノードが見つかった時点で、選択ノード全体が成功と判定され、それ以降の子ノードは実行されない。
- すべての子ノードが失敗した場合、選択ノードも失敗を返す。
- 順番ノード
- 子ノードは左から右の順に実行される。
順番ノードの実行ルール
順番ノードは、2つの実行ポリシー をサポートしています:
- 子ノードで失敗した場合は失敗に返す:左から順に子ノードを実行し、1つでも失敗すると順番ノードは即座に失敗を返す。
- 全ての子ノードが失敗した場合は失敗に返す:すべての子ノードを順番に実行し、すべてが失敗した場合のみ順番ノードが失敗を返す。途中で成功したノードがあれば成功を返す。
順番ノードのループ設定
順番ノードでは、子ノードの処理を繰り返し実行するためのループ設定 が可能です。
- ループなし:子ノードを1回のみ実行 し、繰り返し処理は行わない。
- すべてのサブツインモデル:シーン内のすべてのツインモデルに対して順番に処理を実行 する。
- コンテナ属性:コンテナ内のすべての要素に対して処理を実行 する。
- 数字増量ループ:設定された回数分、数値を増加させながら繰り返し処理を実行 する。
ループ終了条件
順番ノードのループ処理では、以下のいずれかの条件を満たすとループを終了 できます。
- ループ完了して退出:設定された回数までループを繰り返し、完了すると終了。
- 成功があったら退出:どの子ノードでも成功すると、ループを即座に終了し、順番ノード全体が成功を返す。
- 失敗があったら退出:どの子ノードでも失敗すると、ループを即座に終了し、順番ノード全体が失敗を返す。
アクションノード
アクションノード は、ツインモデルが実行する具体的な動作やタスク を示します。
例:
- パスに沿って移動する
- 一定時間待機する
アクションノードは、行為ツリーのリーフノード(末端ノード) となり、複雑なロジックを実現するために使用されます。アクションノードの実行結果には、以下の3つの戻り値 があります。
- 成功:ノードの動作が正常に完了した場合。
- 実行中:ノードの処理が完了しておらず、次の行為ツリーの呼び出し時にも同じノードが継続実行される場合。
- 失敗:ノードの動作が完了できなかった場合。
ノードの設定
ノードの基本操作
- ノードを追加する
- ノードメニューから、編集エリアへドラッグ&ドロップする。
- ノードを削除する
- 編集エリアで削除したいノードを選択し、ツールバーの「削除」ボタンをクリック。
- ノードをリネーム(名前を変更)する
- 編集エリアでリネームしたいノードを選択。
- プロパティエリアの上部にある「ノード名」欄で、新しいノード名を入力。
- ノードを接続する
- ノード A の下部にある横線から、黄色の接続ラインをドラッグ。
- ノード B の上部に接続し、マウスを離して接続を完了。
- ノードの接続線を削除する
- マウスの右ボタンを押しながら、削除したい接続線上をドラッグすると、ノード間の接続が解除される。
- ノードのレイアウトを整理する
- ルートノードを選択し、「L」キーを押すと、ツリー全体のレイアウトが自動的に整理される。
ノードの一般的な設定
行為ツリーのノード条件やプロパティ設定 では、ツインモデルのプロパティ、ツインモデル本体、ツインモデルの位置情報 を取得することがよくあります。
属性を選択
属性のソース
- ツインモデル属性:ツインモデルテンプレートから特定のプロパティを選択。
- ツインモデルのソース
- 自身:現在、行為ツリーを実行中のツインモデルを選択。
- 臨時ツインモデル:実行中に一時的に作成または使用されるツインモデルを選択。
- 属性中のツインモデル:プロパティに保存された一意の識別子 を使用し、特定のツインモデルを検索・選択。
- シーン内の全てのツインモデル:シーン全体からツインモデルを検索。
- ツリー属性
- 現在の行為ツリーのプロパティから値を取得
- 現在の属性:
- 行為ツリーがコンテナ内のプロパティをループ処理している際、現在のループ対象のプロパティ
- ツインモデルのソース
値を選択
値のソース
- 手動で入力
- 値
- ツインモデル中の属性
- ツインモデルのソース:ツインモデルを選択
- ターゲット属性
- ツリー属性
- ツリー属性:現在の行為ツリー内の特定のプロパティを取得。
- 現在の属性:コンテナをループ処理する際、現在のループ対象のプロパティを使用。
ツインモデルを選択
基本的な選択方法
- 自身:現在の行為ツリーを実行しているツインモデルを選択。
- 臨時ツインモデル:実行中に一時的に作成・使用されるツインモデルを選択。
- 属性中のツインモデル:プロパティに保存されたツインモデルIDを使用し、該当するツインモデルを検索・取得。
- シーン内の全てのツインモデル:シーン全体からツインモデルを検索。
上級選択(ツインモデル絞り込み方法):「シーン内の全てのツインモデル」 を検索対象とする場合、さまざまなフィルタリング方法を使用して、特定のツインモデルを正確に検索できます。
- 無し:フィルタリングを行わず、シーン内のすべてのツインモデルを取得。
- 指定されたツインモデル:
- ツインモデルを選択
- 属性に保存されたツインモデルを選択
- 最短距離でツインモデルを検査:現在のツインモデルと最も近いツインモデルを取得。
ツインモデルの高度な選択方法
- 無し:特定の高度な検索条件なし。
- 親ツインモデル:現在のツインモデルの親を検索。 例:コンベア上の荷物の親ツインモデルはコンベア。
- 最後のサブツインモデル:現在のツインモデルの最後の子を検索。 例:生成された製品グループの最後の製品。
- 最初のサブツインモデル:現在のツインモデルの最初の子を検索。 例:生成された製品グループの最初の製品。
- すべてのサブツインモデル:現在のツインモデルのすべての子を取得。 例:生産ライン上のすべての製品。
- 前のツインモデル:現在のツインモデルの前の兄弟ツインモデルを取得。 例:コンベア上の前の製品。
- 次のツインモデル:現在のツインモデルの次の兄弟ツインモデルを取得。 例:コンベア上の次の製品。
検索対象タイプ:検索する対象を選択し、ツインモデル全体 または ツインモデル内の特定の役割 を指定できます。
- ツインモデル:ツインモデル全体を検索。 例:ロボットや生産ラインの設備など。
- ツインモデル内のオブジェクト:ツインモデル内の特定の要素を検索。 例:原料生成器のツインモデルに含まれる生成器本体・出口・進行バー など。
位置を選択
位置の獲得方式
- 手動で入力
- 3D座標値を直接入力(形式:x, y, z)。
- 例:「10,20,30」を入力すると、指定された空間位置を示す。
- ツインモデルの位置:ツインモデルの現在位置を使用。
- ツインモデル属性:ツインモデルのプロパティから位置情報を取得。
- ツリー属性:行為ツリーのプロパティから位置情報を取得。
- 属性中のパスポイント:プロパティの値を使用し、パス(経路マップ)上の座標ポイントを取得。
座標タイプ
- ローカルコーディネート:特定の基準点に対する相対座標。例:コンベア上の荷物のローカル座標は、コンベアの中心点に対する相対位置。
- 座標:シーン内の絶対位置(世界座標)。
ツインモデルノード
ツインモデルノード は、ツインモデルの作成・削除・操作、およびそのプロパティの管理 に使用されます。
ツインモデルを作成
機能
指定された姿勢(位置・回転角度)で、特定のツインモデルテンプレートに対応するツインモデルを作成する。
パラメータの説明
- 使用するテンプレート
作成するツインモデルのテンプレートを選択。
- 位置
新しく作成されるツインモデルのシーン内の位置を設定。
- 回転
新しいツインモデルの回転角度を設定。
設定例
以下の例では、「ツインモデルA」が自身の出口位置に新しいツインモデルを作成する 方法を示します。
1. 使用するテンプレート
- 値のソース:ツインモデル中の属性
- ツインモデルのソース:自身
- ターゲット属性:ツインモデルAのテンプレート > 「ツインモデルが使用するテンプレートIDを生成」
2. 位置
- 値のソース:ツインモデル中の属性
- ツインモデルのソース:自身
- ツインモデル属性:ツインモデルAのテンプレート > 「出口」 > 「出入口の位置」
3. 回転
- 手動で入力:回転角度を (0,0,0) に設定。
ツインモデルを削除
機能
指定したツインモデルを削除します。例:生産ライン上の製品が賞味期限切れ になった場合や不要になった製品 を、自動的に削除できます。
パラメータの説明
- ターゲットツインモデル:削除するツインモデルを指定
- ツインモデルのソース
- 自身:現在の行為ツリーを実行中のツインモデルを削除。
- 臨時ツインモデル:特定の条件で自動生成された一時ツインモデルを削除。
- 属性中のツインモデル:プロパティに保存された識別子を使用して特定のツインモデルを検索し、削除。
- シーン内の全てのツインモデル:シーン全体を検索し、条件に一致するツインモデルを削除。
設定例
工場の生産ラインで クラッシャー を使用し、不要な製品を自動的に削除する場合、「ツインモデルを削除」ノードを以下のように設定します。
ターゲットツインモデル:臨時ツインモデルを選択し、実行中に自動生成された不要な製品や部品を処理 する。
属性を設定
機能
ツインモデルまたは行為ツリーの任意のプロパティを設定 します。
このノードを使用することで、製品の状態を更新 したり、生産設備のパラメータを調整 したり、ワークフロー内の特定の動作を制御することが可能です。
パラメータの説明
- ターゲット属性
ツインモデルまたは行為ツリーのプロパティを設定可能。
- 属性のソース
- ツインモデル中の属性:特定のツインモデルからプロパティを選択。
- ツリー属性:現在の行為ツリー内のプロパティを取得。
- 現在の属性:コンテナ内のプロパティをループ処理する際の現在のプロパティを使用。
- 数値の設定基準
- 元データを置き換える:新しい値で既存のプロパティ値を直接上書き。
- 元データと加算:現在のプロパティ値に新しい値を加算。
- 属性のソース
- 値:
- 手動で入力:数値を直接入力。
- ツインモデル中の属性:指定したツインモデルのプロパティから取得。
- ツリー属性:行為ツリーのプロパティから取得。
- 現在の属性:コンテナのプロパティをループ処理する際の現在のプロパティを使用。
ツインモデルの姿勢設定
機能
ツインモデルまたはツインモデル内の特定の役割の位置や回転を設定 します。例えば、ロボットアームの位置や角度を調整 し、特定のタスクを実行させることができます。
パラメータの説明
- ターゲット
調整対象のオブジェクトを指定できます。対象はツインモデル本体、またはツインモデル内の特定のオブジェクトです。
- ツインモデル:調整するツインモデルを選択。
- ツインモデル内のオブジェクト:ツインモデル内の特定の役割を選択し、姿勢を調整。
- 位置
ツインモデルまたは役割のシーン内座標を設定。
- 回転
ツインモデルまたは役割の回転角度を設定。
ツインモデル親オブジェクトを設定
機能
ツインモデルまたはそのロールを、別のツインモデルまたはそのロールの子オブジェクトとして設定します。例えば、生産設備の組み立てにおいて、あるコンポーネントを機械本体の子オブジェクトとして設定できます。
パラメータの説明
- ターゲット
設定する階層関係の対象オブジェクトを指定します。ツインモデルまたはツインモデル内の特定のロールを指定できます。
- ツインモデル:ツインモデルをターゲットオブジェクトとして選択します。
- ツインモデル内のオブジェクト:ツインモデル内の特定のロールをターゲットオブジェクトとして選択します。
- 親オブジェクトなし:ターゲットオブジェクトの親子関係を解除し、いずれの親オブジェクトにも属さない状態にします。
- 新しい親ツインモデル
新しい親オブジェクトを選択し、ターゲットオブジェクトを別のツインモデルまたはそのロールに付属させ、新たな親子関係を形成できます。
- ツインモデル:新しい親オブジェクトとしてツインモデルを選択します。
- ツインモデル内のオブジェクト:新しい親オブジェクトとしてツインモデル内の特定のロールを選択します。
- 変更前後の座標を一致にする:このオプションを有効にすると、ターゲットオブジェクトの親子関係が変更されても、その座標は変わりません。
ツインモデルを取得
機能
指定したツインモデルを現在のツインモデルとして設定するか、ツインモデルの識別子を指定された属性に保存し、後続のプロセスでの呼び出しや操作を容易にします。
パラメータの説明
- ターゲット
取得するツインモデルの出所を指定します。
- 自身:現在、行為ツリーを実行しているツインモデル。
- 臨時ツインモデル:実行プロセス中に動的に作成されたツインモデル。
- 属性中のツインモデル:属性からツインモデルの識別子を取得し、対応するツインモデルを検索。
- シーン内の全てのツインモデル:シーン全体から条件に合うツインモデルを検索。
- ツインモデル設定オプション
取得したツインモデルをどのように処理するかを選択します。
- ツインモデルを現在のツインモデルに設定:取得したツインモデルを現在のツインモデルとして設定。
- ツインモデルを属性に設定:取得したツインモデルの識別子を対象属性に保存し、後続の操作で使用できるようにする。
非表示のツインモデルを表示
機能
このノードを使用して、ツインモデルまたはツインモデル内のロールのシーン内での表示・非表示状態を制御します。例えば、特定の操作手順で特定のツインモデルを非表示または表示することで、学習者が現在のタスクに集中しやすくなります。
パラメータの説明
- ターゲット
表示または非表示にする対象オブジェクトを選択します。ツインモデル全体またはその特定のロールを指定できます
- ツインモデル:ツインモデル全体をターゲットとして選択し、表示・非表示の操作を行います。
- ツインモデル内のオブジェクト:ツインモデル内の特定のロールをターゲットとして選択し、表示・非表示の操作を行います。
- 表示:ターゲットオブジェクトの表示状態を制御します。
- 有効:ターゲットオブジェクトを可視状態にします。
- 無効:ターゲットオブジェクトを不可視状態にします。
属性をVector3 に変換
機能
3 つの異なる数値(例:位置や回転の X、Y、Z 軸の値)を組み合わせて、3 次元ベクトル(Vector3)形式に変換します。
パラメータの説明
- 属性1
3 次元ベクトルの第 1 成分(通常は X 軸)。
- 属性2
ベクトルの第 2 次元を定義(Y 軸)。
- 属性3
ベクトルの第 3 次元を定義(Z 軸)。
コンテナを削除
機能
指定されたコンテナ(リストやディクショナリなど)から要素を削除します。コンテナとは、複数の要素を格納および管理できる属性のことです。これらの属性には、他のオブジェクトや基本データ型を含めることができ、要素へのアクセスや操作を行うためのメソッドが提供されています。現在のバージョンでサポートされているコンテナの種類は、リスト(List)とディクショナリ(Dictionary)です。例えば、複数の製品が保管されている仮想倉庫から、指定された製品を削除することができます。
パラメータの説明
- ターゲットコンテナ
要素を削除する対象のコンテナを指定します。コンテナはリストまたはディクショナリのいずれかになります。
- コンテナコンテンツをクリア
このオプションを有効にすると、ターゲットコンテナ内のすべての要素がクリアされます。コンテナの状態をリセットする必要がある場合に適用されます。
ルートノード
機能
ルートノードは、ツインモデルの移動ルートを設定および制御するために使用されます。
ルートに沿ってツインモデルを移動
機能
このノードは、指定されたルートに沿ってツインモデルまたはツインモデル内のロールを移動させるために使用されます。例えば、AGV(自動誘導搬送車)の移動ルート、開始地点、および移動速度を設定し、指定されたルートと速度で移動させることができます。
パラメータの説明
- 移動するターゲット
移動させる対象を選択します。対象は、ツインモデル全体またはその中の特定のキャラクターである可能性があります。
- ツインモデル:移動対象としてツインモデルを選択します。
- ツインモデル内のオブジェクト:移動対象としてツインモデル内のキャラクターを選択します。
- 現在のパスを使用:すでに保存されている「ルートに沿って移動しますか」を使用して移動します。
- 移動中の回転が必要:このオプションを選択すると、ツインモデルはパスに沿って移動する際に自動的に回転し、進行方向と一致します。デフォルトでは選択されています。
- 逆方向に移動:このオプションを選択すると、ツインモデルは指定したパスの逆方向に沿って移動します。
- パスに入るときに元の回転角度を維持:このオプションを選択すると、ツインモデルはパスに入る際に元の回転角度を維持し、移動中は「移動中に進行方向に沿って回転」の設定に従って回転します。デフォルトでは選択されています。
- ターンのフィレットの半径:パスの曲がり角で目標オブジェクトの丸み半径を設定します。値が大きいほど、ターン時の動きが滑らかになります。
- 移動の出発ポイント:目標オブジェクトの移動開始位置。
- 移動速度を設定:設定しない場合、目標オブジェクトはツインモデルのメタデータにある速度属性値で均等に移動します。
- 加速から等速に変更する位置:设置加速运动在全路径中的占比(范围:0-1),当孪生体移动到该比例位置后,开始匀速运动。
- 目標速度:设定孪生体移动时的匀速速度。
- エンド速度を設定
- 等速から減速に変更する位置:加速した移動の割合を設定します(範囲:0-1)。ツインモデルがこの割合の位置に達すると、均等速度に変わります。
- エンド速度:ツインモデルが移動する際の均等速度を設定します。
ツインモデルの移動経路設定
機能
指定したパスをツインモデルまたはツインモデル内のキャラクターに保存します。パス、速度、移動開始位置を設定することで、必要に応じて設定されたパスに沿って移動できるようになります。例えば、コンベアベルト上の物体がベルトに沿って移動するように使用されます。
パラメータの説明
- 移動するターゲット
パスに沿って移動するターゲットを選択します。対象は、ツインモデル全体またはツインモデル内の特定のキャラクターである可能性があります。
- ツインモデル:移動対象としてツインモデルを選択します。
- ツインモデル内のオブジェクト:移動対象としてツインモデル内のキャラクターを選択します。
- 目標ルート
目標ツインモデルまたはキャラクターの移動ルートを指定します。ルートは手動で入力するか、既存の属性から取得できます。
- 逆方向に移動:このオプションを選択すると、ツインモデルは指定したパスの逆方向に沿って移動します。
- 移動の出発ポイント
ツインモデルの移動開始位置を設定します。
- 目標速度
ツインモデルが移動する速度を設定します。速度は手動で入力するか、属性から取得できます。
- パスに入るときに元の回転角度を維持
このオプションを選択すると、ツインモデルはパスに入る際に元の回転角度を維持し、パスの方向に自動的に調整されません。
例:以下の例では、「ツインモデルの移動経路設定」ノードを使用して、コンベアベルト上の物体に移動パスを設定する方法を示します。
1ステップ移動
機能
目標ツインモデルを設定した速度で一歩移動させます。例えば、自動化生産ラインでコンベアベルト上の物体を一歩移動させ、物体がコンベアベルト上を徐々に移動する過程をシミュレートします。
パラメータの説明
- 移動するターゲット:移動させる対象を選択します。対象は、ツインモデル全体またはツインモデル内の特定のキャラクターである可能性があります。
- ツインモデル:移動対象としてツインモデルを選択します。
- ツインモデル内のオブジェクト:移動対象としてツインモデル内のキャラクターを選択します。
- ターゲット速度:移動対象の速度を設定します。
- 移動中の回転が必要:このオプションを選択すると、移動中にターゲットが移動方向に沿って回転します。デフォルトでは選択されています。
- ターンのフィレットの半径:ターゲットオブジェクトのターン部分の丸み半径を設定します。数値が大きいほど、ターンがより滑らかになります。
移動経路を作成
機能
ツインモデルの「ツインモデルの移動経路設定」属性を設定します。このノードを使用することで、ユーザーはツインモデル(例えば、ロボットやAGV小車)の移動パスを生成し、それを「ツインモデルの移動経路設定」属性として保存できます。このパスは「パスに沿ってツインモデルを移動」ノードと組み合わせて使用することで、ツインモデルが予め設定されたパスに沿って移動することができます。
パラメータの説明
- パスの生成方法
- パスポイントで生成:既存のパスポイント名を使ってツインモデルの移動パスを生成します。
- 座標で生成:指定された始点と終点の座標を使ってパスを生成します。
- パスをターゲット属性に保存:指定されたパスを保存する属性を設定します。
- 出発点:パスの始点を指定します。
- 座標で生成:始点の値として具体的な座標を設定する必要があります。
- パスポイントで生成:パスの始点名を選択する必要があります。
- 終点:パスの終点を指定します。
- 座標で生成:終点の値として具体的な座標を設定する必要があります。
- パスポイントで生成:パスの終点名を選択する必要があります。
追跡経路計画
機能
ツインモデルの追跡ターゲット、最短パス、出発点を設定し、ターゲットとなるツインモデルを自動で追跡します。例えば、ロボットアームがコンベアベルト上の移動する物体を掴むシーンに使用されます。
パラメータの説明
- パスをターゲット属性に保存:指定した経路計画後のパスを保存する場所。
- 出発点:パス追跡の始点を設定します。
- 追跡ターゲット
- ツインモデル:追跡対象としてツインモデルを選択します。
- ツインモデル内のオブジェクト:ツインモデル内の特定のキャラクターを追跡対象として選択します。
出入口ノード
入口でツインモデルを獲得
機能
指定された出入口からツインモデルを取得し、それを現在のツインモデルとして設定するか、ターゲット属性に保存します。
パラメータの説明
- ターゲット出入口:ツインモデルを取得する出入口を選択します。
- ツインモデル設定オプション
- ツインモデルを現在のツインモデルに設定:取得したツインモデルを現在の操作中のツインモデルとして設定します。
- ツインモデルを属性に設定:取得したツインモデルを指定した属性に保存します。
- 出入口のツインモデルを削除:このオプションを選択すると、指定された出入口からツインモデルが削除されます。
入口でツインモデルを削除
機能
出入口からツインモデルを削除します。
パラメータの説明
- ターゲット出入口:ツインモデルを削除する出入口を選択します。
ツインモデルを出入口に設置
機能
指定されたツインモデルを選択した出入口位置に配置します。
パラメータの説明
- ターゲット出入口:ツインモデルを配置する出入口を選択します。
- ターゲットツインモデル:出入口に配置するツインモデルを指定します。
出荷整理
機能
指定された保管エリアからツインモデルを削除し、貨物の出庫や物体の移動をシミュレートします。
パラメータの説明
- ターゲット保管エリア:ツインモデルを移出する保管エリアを選択します。
入荷整理
機能
指定されたツインモデルを指定した保管エリアに配置します。
パラメータの説明
- ターゲット保管エリア:ツインモデルを配置する保管エリアを選択します。
- 保存するツインモデル:保管エリアに配置するツインモデルを指定します。
オブジェクトノード
アニメーション再生
機能
指定されたツインモデルまたはツインモデル内のオブジェクトの指定されたアニメーションを再生します。デフォルトでは1回再生します。
パラメータの説明
- ターゲット:アニメーション再生の対象となるオブジェクトを選択します。
- ツインモデル:アニメーション再生対象として全体のツインモデルを選択します。
- ツインモデル内のオブジェクト:ツインモデル内の特定の役割(キャラクター)を選択します。
- アニメーションコントロール:アニメーションの制御方法を設定します。
- アニメーションモード
- 再生:アニメーションの再生を開始します。
- 停止:現在のアニメーションを一時停止します。
- 再生を続く:一時停止したアニメーションを再開します。
- 最初から再生:アニメーションの最初から再生します。
- 再生モード
- デフォルト:アニメーションクリップのループモードを読み込みます(デフォルトでは1回再生)。
- 一回再生:アニメーションクリップの末尾に達すると、再生を停止します。
- ループ再生:末尾に達したら、最初から再生を繰り返します。
- 往復ループ再生:アニメーションクリップの終わりに達すると、開始と終了の間で往復しながら再生します。
- 最後のフレームをループ再生:アニメーションの再生が終了した後、最後のフレームを繰り返し再生し続けます。
- アニメーション名:アニメーション名を手動で入力する必要があります。ツインモデルまたは役割にはこのアニメーションが含まれている必要があります。モデルのアニメーション名はDataMesh Importerで確認できます。
- アニメーション速度:アニメーションの再生速度を設定します。デフォルトは1倍速です。
- アニメーションモード
例:以下は「アニメーション再生」ノードを使用して、「六軸ロボットアーム」で「物品を拾い移動する位置」のアニメーションを再生する例です。
- ターゲット:ツインモデル内のオブジェクト:六軸ロボットアーム
- アニメーションコントロール
- アニメーションモード:再生
- 再生モード:默认
- アニメーション名:「物品を拾い移動する位置」
- アニメーション速度:1(1倍速)
ツールノード
放置
機能
停止行為ツリーの実行。
例:
以下放置ノードは「ターゲットの出入口にツインモデルが存在するかどうか」の条件を使って判断します。出口に他のツインモデルが存在する場合、行為ツリーの実行を停止します。
生産記録
機能
生産記録ノードは、指定されたテキスト内容を出力するために使用されます。出力された内容は、シーン再生画面の「ログ情報」パネルに表示されます。
パラメータの説明
- プリントアウトする内容:手動で出力するテキスト内容を入力します。
待機
機能
待機ノードは、設定された待機時間が終了するまで行為ツリーの実行を一時停止します。待機時間が終了すると、行為ツリーは待機ノードの後続ノードを実行し続けます。
パラメータの説明
- 待機時間:行為ツリーの一時停止時間を設定します。
- 手動で入力:具体的な待機時間(秒)を手動で設定します。
- ツインモデル中の属性:ツインモデルの属性値を待機時間として使用します。
- ツリー属性:行為ツリー内の属性を使って待機時間を定義します。
- 現在の属性:行為ツリーがコンテナ内の属性を探索する際、今回の探索対象となる属性が現在の属性です。
- 待機時間を属性に保存:このオプションにチェックを入れると、待機時間が指定したターゲット属性に保存され、その後の使用や記録に役立ちます。
- ターゲット属性:待機時間を保存する属性を選択します。
行為ツリーノード
行為ツリーを追加
機能
指定した行為ツリーをターゲットのツインモデルに追加する。
パラメータの説明
- ターゲットツインモデル:行為ツリーを追加する対象のツインモデルを選択します。
- ターゲット行為ツリー:ツインモデルに追加する行為ツリーを選択します。
行為ツリーを削除
機能
ターゲットツインモデルから指定された行為ツリーを削除します。
パラメータの説明
- ターゲットツインモデル:行為ツリーを削除する対象のツインモデルを選択します。
- ターゲット行為ツリー:削除する行為ツリーを選択します。
数学ノード
数学ノードは、さまざまな数学的演算を行い、その結果をツインモデルの属性に適用します。
Sin関数
機能:入力値を対応する正弦値に変換し、出力します。
Cos関数
機能:入力値を対応する余弦値に変換し、出力します。
Tan関数
機能:入力値を対応する正接値に変換し、出力します。
正関数
機能:入力値を使用して正規分布の出力値を生成します。
ポアソン関数
機能:入力値を使用してポアソン分布の出力値を生成します。
ランダム数
機能:ランダムな数値を出力します。
加算
機能:ツインモデルの2つの属性値を加算し、その計算結果を指定された属性値に置き換えるか、加算します。
減算
機能:ツインモデルの2つの属性値を減算し、その計算結果を指定された属性値に置き換えるか、加算します。
掛け算
機能:ツインモデルの2つの属性値を乗算し、その計算結果を指定された属性値に置き換えるか、加算します。
除法
機能:ツインモデルの2つの属性値を除算し、その計算結果を指定された属性値に置き換えるか、加算します。
イベントノード
イベントを受信
機能:指定のイベントをリスンし、応答するために使用します。1つのツインモデルだけがこのイベントをリスンし、応答できます。例えば、2台のAGVが同じ貨物を争う場合、受信イベントノードを使用して、1台のAGVだけが貨物到着のイベントに応答するようにして、競合を避けることができます。
パラメータの説明
- イベント識別子:リスンするイベント識別子を指定します。
- 受信したツインモデルをターゲット属性に保存:このオプションを有効にすると、リスンしたイベント識別子がターゲット属性に保存され、後続の操作や論理判断に使用できます。
イベントを送信
機能:指定されたイベントを送信して、他のツインモデルの動作やアクションをトリガーします。例えば、製造ラインで、ある加工ステップが完了した後、次の加工ステップのツインモデルに作業開始の通知を送信することができます。
パラメータの説明
- イベント識別子:送信するイベント識別子を指定します。他のツインモデルに関連するアクションを実行させるために通知します。
- イベントに送信するツインモデルを設定:イベントと一緒にツインモデルを送信し、他のツインモデルがイベントを受信する際に使用します。
ノードの条件
定義
ノードの条件は、複合ノードとアクションノードに適用でき、そのノードを実行するかどうかを判断します。条件が満たされた場合にのみ、そのノードが実行されます。条件が満たされない場合、ノードは実行されず、結果は親ノードに返されます。
- 条件グループ内の条件は「AND」の関係:条件グループ内のすべての条件が満たされた場合にのみ、ノードが実行されます。
- 複数の条件グループ間は「OR」の関係:ノードに複数の条件グループが設定されている場合、どれか一つの条件グループが満たされれば、ノードが実行されます。
一般的な条件
ターゲット出入口にツインモデルが存在するかどうか
この条件は、ツインモデルの出口または入口に他のツインモデルが存在するかどうかを判断するために使用されます。
パラメータの説明
- ターゲット:チェックする必要のある出入口を設定します。
例
以下の例では、現在実行中の行為ツリーのツインモデルの入口に他のツインモデルが存在するかどうかを判断します。
2つのツインモデルの属性値を比較
この条件は、特定の属性値を比較して、特定の条件を満たしているかどうかを判断します。比較結果に基づいて、適切な行動ロジックを処理します。
パラメータの説明
- ターゲット属性1:比較する最初のツインモデルの属性値。
- ターゲット属性2:比較する2番目のツインモデルの属性値。
- 比較方式:2つの属性値を比較する方法を定義します。
- =:ターゲット属性1の値がターゲット属性2の値と等しい。
- >:ターゲット属性1の値がターゲット属性2の値より大きい。
- <:ターゲット属性1の値がターゲット属性2の値より小さい。
- ≤:ターゲット属性1の値がターゲット属性2の値より小さいか、または等しい。
- ≥:ターゲット属性1の値がターゲット属性2の値より大きいか、または等しい。
- ≠:ターゲット属性1の値がターゲット属性2の値と等しくない。
距離を比較
この条件は、2 つの点間の距離と基準値を比較し、比較結果に基づいて適切な行動ロジックを処理します。
パラメータの説明
- ポイント1
- 位置の獲得方式:最初の点の位置を取得する方法を選択します。位置の選択に関する詳細は、「位置の選択」を参照してください。
- 座標タイプ:使用する座標タイプを選択します(ローカル座標またはグローバル座標)。
- ポイント2
- 位置の獲得方式:2 番目の点の位置を取得する方法を選択します。
- 座標タイプ:使用する座標タイプを選択します(ローカル座標またはグローバル座標)。
- ターゲット値:比較に使用する基準となる距離値。
- 比較方式:2 点間の距離とターゲット値の関係を判断する比較方法を選択します。
- =: 2 点間の距離がターゲット値と等しい。
- <:2 点間の距離がターゲット値より小さい。
- >:2 点間の距離がターゲット値より大きい。
- ≤:2 点間の距離がターゲット値以下である。
- ≥:2 点間の距離がターゲット値以上である。
- ≠:2 点間の距離がターゲット値と等しくない。
例
例えば、コンベアの出口で詰まりが発生しているかどうかを判断する場合、最初のオブジェクトと出口の距離が事前に設定された安全距離よりも小さい場合、詰まりが発生していると判断できます。設定方法は以下の通りです。
- ポイント1
- 位置の獲得方式:ツインモデル中の属性
- 座標タイプ:「ローカルコーディネート」を選択
- ツインモデル中の属性:选择“孪生体中的属性”> “出入口的位置”ツインモデル中の属性:「ツインモデルの属性」>「出入口の位置」を選択
- ポイント2
- 位置の獲得方式:选择“孪生体的位置”。
- 座標タイプ:「ローカルコーディネート」を選択
- ツインモデルの検索方法:「自身」> 「最初の子ツインモデル」を選択
- ターゲット値:
- 値のソース:ツインモデル中の属性
- ツインモデルのソース:「自身」を選択
- ターゲット属性: 「物品安全距離」を選択
- 比較方式:「小さい」を選択
保管エリアにツインモデルが存在するか否か
この条件は、指定された保管エリアに物体が存在するかどうかを判定するために使用されます。
パラメータの説明
- ターゲット保管エリア:チェックする保管エリアを設定します。
- ツインモデルのソース:保管エリアが所属するツインモデルを指定します。
ツインモデルが保保管エリア保存可否設定
判断某个孪生体是否可以放入指定的存储区。
パラメータの説明
- ターゲット保管エリア:収納対象の保管エリアを指定します。
- ツインモデルのソース:保管エリアが所属するツインモデルを指定します。
- ターゲットツインモデル:収納するツインモデルを指定します。
- ツインモデルのソース:収納対象のツインモデルを指定します。
例
特定の貨物が、現在実行中の行為ツリーにおけるAツインモデルの保管エリアに収納可能かを判定する場合、以下のように設定します。
- ターゲット保管エリア:「自身」 を選択
- ターゲットツインモデル:「臨時ツインモデル」 を選択。
ツインモデルを比較
この条件は、2つのツインモデルが同一かどうかを判定します。
パラメータの説明
- ターゲットツインモデル:比較対象のツインモデルを選択します。
- ターゲットツインモデルID:比較するもう一方のツインモデルのIDを指定します。
行為ツリーの編集
基本フロー
行為ツリーの編集は、以下の手順で進めます:
- 機能の分割
複雑な機能を複数の独立したサブ機能に分割します。例:原料生成器の場合、「生産」と「出力」の2つのサブ機能に分割できます。
- ツインモデルテンプレートの準備
a) ツインモデルテンプレートの作成
b) リソースの追加:機能分割の結果に基づき、各サブ機能の実現に必要なリソースを追加します。
- 例:原料生成器の生産機能には、生成された物品を出力するための出口が必要です。
c) 属性の設定:各サブ機能に関連する属性を設定します。
- 例:原料生成器の生産機能では、生産間隔や生産する物品のテンプレートといった属性を設定します。
- 行為ツリーの編集:行為ツリーエディターを使用して、各サブ機能の具体的な動作ロジックを定義します。
- 例:原料生成器の生産機能は、一定時間間隔(待機ノード)で生産(ツインモデルを作成)するように設定できます。
- 出力機能は、ツインモデルの出入口を設定するノードを使用し、生成した物品を出口に送ることができます。
サンプル
原料生成器の基本機能
1. 機能の分割:「生産」と「出力」
2. ツインモデルテンプレートの準備:
a) ツインモデルテンプレートの作成:ツインモデルテンプレートを作成し、その中に原料生成器モデル(「/Public Directory/FactVerseDLC/ChuangJianQi_DLC」)を追加します。
b) リソースの追加:原料生成器の生産機能のために「出口」を追加します。
c) 属性の設定:
i. ツインモデルテンプレートペインで、メタデータ横の︙をクリックし、「Part_1」構造を追加します。
ii. 生産間隔の設定:「Part_1」内に「ツインモデルの生産間隔」(Double型)属性を追加し、以下の設定を行います:
- 単位:「秒」
- デフォルト値:「3」
- 「ツインモデルで表示」オプションを有効化(このオプションを有効にすると、シーンエディターでツインモデルを生成する際にこの属性を編集できます)。
iii. 生産する物品のテンプレートIDの設定:「Part_1」内に「ツインモデルの識別子」(String型)属性を追加し、以下の設定を行います:
- 用途:「ツインモデルテンプレート」
- 「ツインモデルで表示」オプションを有効化
iv. テンプレートの保存:ツールバーの【保存】ボタンをクリックしてテンプレートを保存します。
3. 行為ツリーの編集:
a) 行為ツリーの作成:
i. ツインモデルテンプレートペインで、行為ツリーセクション横の︙をクリックし、「行為ツリーを新規作成」を選択します。
ii. 開いたウィンドウで、保存先を選択し、行為ツリー名を入力します。
iii.【確定】ボタンをクリックして行為ツリーを作成します。
iv. ツールバーの【保存】ボタンをクリックしてテンプレートを保存します。
b) 行為ツリーの編集:新規作成した行為ツリー「原料生成器行為ツリー」には、デフォルトでルートノードのみが含まれます。次の手順で、「原料生成器行為ツリー」にノードを追加し、ノードの実行条件を設定します。
i. ツインモデルテンプレートペインで、新規作成した「原料生成器行為ツリー」をダブルクリックし、行為ツリーエディターを開きます。
ii. “原料生成器行為ツリー”に選択ノードを追加し、ルートノードと選択ノードを接続します。接続方法の詳細については、「ノードの基本操作」を参照してください。
iii. 放置ノードを追加し、選択ノードと放置ノードを接続します。放置ノードの実行条件を設定し、出口に生産された物品が存在する場合に停止するようにします。
iv. 順番ノードを追加し、選択ノードと接続する。
v. 待機ノードを追加し、順番ノードと接続する。待機ノードのプロパティを設定する:
- 待機時間:「ツインモデルの属性」>「ツインモデルの生産間隔」
vi. ジェネレーターに生成物を作成するノードを追加:ツインモデル作成ノードを追加し、順番ノードと接続する。ツインモデル作成ノードのプロパティを設定する:
- 使用するテンプレート:「ツインモデルの属性」>「ツインモデルの識別子」を選択
- 位置:
- 値のソース:「ツインモデルの属性」を選択
- ツインモデルのソース:「自身」
- ターゲット属性:「出入口の位置」
vii. 「ツインモデルを出入口に設置」ノードを追加し、順番ノードと接続する。ノードのプロパティを設定する:
- ターゲット出入口
- ツインモデルのソース:「自身」
- 出入口を選択:「生産機」テンプレートの「出口_1」を選択
- ターゲットツインモデル:「臨時ツインモデル」
- ターゲット出入口
viii. ツールバーの【保存】ボタンをクリックし、行為ツリーを保存します。
移動する球体
1. 球体ツインモデルのテンプレートを作成:
a) ホーム画面で【テンプレートを新規作成】をクリックし、テンプレートエディターを開きます。
b) ツールパネルから「球体」をシーンエリアにドラッグし、適切な位置に配置します。
c) 球体の色を緑に変更します。
d) ツールバーの保存ボタンをクリックし、テンプレート名を「移動する球体」として保存します。
2.「移動する球体」テンプレートに主な機能構造を追加する:
a) ツインモデルテンプレートパネルで、メタデータの隣の︙をクリックし、構造の追加を選択します。
b) スクロールバーを下に移動し、新しく追加された構造「Part_1」を見つけ、「Part_1」をクリックして、属性パネルで構造名を「主な機能」に変更します。
c) 「主な機能」構造の下に「リアルタイム位置」(Vector3)属性を追加します。
3.「移動する球体」テンプレートにボールを移動させる行為ツリーを追加する:
a) ツインモデルテンプレートパネルで、行為ツリー欄の隣の︙をクリックし、「行為ツリーを新規作成」のオプションを選択します。
b) 行為ツリーを保存し、「移動する球体」と名前を付けます。
4. 行為ツリーのロジックを編集
a) 「移動する球体」行為ツリーをダブルクリックし、行為ツリーエディターを開きます。
b) ルートノードの下に順番ノードを追加します。
c) 順番ノードの下にツインモデルの姿勢設定ノード「ツインモデルの姿勢設定1」を追加し、以下の属性を設定します:
- ターゲット
- 値のソース:ツインモデル
- ツインモデルのソース:自身
- 位置
- 値のソース:手動で入力
- 値:5,0,0
- ターゲット
d) 順番ノードの下に待機ノード「待機1」を追加し、待機時間の手動入力値を「5」に設定します。
e) ツインモデルの姿勢設定ノードを追加します:
i. CTRL+C で「ツインモデルの姿勢設定1」ノードをコピーし、CTRL+V で順番ノードの下に新しいツインモデルの姿勢設定ノード「copy_ツインモデルの姿勢設定1」を追加します。
ii. 名前を「ツインモデルの姿勢設定2」に変更します。
iii. 位置の手動入力値を「0.5, 0, -0.5」に設定します。
f) CTRL+C で「待機1」ノードをコピーし、CTRL+V で順番ノードの下に新しい待機ノード「copy_待機1」を追加し、ノード名を「待機2」に変更します。
g) 「ツインモデルの姿勢設定1」ノードをコピーする方法で、「ツインモデルの姿勢設定3」ノードを追加し、位置の手動入力値を「0,0,-0.5」に設定します。
h) CTRL+C で「待機1」ノードをコピーし、CTRL+V で順番ノードの下に新しい待機ノード「copy_待機1」を追加し、ノード名を「待機3」に変更します。
i) ツールバーの 【保存】 ボタンをクリックし、行為ツリーを保存します。
j) < をクリックして、行為ツリーエディターを終了します。
k) 「移動する球体」テンプレートを保存します。ホームボタンをクリックしてテンプレートエディターを終了します。
5. シーンを作成し、移動する小球を追加する
a) 新しいシーンを作成し、「移動する球体」という名前を付けます。
b) 「移動する球体」テンプレートを使用して、「移動する球体1」を作成します。
c) 「移動する球体1」をシーンに追加します。
d) シーンを再生し、小球の移動効果をプレビューします。
シグナルを受信してブロックの色を変更する
この例では、イベントノードを使用してイベントを監視・応答し、ブロックの色属性を変更します。
前提
「新しいテンプレートの作成」手順に従い、「色が変わる立方体」テンプレートを準備してください。
1. 球体ツインモデルテンプレートを作成する:
a) ホーム画面で 【テンプレートを新規作成】 をクリックし、テンプレートエディターを開きます。
b) ツールパネルから「球体」をシーンエリアにドラッグ&ドロップし、適切な位置に配置します。
c) ツールバーの 【保存】 ボタンをクリックし、テンプレート名を「シグナルを送信する球体」として保存します
2.「シグナルを送信する球体」テンプレートに主機能構造を追加する:
a) ツインモデルテンプレートパネルで、メタデータの横にある ︙ をクリックし、「構造を追加」を選択します。
b) スクロールバーを下に移動し、新しく追加された構造「Part_1」を見つけ、「Part_1」をクリックして、プロパティエリアで構造名を「主な機能」に変更します。
c) 「主な機能」 構造の下に 「シグナル」(Int) プロパティを追加します。
3.「シグナルを送信する球体」テンプレートにシグナル送信の行為ツリーを追加する:
a) ツインモデルテンプレートパネルで、行為ツリーセクションの横にある ︙ をクリックし、「行為ツリーを新規作成」を選択します。
b) 行為ツリーを保存し、「シグナルを送信する」と命名します。
4. 行為ツリーのロジックを編集:この例では、「100」、「200」、「300」の 3 つのシグナルを送信します。
a) 「シグナルを送信する」行為ツリーをダブルクリックし、行為ツリーエディターを開きます。
b) ルートノードの下に 順番ノード を追加し、デフォルトのプロパティを使用します。
c) 順番ノードの下に イベント送信 ノード「シグナル送信100」を追加し、以下のプロパティを設定します:
- イベント識別子
- 値のソース:手動で入力
- 値:100
- イベント識別子
d) 順番ノードの下に 待機 ノード「待機1」を追加し、待機時間の手動入力値を「2」に設定します。
e) 「シグナル送信200」ノードを追加:
i.「シグナル送信100」ノードをコピー&ペーストすると、新しいノードが順番ノードの下に自動的に追加されます。
ii.ノード名を「シグナル送信200」に変更します。
iii. 順番ノードと「シグナル送信200」ノードを再接続します。
iv.「シグナル送信200」ノードのイベント識別子の手動入力値を「200」に変更 します。
f) 待機 ノード「待機2」を追加し、待機時間の手動入力値を「2」に設定します。
g)「シグナル送信300」ノードを追加:
i.「シグナル送信100」ノードをコピー&ペーストすると、新しいノードが順番ノードの下に自動的に追加されます。
ii. ノード名を「シグナル送信300」に変更します。
iii. 順番ノードと「シグナル送信300」ノードを再接続します。
iv.「シグナル送信300」ノードのイベント識別子の手動入力値を「300」に変更 します。
h) 待機 ノード「待機3」を追加し、待機時間の手動入力値を「2」に設定します。
下図は、完全な行為ツリー構造を示しています。
i) 行為ツリーを保存し、行為ツリー編集画面を終了します。
j) テンプレートを保存し、ホーム画面に戻ります。
5.「色が変わる立方体」テンプレートにシグナルを受信して色を変更する行為ツリーを追加する。
a) 「色が変わる立方体」テンプレートを開きます。
b) ブロックの色を白色に変更します。
c) テンプレート内で新しい「イベント応答」行為ツリーを作成します。
d) 行為ツリー「イベント応答」をダブルクリックし、行為ツリーエディターを開きます。
e) ルートノードの下に並列ノードを追加します。
f) 並列ノードの下に順番ノード「順番ノード1」を追加します。
g) 「順番ノード1」の下にイベント受信ノード「イベントを受信100」を追加し、以下のプロパティを設定します:
- イベント識別子
- 値のソース:手動で入力
- 値:100
- イベント識別子
h) 「順番ノード1」の下にプロパティ設定ノードを追加し、「色の設定」にリネームして、以下のプロパティを設定します:
- ターゲット属性
- 属性のソース:ツインモデル中の属性
- ツインモデルのソース:自身
- 属性を選択:「色」(「色が変わる立方体」の「色」属性を選択)
- 数値の設定基準:元の値を置き換える
- 値
- 値のソース:手動で入力
- 値:255,254,145,10 (対応する色
)
- ターゲット属性
i) 並列ノードの下に順番ノード「順番ノード2」を追加します。
j) 「順番ノード2」の下にイベント受信ノード「イベントを受信200」を追加し、以下のプロパティを設定します:
- イベント識別子
- 値のソース:手動で入力
- 値:200
- 値
- 値のソース:手動で入力
- 値:200
- イベント識別子
k) 「順番ノード2」の下にプロパティ設定ノードを追加し、「色の設定」にリネームして、以下のプロパティを設定します:
- ターゲット属性
- 属性のソース:ツインモデル中の属性
- ツインモデルのソース:自身
- 属性を選択:「色」(「色が変わる立方体」の「色」属性を選択)
- 数値の設定基準:元の値を置き換える
- 値
- 値のソース:手動で入力
- 値:100,100,200,200 (対応する色
)
- ターゲット属性
l) 並列ノードの下に順番ノード「順番ノード3」を追加します。
m) 「順番ノード3」の下にイベント受信ノード「イベントを受信300」を追加し、以下のプロパティを設定します:
- イベント識別子
- 値のソース:手動で入力
- 値:300
- イベント識別子
n) 「順番ノード3」の下にプロパティ設定ノードを追加し、「色の設定」にリネームして、以下のプロパティを設定します:
- ターゲット属性
- 属性のソース:ツインモデル中の属性
- ツインモデルのソース:自身
- 属性を選択:「色」(「色が変わる立方体」の「色」属性を選択)
- 数値の設定基準:元の値を置き換える
- 値
- 値のソース:手動で入力
- 値:255,100,100,100 (対応する色
)
- ターゲット属性
下図は、完全な行為ツリー構造を示しています。
o) ツールバーの【保存】ボタンをクリックし、行為ツリーを保存します。
p) 「<」をクリックし、行為ツリーエディターを終了します。
q) テンプレートを保存し、ホーム画面に戻ります。
6. 新しいシーンを作成し、「イベント応答」と命名します。
7. シーン内にイベントを送信する球体と、イベントを受信する 2 つの正方形を追加します。
a) 「色が変わる立方体」テンプレートを使用して、2 つのブロック「立方体1」「立方体2」を作成します。
b) 「シグナルを送信する球体」テンプレートを使用して、「シグナル送信球体1」を作成します。
c) 「立方体1」「立方体2」「シグナル送信球体1」をシーンに追加します。
8. シーンを保存します。
9. シーンを再生します。
移動する小球を追跡
この例では、仮想シーン内でブロックのツインモデルを作成し、行為ツリーのロジックを使用して、自動的に移動する小球を追跡させる方法を説明します。
1. ブロックツインモデルテンプレートを作成する:
a) ホーム画面で 【テンプレートを新規作成】 をクリックし、テンプレートエディターに入ります。
b) ツールパネルから「立方体」をシーンエリアにドラッグ&ドロップし、適切な位置に配置します。
c) ツールバーの【保存】ボタンをクリックし、テンプレート名を「追跡ターゲットの立方体」として保存します。
2.「追跡ターゲットの立方体」テンプレートに、小球の移動を追跡する行為ツリーを追加する
a) ツインモデルテンプレートパネルで、行為ツリーセクションの横にある ︙ をクリックし、「行為ツリーを新規作成」を選択します。
b) 行為ツリーを保存し、「追跡ターゲットの立方体」と命名します。
3. 行為ツリーのロジックを編集する
a) 「追跡ターゲットの立方体」行為ツリーをダブルクリックし、行為ツリーエディターを開きます。
b) ルートノードの下に順番ノードを追加します。
c) 順番ノードの下に「追跡経路計画」ノードを追加し、以下の属性を設定します:
- ルートをターゲット属性に保存
- 属性のソース:ツインモデル中の属性
- ツインモデルのソース:自身
- 属性を選択:「現在のルート」(「追跡ターゲットの立方体」の「現在のルート」属性)
- 数値の設定基準:元の値を置き換える
- 起点
- 値のソース:手動で入力
- 値:point0
- 追跡ターゲット
- 指定ツインモデル
- 値のソース:ツインモデル
- 孪生体的来源:“シーン内の全てのツインモデル”中的“指定孪生体”ツインモデルのソース:「シーン内の全てのツインモデル」内の「指定ツインモデル」
- 方式を選択:「ツインモデルを選択」
- ツインモデルは:「1685」(「移動する球体」サンプル内の「移動する球体1」の ID。ツインモデルの ID はプロパティパネルで確認できます)
- 指定ツインモデル
- ルートをターゲット属性に保存
d) 順番ノードの下に「ルートに沿ってツインモデルを移動」ノードを追加し、以下のプロパティを設定します。
- 移動するターゲット
- 値のソース:ツインモデル
- ツインモデルのソース:自身
- 現在のルートを使用:有効
- 移動中の回転が必要:有効
- パスに入るときに元の回転角度を維持:有効
- ターンのフィレットの半径:「0」
- 移動の出発ポイント:現在位置
- 目標移動速度を設定:有効
- 等速から減速に変更する位置:「0」
- 目標速度:「10」
- 移動するターゲット
e) ツールバーの【保存】ボタンをクリックし、行為ツリーを保存します。
f) 「<」をクリックし、行為ツリーエディターを終了します。
g) 「追跡ターゲットの立方体」テンプレートを保存し、ホームボタンをクリックしてテンプレートエディターを終了します。
4. シーンを作成する:新しいシーンを作成し、名前を「追跡移動するボール」とします。
5. シーンに「追跡ターゲットの立方体」と「移動する球体」を追加します
a) 「追跡ターゲットの立方体」テンプレートを使用して「追跡ターゲットの立方体1」を作成し、シーンに追加します。位置は「0,0,0」に設定します。
b) 「移動する球体1」をシーンに追加し、位置は「5,0,-0.5」に設定します。
6. 四つのポイントを相互に接続する経路を作成する
a) 「追跡ターゲットの立方体1」と「移動する球体1」を非表示にします。これにより、経路を作成する際にポイントの位置が遮られることを防ぎ、正確に配置できるようにします。
b) 経路計画画面に入り、構築モードを使用して以下の4つのポイントを作成し、それらを相互に接続します。これらのポイントは「追跡ターゲットの立方体1」の移動経路を構成し、「point0」が起点となります。立方体は、この4つの経路ポイントによって構成される経路内で、「移動する球体1」を追跡する最短経路を計算します。
- point0 (0,0,0)
- point1 (0.5,0,0)
- point2 (0.5,0,-0.5)
- point3 (0,0,-0.5)
c) 選択モードに切り替え、接続方向を双方向に変更します。
d) 経路を保存し、経路計画画面を終了します。
e) 「追跡ターゲットの立方体1」と「移動する球体1」を再び表示状態に戻します。
7. シーンを保存する。
8. シーンを再生する:「追跡ターゲットの立方体1」は最短経路に従って「移動する球体1」を追跡する。