前回の予告通り、制作手順の「2.」で作成されたものの一つ、「小惑星+破壊された工場の跡」の詳細について書いていこうと思います。

制作手順

  1. 人工建造物(施設)と小惑星のモデルを用意
  2. 小惑星と施設を組み合わせて、破壊感を出すために施設をパーツごとに散らばせる
  3. スタティックメッシュを4種類に分割・選択してマージ
  4. 小惑星と人工建造物の残骸を無重力らしく空中に漂わせる

1. 人工建造物(施設)と小惑星のモデルを用意

小惑星は「岩」の3Dモデルを使って拡大して対応することに。

岩の3Dモデル

そして人工建築物(施設)は、Polar Sci-Fi Facilityで使用されている施設を使用しました。この施設はパーツごとにオブジェクトが分かれているので、簡単に分解することができるだろうとの判断からです。

施設の3Dモデル

2. 小惑星と施設を組み合わせて、破壊感を出すために施設をパーツごとに散らばせる

2.1 小惑星と施設を配置する

小惑星に施設が建てられているような状態にするため、岩モデルにスケールをかけて巨大化させ、それっぽくなるように、建物を配置して位置を調整します。

小惑星と施設を組み合わせた状態

2.2 施設をパーツごとに散らばせる

攻撃や隕石の衝突などで施設の一部が破壊されたようなイメージになるように、建物の構成パーツの一部を散らばせます。宇宙空間にある建物なので、自然な感じに散らばるまで移動や回転を行います。最終的には次の画像のようになりました。

施設パーツを散らばせた最終形

3. スタティックメッシュを4種類に分割・選択してマージ

宇宙空間を漂う建築物の残骸の動きが統一されていないように見せるため、それぞれの集まりで動かしていきたいため、4種類のスタティックメッシュにしていきます。

①小惑星と破壊されていない部分の施設

①小惑星と破壊されていない部分の施設

②破壊された建物残骸群A

②破壊された建物残骸群A

③破壊された建物残骸群B

③破壊された建物残骸群B

④破壊された建物残骸群C

④破壊された建物残骸群C

4. 小惑星と人工建造物の残骸を無重力らしく空中に漂わせる

ブループリントを使用して、小惑星や残骸を無重力らしく移動させます。今回使用したのは、破壊された建物残骸群がそれぞれ、ゆっくりと小惑星から離れていく為のブループリント、小惑星自体がゆっくりと回転する為のブループリントとなります。

4.1 破壊された建物残骸群がそれぞれ、ゆっくりと小惑星から離れていく為のブループリントを作成

  1. ブループリントクラス>「Actor」を選択して「BP_Move」と名付けてSAVEします。
  2. マイブループリント>関数の欄で「+」を押して関数を作成し「Move Tick」と名付けます。
  3. 関数「Move Tick」をダブルクリックして、関数編集用のグラフに移動します。関数「Move Tick」の実行ピンからワイヤーを伸ばし「AddRelativeLocation(DefaultSceneRoot)」ノードを配置します。
  4. 各残骸はそれぞれバラバラな方向に移動させていきたいので、移動値を制御する為の変数「X Move」、「Y Move」、「Z Move」を作成して、各々の値を「Float」にしておき、シーンレベル上で編集できるよう「インスタンス編集可能」のボタンにチェックを入れておきます。マイブループリント>変数の枠から、「X Move」、「Y Move」、「Z Move」を編集グラフ上に移動させてマウスボタンを離した後「Set(変数名)」を選択して設置していきます。

AddRelativeLocationノード配置直後、Delta Locationが未分割の状態

  1. 「AddRelativeLocation」を配置した時点では、「Delta Location」ピンがひとまとまりになっているので、「Make Vector」を使って、各変数の値に分解するか、「Delta Location」ピンの上にマウスカーソルを合わせて右クリックして「構造体ピンを分割」を選択して「Delta Location」ピンを「Delta Location X」、「Delta Location Y」「Delta Location Z」のピンに分割します。(今回は「構造体ピンを分割」を使用しています)

「構造体ピンを分割」を選択している状態

ピン分割後、未接続の状態

  1. 分割した「Delta Location X」、「Delta Location Y」「Delta Location Z」のピンに変数「X Move」、「Y Move」、「Z Move」のそれぞれを接続します。

X Move/Y Move/Z Moveを接続した状態

  1. イベントグラフのタブに切り替えて、「イベントBeginPlay」ノードの実行ピンからワイヤーを伸ばし、右クリックで「SetTimerByFunctionName」を設置します。
  2. 「Function Name」項目で先程作った「Move Tick」を指定し、Loopingに「✓」を入れます。

イベントBeginPlayからSet Timer by Function Nameへの接続

破壊された建物残骸群がそれぞれ、ゆっくりと小惑星から離れていく為のブループリント「BP_Move」が完成したのでSAVEして、実際に残骸の動きを調整していきます。

4.2 残骸の移動

破壊された建物残骸群A~C(「SM_Debris01~03」と命名しました)を配置して、それぞれに動きをつけていきます。

  1. ブループリント「BP_Move」を、建物残骸群A~Cを配置したいレベルにA~Cの数と同数分だけ配置します。次に建物残骸群A~C(メッシュ)を配置して、DefaultSceneRootの直下に建物残骸群A~Cのそれぞれが対応するように親子関係にしていきます。(画像ではブループリントが「Moving_BP」となっていますが、中身は「BP_Move」同じものです)

アウトライナーでMoving_BP_Debris一覧

  1. 設置した各ブループリント「BP_Move」を選択した状態で、編集の可能にしておいた変数「X Move」、「Y Move」、「Z Move」のそれぞれの設定を行っていきます。今回は、下図のような感じで調整しました。

Moving_BP_Debris1の値設定

Moving_BP_Debris2の値設定

Moving_BP_Debris3の値設定

上記の調整の結果、宇宙空間をゆっくりと移動する建物残骸の動きは次のようになりました。なかなかうまく行ったのではないでしょうか?

残骸の動きの結果

別アングルから見た残骸の移動後の様子は以下の通りです。

残骸移動後の様子(別アングル)

ここまで、小惑星上の建造物が破壊されて宇宙空間を漂っている状態のものを作ってきました。次回は、小惑星自体を動かしていく方法の詳細を書いていこうかと思います。

次回更新時は、今回作ったデータの作り方などを紹介できたらと思っています。