おはようございます、本日の当番モーションデザイナーのY.Nです。
前回に引き続き、今回もICEのすごく基礎的な使用方法に関するお話です。
前回のブログはこちら
今回は、
前回作成したノードを少しいじって操作オプションを追加する
といったことをやっていきます。
今回は頂点の移動方向にオプションを設定する事にします。
結果はこんな感じです。
今回の例では、結果の違いを明確に出すために、
グリッドの代わりにポリゴン球の一部を使っています。
オプションの選択を変えることで結果が違っています。
ここで説明しようとしている事柄
・ICEノード Select Case の使用方法
いじる手順は大雑把に言うと以下のような感じです。
1.既存のツリーに Select Case ノードを繋げる
2.デフォルトケースとオプション用ケースの設定をする
3.オプション設定ポートを外部に公開する
4.コンボボックスを作ってオプション内容を文言で選択できるようにする
では、前回作ったICEノードをいじっていきます。
まず最初に SelectCaseノードを取り出します。
このノードは、複数条件で処理を分岐させたいときに使用します。
分岐の結果として返したい値の一つ目を case0に、それ以降は New に繋ぎます。
New に繋ぐと自動でCase1、Case2と新規ケースが追加されていきます。
今回オプションで場合分けする対象は頂点の移動方向なので、
分岐はRaycastノードのDirectionの手前で行ないます。
元々繋がっていた接続は、今回はCase0およびデフォルトケースに繋げる事にします。
新規オプションとして、頂点を移動させるオブジェクト自身の向きを設定することにします。
今回はローカルz軸負の向きを使う事にします。
頂点を移動させるオブジェクト自身にICETreeを設定するため、方向ベクトルはローカルz軸の負の向きをそのまま指定するだけで構いません。
この新規オプションをCase1に接続します。
ツリー構造は変わりましたが、オブジェクトの頂点の移動の仕方は変わっていません。
Select Case のノードをダブルクリックしてみると、Condition 値が0になっています。
Case0 の 0 と同じ値ですね。
この値を1に変えると、用意していた Case1 の計算結果が反映されます。
これで動作させるためのノードの追加は一通り終わりました。
後は、外部からこのConditionの値を自由に変更できるようにしておきます。
Expose input を Condition に接続して外部にポートを公開しましょう。
しかし、単に外部にポートを公開しただけだと、Conditionの値の入力に制限がかかっていない状態になっています。
またConditionで入力できる条件が、単なる数字になっているため、それが何を表すのかということが読みとれません。
このままでは制作した直後の制作者にしか理解できない、使えないノードになってしまいます。
そして制作者も、次の日にはきれいさっぱり使い方を忘れている事でしょう。
幸い、このような事態を回避するために、外部公開するポートの入力値は色々と管理できるようになっています。
とりあえず、入力内容を数字じゃないものにして、入力項目名ももう少し判りやすいものに変える事にします。
もう一度カスタムツリーの中を編集して行きましょう。
今回は外部公開したポートのプロパティを編集したいので、編集画面でポートを選択して右クリックメニューから
Properties を選択してください。
Nameの項目でポート名が変更でき、ComboValueの項目群で条件をコンボボックス化する事ができます。
Combo string に コンボボックスの選択オプションの文言を入力、Combo value にはその時のCondition値を入力。
これでAdd combo することでコンボボックスの選択オプションが追加されます。
今回は
Combo string に Point Normal 、Combo value に 0 を入力
Combo string に Object Direciton (-z)、Combo value に 1 を入力
することで下記のようなコンボボックスができました。
コンパウンド全体はこうなってます。
こんな感じで、利用者に分岐条件の選択をさせたい時、お手軽にコンボボックスを利用する事ができます。
勿論、ifノードにも適用できます。
まだ使った事が無い方がいらっしゃいましたらお試しください。
今回はここまでにしておきます。
次はまたまた基本の基本ですが、配列の使い方などを取り上げようと思っています。
配列関連ノードを使って配列用カスタムノードの作成などできればいいかなと。
それではまた。
最近のコメント