もくじ
アニメーション
フリーのアニメーションデータは、Mixamoというモーション配布サイトを利用する。
内容が大量にあるので、簡易的にならこれで事足りる。
Mixamoのデータを変換する(MixamoConverter)
そのままではUEのサンプルキャラクターのボーンでアニメーションデータが利用できないので、リターゲット作業を行う必要がある。
MixamoConverterを使えば、Mixamoのモーションを特定キャラ用に変換することができる。
複数ファイルを一括処理することが可能。
アプリのUIがわかりづらいので注意。
使い方
アプリ内で操作することはほぼ全くなく、ほとんどエクスプローラーで指定のフォルダーにファイルを入れて、実行ボタンを押すだけの作業となる。
- まず配布サイトの専用のランチャーをDLする。
- そのランチャーからMixamoConverterをDLする。
- MixamoConverterを開き、タイトル画面 → ホーム画面 → 作業画面と転移する。
- 一旦変換したいキャラのファイルを選び、Mixamoにアップロードする。
- 変換したいアニメーションを選び、ダウンロードする。
- 変換用フォルダーをエクスプローラーで開き、変換したいファイルをそのフォルダー内に入れる。
- 変換を実行する。
- 出力フォルダーをエクスプローラーで開き、Unreal Engineにドラッグ&ドロップする。
- インポート画面で割り当てたいManekinを選んでインポートする。
マテリアル
単一処理の細かなノードを組み上げて自分で機能を作っていく感じ。
扱うのは大変だが、表現力の最大値は高そう。
コントラストやHueのような、ノードによっては、いじる値を自分で編集可能にする必要がある。
(ソケットを右クリック > "パラメーターへ昇格"を実行)
主なノード
- ミックス:Lerp
- 数式(演算):addやmultiで検索して出る。
- 画像のブレンド:blendで検索。
- 画像補正:imageで検索。
- 単純なカラー入力:Constant3Vector
- XYZ分離:BreakOutFloat3Components
- XYZ結合:MakeFloat3
- 出力する軸を限定する:CompornentMask
- 例えば3軸のトランスフォームを分離して、Zのような特定の軸だけを使いたい場合は、こちらの方が早い。
- 初期値はR/Gの2軸になっているので、1軸だけ使いたい場合はGのチェックを外す。
- 反転:OneMinus
- 1-xすることで逆転した値を得る、という意味。
- 白黒化:Desaturation
- UVスクロール:panner
- 常時値が増加し続ける。
- テクスチャを縦/横移動アニメーションさせる事ができる。
- 他オブジェクトと触れる輪郭を自然にする:DepthFade
- 特にエフェクトが地面や壁と触れた時にぶつ切りにならないようにすることができる。
- カラーランプ:CurveAtlasRowParameter
- RGBカーブ:CurveAtlasRowParameter
ショートカット
よく使うノードはショートカットで呼び出すことができる。
各ショートカットキーを押しながら左クリックを押すと、新規作成される。
出力ソケットから線をドラッグ中にショートカットキーを押す場合でも新規作成できる。
AでAdd、MでMultiply、1,2,3,4で各種ベクター入力を追加あたりを覚えておけば良さそう。
- 1:Constant
- 2:Constant2Vector
- 3:Constant3Vector
- 4:Constant4Vector
- A:Add
- B:BumpOffset
- D:Divide
- E:Power
- F:MaterialFunctionCall
- I:If
- L:LinearInterpolate(Lerp)
- M:Multiply
- N:Normalize
- O:OneMinus
- P:Panner
- R:ReflectionVectorWS
- S:ScalarParameter(Param)
- T:TextureSample
- U:TextureCoordinate(TexCoord)
- V:VectorParameter(Param)
カラーランプ
カラーランプやRGBカーブはマテリアルノード内では制御せず、カーブデータを別で作って、それを利用する。
- Desaturationノードで、加工したい画像を白黒化する。
- コンテンツブラウザーにて、カーブ > CurveLinearColor を作成する。
- コンテンツブラウザーにて、カーブアトラスを作成する。
- 詳細メニュー > カーブ > Gradient Curvesに要素を新規追加し、作成しておいたカーブを設定する。
- マテリアルにて、CurveAtlasRowParameterノードを追加し、Desaturationノードに接続する。
- 作成しておいたカーブアトラスとカーブを設定する。
カーブの編集
カーブの編集について、グラデーションのバー内をクリックするとピンが追加できる。
そのピンの色を変えれば直接色を設定できる。
グラデーションのないパキっとしたアニメスタイルにしたい場合は、カーブのキーを全て選択して、右クリック > 定数に変更する。
ポストプロセスマテリアルによるアウトライン描画
仕組み
ZDepthと、「ZDepthを少し横にずらしたもの」を引き算する。
そうするとずらした方向だけの輪郭が取れる。
これを上下左右分ずらして合成する。
上画像の例では、棒人間を複製したピンク/緑/青/赤を各方向にそれぞれずらして重ねると、アウトラインに見える。
ライティング
ライティングを管理する
各ライトの影響を理解していないと調整がしにくいので、空の新規レベルから手動でライトを追加することで理解を深める。
- ウィンドウ > 環境ライトミキサーを開く。
- スカイライトを作成する。
- レベル全体に影響させるライト。
- つまり、影の最低値を決める。
一切光が当たっていない影部分も明るくできる。 - Sky Distance Thresholdを0にし、強度スケーリングに値を入れると明るくできる。
- 大気ライトを作成する。
- これがメインの光源となる。
- DirectionalLightが追加される。
初期値は少し光が強いので、3程度でよさげ。
- Sky Atmosphereを作成する。
- 空。
- ボリュメトリッククラウドを作成する。
- 雲。
- ハイトフォグを作成を作成する。
- 霧や煙の中でのぼんやりと広がる光の表現ができる。
- エンジンの拡張機能設定 > 品質が中以上である必要がある。
- ポストプロセスを追加する。
- 追加アイコン > ボリューム > PostProcessVolumeを追加する。
- レンダリング結果に後処理による加工を追加する。
- ポストプロセスを全体に影響させる。
- PostProcessVolumeの設定のInfinite Extentを有効化する。
- 太陽光の位置をマウスで調整する。
- Ctrl+Lを押している間にマウス移動。
キャラを吹き飛ばす
爆発物が爆発した表現ができる。
衝撃を発生させるRadialForceコンポーネントを追加し、Impulse Strenghの値を設定する。
特定地点を移動し続ける足場や敵
動く足場のような単純な動きをするオブジェクトならInterpToMovementで作成できる。
アニメーションを作る必要がなく、3Dビューで移動先のロケーターを配置するだけでよい。
エラーについて
下記のエラーが出た場合、足場のBPの"DefaultSceneRoot"の詳細 > トランスフォーム > 可動性を"ムーバブル"に変更する。
InterpToMovementComponentと共に移動させるには DefaultSceneRoot が「ムーバブル」でなくてはいけません。
画面のフェードアウト
フェードアウトしてステージ転移することで、急に場面が変わる不自然さを低減させる。
ウィジェットにてフェードアウトアニメーションを作り、ステージ転移の際にウィジェットを実行する。
その他UEの操作・小ネタ
- ゲームのプレイ:Alt + P
- 自分はAlt + Shift + Aに変更。
- (エディタの環境設定 > Alt + P(もしくはワールドをプレイ → プレイ)を検索)
- コンパイル:F7
- 自分はAlt + Aに変更
- ゲームプレイ再生中に別の視点から動作確認する:F8
- コリジョンをプレイ再生で表示させる。
- Hidden in Game をオフにする。
- 非表示:Alt + H
- 全表示
- アウトライナーで全選択して目アイコンを押す。
- ピボットポイントの移動。
- ギズモをマウス中ボタンドラッグ + Alt。
- アニメーションの再生速度を変更する。
- 元アニメデータの"Rate Scale"をいじるか、Play Montageノードの"Play Rate"をいじる。
複製で位置がずれないようにする
複製(Ctrl+D)をすると位置がズレた状態で複製される。
この挙動の無効化・代替手段は下記。
Alt + ドラッグで代替するのがよさそう。
- ヘッダーのグリッドスナップを無効化すれば、無効化される。
- 単純にコピペすればその場に複製され、複製と同様の結果が得られる。
- Alt + ドラッグなら、移動を開始しつつ複製ができる。
ノード編集
- Bool判定:Blanch。
- そのデータが存在するかどうか。
- Is Valid (?アイコンの方)
- デバッグ用の確認。
- Print String
- Stringの入力ソケットになにかしらの値を接続すると、なんでも自動でString型に変換される。
- ノードをフレームにまとめる・コメントを付ける。
- ノードを選択してCキー。
- コメントで処理内容を大きく見やすく付けて整理できる。
後で見返してもわかりやすくなるので、初心者ほどしっかりとコメントを付けるのがおすすめ。
- ノードを自動整理:Q
- ノードの線に分岐(リルート)を追加する:ノードをつなぐ線をダブルクリックする。
- アウトプットからドラッグして、"Reroute"を検索・追加することでも追加できる。
その他
- Tickは極力使わない。
- 常時実行し続けるので、不可が重い。
- ほとんどの処理は、実行するべきタイミングが決まっているはずである。
その適したタイミングでのみ実行されるようにコードを組む。 - 使うにしても0.1など時間間隔を設ける。
- 関数は必ずReturnノードを最後に付ける。
問題の初歩的な対処法
- コンパイルする。
- 作った変数はコンパイルしないと他の場所に反映されないことがある。
- UEを再起動する。
ノードの整理方法(コメント,整列,折り畳み)を解説 [UE5入門 #4-20]
UE4 ブループリントのノードを繋いだまま無効化する - Let's Enjoy Unreal Engine