タスク4.3 - 処理フローインスタンスを使用してクローンを作成する
タスクの概要
前のチュートリアルタスクでは、コピーと貼り付けの方法を使用してステッカーシステムのクローンを1つ作成しました。コピーと貼り付けの方法は直感的ですが、大型モデルではうまく調整できません。すべてのクローンのすべてのプロパティを更新するのは面倒なだけでなく、特定のプロパティを更新するのを忘れる可能性も非常に高くなります。1つ以上のプロパティの更新に失敗するとモデルが破損し、モデルのトラブルシューティングに費やす時間が長くなる可能性があります。
このタスクでは、処理フローインスタンスを使用して、クローンを作成するためのより効率的な方法について学習します。次のサブセクションでは、この2つのツールに関する主要な概念の一部について説明します。
処理フローインスタンスの主要な概念
ご存じのように、処理フローはシミュレーションシステムのロジックをコントロールします。最初のチュートリアルタスクでは、一般処理フローを作成しました。一般処理フローは、3Dモデルの複数のオブジェクトに影響を及ぼすグローバルロジックを作成するのに役立ちます。
前のチュートリアルのタスクで作成した処理フローロジックでは、固定リソースオブジェクトであるステッカーマシンを主にコントロールします。そのため、オブジェクトの処理フローを使用する方がよい場合があります。固定リソース処理フローを使用することによって、固定リソースオブジェクトを特定の処理フローに添付し、その処理フローの独自のインスタンスが実行できるようになります。つまり、各ステッカーマシンをオブジェクトの処理フローに添付して、個別のマシンごとに処理フローロジック独自のコピーを実行できます。オブジェクトの処理フローは、各プロセッサで実行されるロジックのさまざまなコピーすべてに対するテンプレートと考えてください。詳細については、「処理フローのタイプ」と「処理フローのインスタンス」を参照してください。
このチュートリアルタスクでは、一般処理フローのロジックを固定リソース処理フローにコピーしてから、ステッカーマシンのクローンを添付します。新しい処理フローをテストして機能していることを確認したら、別のステッカーマシンクローンを添付して、この処理フローの追加のクローン(インスタンス)を作成します。次の2つのチュートリアルのタスクを完了すると、処理フローインスタンスの実際の用途についてかなり理解できます。
ステップ1 3Dオブジェクトの別のクローンを作成する
このタスクでは、ステッカーシステムの別のクローンを作成します。作業が完了すると、新しいステッカーシステムは次の画像のようになります。
このコピーを作成するには:
- 3Dモデルでは、Shiftキーを押しながらPlane2とその中のすべてのオブジェクトの周りにボックスを描きます。選択したオブジェクトの周りに赤いボックスが表示されます。
- Ctrl + Cを押してクリップボードにコピーします。
- モデル付近の、コピーしたオブジェクトを配置する位置にマウスを移動させます。Ctrl + Vキーを押して平面を貼り付けます。
- Shiftキーを押しながらモデルの空白部分をクリックすると、オブジェクトの選択が解除されます。
- 3番目の平面が選択されていることを確認します。[プロパティ]で、その名前を「Plane3」に変更します。
- 次に、色ボックスの横にある矢印をクリックしてカラーセレクターを開きます。最も明るい緑色を選択します。
- [Plane3]内のすべてのオブジェクトの名前を変更して、オブジェクト名の後ろに「3」を付けます。たとえば、[Source]は[Source3]に、[Queue]は[Queue3]になります。
3Dモデルがこのステップの冒頭に表示した画像のようになることを確認してください。
ステップ2 オブジェクトの処理フローを作成する
このステップでは、新しいオブジェクトの処理フローを作成します。次に、一般処理フローから新しい処理フローにすべてのアクティビティをコピーします。最後に、この処理フローにステッカーマシン3を添付します。
- ツールバーで、[処理フロー]ボタンをクリックして、メニューを開きます。[オブジェクトの処理フローを追加]をポイントしてから、[空白]を選択します。
- [プロパティ]で、[名前]ボックスのテキストをダブルクリックします。「ステッカーロールロジック」と入力し、Enterキーを押して処理フローの名前を変更します。
- [処理フロー]タブをクリックして元の処理フローに戻ります。
- [ステッカーロール再充填]形状をクリックして選択します。
- Ctrl + Cを押してクリップボードにコピーします。
- 新しく作成した[ステッカーロールロジック]タブをクリックします。処理フロー付近の、コピーした形状を配置する位置にマウスを移動させます。Ctrl + Vキーを押して形状を貼り付けます。
- [リスト:使用中のステッカーロール]アセットと[ステッカーロール使用]形状でステップ2~5を繰り返します。
- オブジェクトの処理フローの空白スペース内をクリックして、何も選択されておらず、この処理フローがアクティブであることを確認します。
- [プロパティ]で次の操作を実行します。
- [エンティティの追加 (インスタンス)]で、[サンプラー]ボタン をクリックしてサンプリングモードに入ります。
- 3Dモデルで、[StickerMachine3]をクリックしてこの処理フローに添付します。
シミュレーションモデルを保存することをおすすめします。
ステップ3 処理フローアクティビティを編集する
このステップでは、処理フローのプロパティを更新して、複数の処理フローインスタンスに一度に簡単に適用できるようにします。[リスト:使用中のステッカーロール]がグローバルリストではなくローカルリストになるように更新します。
このステップでは、currentキーワードを初めて使用します。currentキーワードは、トークンのインスタンスオブジェクトを参照します。この場合、新しいステッカーロールをステッカーマシンにロードする準備ができたら、キーワードcurrentを使用してロールオペレーターの目的地を設定します。currentを使用することで、ロールオペレーターに処理フローのこの特定のインスタンスに添付されているオブジェクトに移動するよう指示します。このキーワードを使用して、特定のインスタンスに添付されるステッカーマシンに基づいて目的地が変更されるようにします。
この機能を作成するには:
- [ステッカーロールロジック]オブジェクトの処理フローで、[リスト:使用中のステッカーロール]アセットをクリックして選択します。[プロパティ]で次の操作を実行します。
- [タイプ]メニューをクリックし、[ローカル]を選択します。
- [ステッカーロール再充填]形状で、[リストにプッシュ:ステッカーロール]をクリックします(このアクティビティは元の処理フローのリストにまだリンクされていることに注意してください)。[プロパティ]で次の操作を実行します。
- [リスト参照]ボックスの横にある[サンプラー]ボタン をクリックし、サンプリングモードに入ります。
- [リスト:使用中のステッカーロール]をクリックして、[リストにプッシュ]アクティビティにリンクします。
- [ステッカーロール使用]処理フローの2つの[リストからプル]アクティビティで前のステップを繰り返します。
- [ステッカーロール再充填]処理フローで[タスクシーケンス]アクティビティのスタックブロックをクリックして選択します。
- [プロパティ]の[移動:新しいロールをインストール]で、[目的地]ボックスの横にある矢印をクリックして、メニューを開きます。メニューから[current(インスタンス オブジェクト)]を選択します。
- [ステッカーロール使用]処理フローの最初のスタックブロックをクリックして選択します。
- [プロパティ]の[ソース:フローアイテムの入口]で次の操作を実行します。
- [オブジェクト]ボタンの横にある矢印をクリックして、メニューを開きます。
- メニューから[current(インスタンス オブジェクト)]を選択します。
- [ステッカーロール使用]処理フローで2番目のスタックブロックをクリックして選択します。[プロパティ]の[カスタム:マシンを停止]で次の操作を実行します。
- [カスタムコード]ボックスの横にある[プロパティを編集]ボタン をクリックします。
- [オブジェクト]ボックスで、現在のテキストを削除し、「
current
」と入力します。
- [カスタムコード:マシンを再開]アクティビティに対して前のステップを繰り返します。
シミュレーションモデルを保存することをおすすめします。
ステップ4 シミュレーションモデルを実行してテストする
次に、モデルが正しく動作していることを再びテストして確認します。モデルを実行する前に、1番目と3番目のステッカーシステムのリストエントリを開きます。
リセットしてモデルを実行し、実際の様子を見てみましょう。
ステッカーマシンシステムは、ほぼ同じように作動します。
ステップ5 さらに5つのクローンを作成する
このステップでは、ステッカーシステムのクローンをさらに5つ作成します(合計8個)。数多くのプロパティを更新する必要はないため、処理フローインスタンスを使用してこれらのクローンを作成する方がコピーと貼り付けの方法より簡単であることが分かります。また、RollStorageキューとRollOperatorを移動して8つのステッカーシステムの中央に配置されるようにします。作業が終了すると、モデルは次の画像のようになります。
これらのクローンを作成するには:
- 3Dモデルで、RollStorageキューとRollOperatorをステッカーシステムの右側に移動して、Plane2とPlane3の中央に配置します。
- Shiftキーを押しながらPlane3とその周辺のすべてのオブジェクトの周りにボックスを描きます。選択したオブジェクトの周りに赤いボックスが表示されます。
- Ctrl + Cを押してクリップボードにコピーします。
- モデル付近の、コピーしたオブジェクトを配置する位置にマウスを移動させます。Ctrl + Vキーを押して平面を貼り付けます。
- Shiftキーを押しながらモデルの空白部分をクリックすると、オブジェクトの選択が解除されます。
- 4番目の平面が選択されていることを確認します。[プロパティ]で、その名前を「Plane4」に変更します。
- 次に、色ボックスの横にある矢印をクリックしてカラーセレクターを開きます。最も明るい紫色を選択します。
- [Plane4]内のすべてのオブジェクトの名前を変更して、オブジェクト名の後ろに「4」を付けます。たとえば、[Source3]は[Source4]に、[Queue3]は[Queue4]になります。
- ステッカーロールロジック処理フロー内の空白部分をクリックして、処理フローがアクティブで何も選択されていないことを確認します。
- [プロパティ]の[エンティティの追加 (インスタンス)]で、[Plane4/StickerMachine4]が表示されていることを確認します。
- ステッカーマシンシステムが合計8個になるまで、前のステップを繰り返します。
シミュレーションモデルを保存することをおすすめします。
ステップ6 もう一度モデルを実行してテストする
次に、モデルが正しく動作していることをもう一度テストして確認します。繰り返しますが、リストエントリを表示するには、リストエントリを開く必要があります。ただし、処理フローインスタンスを使用するようになったため、次のヒントボックスに説明されているように、ステッカーシステム3~8のリストエントリを開くプロセスは少々異なります。
リセットしてモデルを実行し、実際の様子を見てみましょう。
8個のステッカーマシンシステムは、ほぼ同じように動作します。
シミュレーション実行中の処理フローインスタンスの動作
デフォルトで、シミュレーションの実行中は、メインのオブジェクトの処理フローのみが表示されます。処理フローの個別のインスタンス(ステッカーマシン4または5など)を表示するには:
- ステッカーロール再充填ロジック処理フロー内の空白部分をクリックして、処理フローがアクティブで何も選択されていないことを確認します。
- [プロパティ]の[エンティティの追加 (インスタンス)]で、表示する特定の処理フローをクリックして選択します。
- [処理フロービューを開く]ボタンを押して、処理フロービューの追加タブとして処理フローを開きます。
次の画像では、このシミュレーションの実行中の処理フローをいくつか示します。左上には、ステッカーロールロジック処理フローが表示されます。これは処理フローの他のすべてのインスタンスをコントロールするメインの処理フローになります。また、ステッカーマシン5、6、7の処理フローの特定のインスタンスも表示できます。
メインの処理フローには、すべてのインスタンスのトークンが一度に表示されます。ステッカーマシン6が最初にステッカーを使い果たし、タスクシーケンスを開始します。その後は、ステッカーマシン7、別のステッカーマシンと続き、最後はステッカーマシン5となります。メインの処理フローのトークンと相関することに注意してください。
結論
カットと貼り付けの方法ではなく、処理フローインスタンスを使用してモデルのクローンを作成する方が簡単である理由が理解できたと思います。カットと貼り付けの方法を使用するときは、異なる設定を一度に更新する必要があり、間違いが発生する可能性が高くなります。また、不必要にモデルを減速させる可能性もあります。
ですが、処理フローインスタンスと処理フロー変数を使用することで、すべてがはるかに簡単になります。最初のモデルと処理フローを設定したら、クローンを作成し、マイナーな設定をいくつか更新するだけでよいのです。エラーを起こす可能性を大分抑えることができます。
次のチュートリアルタスクでは、元の処理フローを変更してすべてのインスタンスを同時に更新する方が簡単であることが分かります。チュートリアルタスク4.4 - インスタンスを同時に変更するに進みます。