今回のテーマは、様々なCADやCGツールでおなじみの機能ですが、カメラ位置の登録とカメラのFOV調整機能の実装です。
業務で使用する中で、以前とまったく同じビューでレンダリングする機会って頻繁に発生しますよね。そんなわけで、この必須となる機能を試行錯誤しながら実装してみました。
①Add to Viewportノードの後ろのSequenceノード
②Create Widgetノード(Class : Button_Widget)のReturn Value
・数時のボタンは押すと登録したカメラ位置に移動、SETボタンがカメラ位置の登録、CLボタンは登録したカメラ位置の削除です。合計で5セットのスロットを設置しました。
・FOV変更スライダーはMIN値を10.0、MAX値を90.0、Valueを50.0にしました。このあたりはお好みでOKです。
・前回と同様、実際の動作部分はPersistentレベルのブループリントに記載するので、ここではイベントの発生通知を行う機能としてEVENT DISPACTHERを上の図のように全てのノードに設定します。識別しやすいように名前をつけたほうがいいかもしれません。
①Name : Camera_Position, Type : Vector(Array)
②Name : Camera_Rotation, Type : Rotator(Array)
③Name : Camera_Target_Arm_Length, Type : Float(Array)
④Name : Camera_FOV, Type : Float(Array)
⑤Name : Flag, Type : Boolean(Array)
・上から4つ目までは登録したカメラの情報を格納する配列、一番最後のFlagは登録した情報があるかどうか識別するブーリアン変数です。登録がされていないスロットは数字ボタンを押しても反応しないようにするために使います。
・すべての配列は上の図のように、スロットの数の分だけ初期値を忘れずに設定しておきます。
・Add to Viewportノードの後ろのSequenceノード、Create Widgetノード(Class : Button_Widget)のReturn Valueから分岐させたルートをつないでいきます。
・Setボタンを押すとイベント発生通知を受け取り、配列の0番目にカメラの各種情報をセットし、数字ボタンの背景カラーを変更したのちFlag変数の配列0番目をTrueに変更します。
・数字ボタンを押すとイベント発生通知を受け取り、配列の0番目から各種データを取り出しカメラにセットします。その後、まだ設定はしていませんがFOVの値をテキストボックスで表示し、スライダーの値にセットしています。
・ここまで完了したらコンパイル後にプレイモードにして動作をチェックできます。
・CLボタンのクリックイベント通知を受け取ったら、カメラ情報に関する変数を0に戻し、数字ボタンの背景カラーを白に変更してからFlag変数をFalseに戻します。
・Persistentレベルのブループリントを開き、Add to Viewportノードの後ろのSequenceノード、Create Widgetノード(Class : Button_Widget)のReturn Valueから分岐させたルートを上の図のようにつなぎます。
・以上ですべて完了なので、コンパイル後に上書き保存します。



















0 件のコメント:
コメントを投稿