そうだ、ゲームを作ろう

現状や学んだことなど記録するブログ。間違ってたらごめんね

UE4ぷちコン映像編3rd「Living in the Darkness」振り返り

お疲れさまです。
今回ヒストリア様主催、第3回ぷちコン映像編に応募し、最優秀賞を頂くことができました。ありがとうございました。

さて生放送で制作過程を知りたいとの方が多くいらっしゃったので、振り返りも兼ねてここに書いていきたいと思います。

件の作品は↓

まずはお品書き

・ストップモーション的なアニメを作ろうと思ったきっかけ

・マテリアルはどうするか?

・モデルはどうするか?

・ストップモーションらしく見えるために

・ライティング

・MovieRenderQueue

・苦労したところなど

・反省点とか

・最後に

 

 

ストップモーション的なアニメを作ろうと思ったきっかけ

次のぷちコン映像編までに一応のやりたいことみたいの考えとかないとな

そういえばLAIKAは結構映像作品にCGを使っていると聞いたことがある

Blenderクレイアニメ作ってる人もいるし、UEも当然あるんだろうなぁ…

一応探してみて…え?もしかして無いの?

 

…ということで「意外と今までUEでストップモーションアニメに挑戦した人がいない」という事実が判明したので(まあ僕の知らない所でいるのかもしれませんが)、じゃあ自分が挑戦してみるかぁ、と少し思っていました。

テーマや実際できるかどうかとの兼ね合いもあるので、せいぜい「ストップモーションっぽいのができたらいいなあ」という程度のものでしたが…

 

・マテリアルはどうするか?

とりあえずテーマ発表前後に「果たして本当にUE内でそれっぽいことはできるのか」検証することにしました。最初に検証したのは当然マテリアルです。PBRテクスチャの指紋フリー素材を見付けたので、これでどうにかならないかと思いましていろいろ試したら便利なノードが見つかりました。NormalFromHeightMapというノードです。これを色を反転させた先の素材と組み合わせます。

f:id:wvigler:20220122073529p:plain指紋の表現はこれでできると分かりましたが、実際には粘土っぽいSurfaceを持ったMegascans(soilとかdirtとかの名前付いてるのが多い)と組み合わせています。今回は面倒だったのでMegascansのPresetに直接書き込んでいます。

f:id:wvigler:20220122074125p:plain良い子のみんなはあんまりこういうことやっちゃダメだぞ!
ついでに水や煮炊きの表現に使用されていた波立っている表現ですが、これもPresetで使用されているMaterialFunctionであるMF_MapAdjustmentsに直接書き込んでいます。良い子(ry

f:id:wvigler:20220122075050p:plainこれをWorldPositionOffsetに接続しています。(右下ただ2で割るだけでいいと思うんだけどどうしてこうなってるのか…もう実装したの大分前のことで記憶が…)

WPONoiseIntensityをある程度の数字にして、WPONoiseCoordinateを毎フレームRandomFloatで動かすことによって、波立つ表現を可能にしています。

f:id:wvigler:20220122080705p:plainこれをこうして

f:id:wvigler:20220122081023p:plainこうじゃ!

f:id:wvigler:20220122081120p:plainTimeは秒間12Fなので1/12ですね。WPONoiseIntensityを操作することで波立ちを抑えたりもできます。

水道に関してはSplineMeshを使用しています。

f:id:wvigler:20220122082615p:plainこれも上と同じマテリアルを用いていますが、RandomFloatを使用するのではなく、下にテクスチャが流れるような表現をしています。

f:id:wvigler:20220122082324p:plain今見直してみると、指紋まで移動させる必要は無かったような…

それからライト関係はこれとは違うごく普通のマテリアルを用いています。現実のストップモーションでもライトは普通の電球だったりするので雰囲気作りで。

f:id:wvigler:20220122083123p:plain↑作ったのに全く画面に映らなかった玄関のライトさん。折角なのでお披露目。

 

・モデルはどうするか

まぁ、なんというか、全部、自作、ですよねぇ…(笑)

前回同様、今回もモデルは全部自作です。お借りしたのは音素材と天球(一応外に空があります)のみです。Blenderで制作してます。

壁、床、天井、鍋、水、それから主人公はメッシュ自体に凹凸はついておらずつるつるなんですが、他のクレイっぽいものは一応メッシュにも凹凸を付けてます。まあNormalによる凹凸感が思った以上に効くので(壁が実は平面だって気付かなかったでしょ?)、どこまで有効だったのか分かりませんが、とりあえず作り方などを…

f:id:wvigler:20220122084032p:plainデフォルトキューブをクレイ化させます。サブディビジョンをかけたいのですが、角の部分はある程度残って欲しいので、まずはベベルをかけます。

f:id:wvigler:20220122084329p:plainなんとなく三角ポリゴンがあるのが気に入らないので分割数は2で。残したい部分がある場合は、適宜この段階でエッジを追加します。サブディビジョンした後でも戻せるのでそこまで慎重になる必要はないです。

f:id:wvigler:20220122084731p:plainサブディビジョンをかけた後です。

f:id:wvigler:20220122085411p:plain見た目の確認をしながら調整したいので、ShadeをSmoothにします。(これは別にどの段階でかけても構いません)

すでにちょっとクレイっぽくなっていますが、さらにDisplaceを使用して凹凸を付けていきます。

使用するテクスチャを調整します。僕はたいていCloudsを使用します。

f:id:wvigler:20220122090030p:plain

f:id:wvigler:20220122090337p:plain

SendToUnrealとの関係でUnitScaleをデフォルトから弄っているので、このパラメーターは信用しない方がいいです。要は見た目重視で色々調整してください。

見た目はこんな風になりましたf:id:wvigler:20220122090447p:plainこれでかなりクレイ感が出たので、UVの調整などをしてUE側に持っていきます。

 

ストップモーションアニメらしく見えるために

マテリアルやメッシュ以外でストップモーションアニメらしく見せるためにいくつかやったことがあります。

まず当然ですがFPSは落とします。だいたい12フレームあたりからストップモーションに見え始めて、6フレームあたりまでが限界な気がします。(これ以上やるとただのコマ飛び動画みたいに見えてしまう)実際のストップモーションアニメのFPSはまちまちらしく、おそらくLAIKAなどは24フレーム使用しています。

次にモーションブラーを切ります。これはPostProcessのRenderingFeatures>MotionBlur>Amountを0にすることで実現できます。f:id:wvigler:20220122092512p:plain

実際のストップモーションアニメでモーションブラーを付ける方法は無いわけではないんですが、まあ今回は論理より雰囲気重視ということで。

アニメーションで気を付けるべきことはなるべくポリゴン貫通は避けるということです。鍋をつかむ際など意図的なものは見逃されると思いますが、目立つ場所でバリバリポリゴン貫通させてしまうと折角マテリアルで付けたリアリティが台無しになってしまいます。疑似ストップモーションでは「そこに実際にあるように見せる」というのが非常に重要だと思います。

アニメーションの「ブレ」みたいなのも再現した方が当然雰囲気としては上がるんですが、やるとなるとめちゃくちゃ面倒臭いので今回はパスしました。

それからAnimationのInterpolationをLinearからStepにした方がいいんじゃないかと思いましたが、実際の映像を撮ってみたら、やらなくても特に変わらないのでやらなくなりました。

掴んだ後の鍋の動きとか、ゴミの動きとかは完全な手付けですね。こういうのを手付けでなく処理できるような上手い方法が発見されるといいんですが…アタッチするのも却って問題が起きるし…

 

・ライティング

GIはリアリティがぐっと増すので、こういった作品にはもってこいですね。今回GIとしてLumenを使用しています。正直使ってみたいが先行して使ってみました。レイトレと比較して長所も短所もあり、どっちが上というわけではないですが、結構苦労したのが…f:id:wvigler:20220122191057p:plain

f:id:wvigler:20220122191259p:plainこの光漏れノイズです。最初の方は壁や床を板ポリ一枚にしていたため、暗くなるとイルミネーションの如くとなり相当深刻でした。あとから壁を厚くすればかなり防げると気付きましたが、細かいところは残ってしまいますね。家具を壁にピッタリくっつければ更に少なくなるみたいなんですが、「そんな家具の置き方する人いないよなあ」とリアリティ重視の名のもとに切り捨ててしまいました。

それからもう一つ、Lumenは映像が動くと残像のようなノイズがその後に残ります。普通の映像作品ならそこまで気になるものではないんですが、ストップモーションで前のコマが残るのはかなり困りものです。

これについてはMovieRenderQueueを使用することである程度防ぐことができました。

 

・MovieRenderQueue

今回リアリティのある絵作りができているのはMovieRenderQueueの威力がかなり大きいです。一度これをやってみると、SequencerのMovieCaptureはあくまでプレビュー用だな、という認識になってしまいました。MovieRenderQueueについては↓

連番画像でしか出力できないのが弱点ですが、Captureに比較してかなり高品質な映像になります。僕の設定はpng出力でアンチエイリアスは以下のようになっています。

f:id:wvigler:20220122125334p:plain

Temporal Sample Countはあんまり上げすぎるとMotionBlurのような残像が出てしまうので少なくしています。あくまでほんの少しなので気にする必要ない気もするんですが…

 

・苦労したところなど

●キャラクターらしさを出そうとして主人公モデルを作成したが、全体的に横幅が広く、色々な所にぶつかりやすい。ぶつかるとポリゴン貫通が発生するのでまずいことになる。特に手首から下が前腕より長く、大きいため色んな所にぶつかる。ぶっちゃけアニメーション作りにくい。これが一番苦労したかも。

●コンロの火。確か「Kubo」に紙で火を表現した場面があったよなと思い、その記憶から同じことをしようとしたが、リアリティのある紙の動きが難しすぎて断念。(そもそもKuboの炎はコンロではないためそこにも無理があった)最終的に今の形に落ち着いたが、一番の悲劇はこんなに苦労した上にちゃんとうまく行ったのに画角の関係上、別にそんなに大きく映らないこと。f:id:wvigler:20220122192108p:plain一番大きく映ってこれ(涙)。ぜひよく見てやってください。

●投げるゴミ。BlenderでClothSimulationして作成したが、なんかそれっぽくならない。ゴミを潰す所から撮影しようとも思ったが、ClothSimulationした結果を連続でキャプチャーしてStaticMeshをフレームごとに入れ替える?正気か?という理由により妥協した。激しく動くものは手付けもなかなかうまく行かない。どこの地点で各コマをキャプチャーしてるのかいまいち分からないため、腕に埋まってしまったりとか。

●音。毎回苦労させられる。今回は音合わせとかしないからまだマシかも。でも虫のカサカサ音とかなかなか無い。

●気付かれましたか?f:id:wvigler:20220122190606p:plain「UE5」とベッドに描かれている。

 

・反省点

●別にそんな要素は無かったのに、余裕こいたせいで最終日かなりわちゃわちゃしていた。締切が近付かないと頑張れないタイプっているよね。

レンダリングミス2箇所。f:id:wvigler:20220122190343p:plainf:id:wvigler:20220122190852p:plain

●結局Sequencerがエディターを動かしている時に、どういう挙動をするのかいまいち分かってないことがちらほら。

●それなりに生活感のある(つまり汚い)部屋にしようとしたけれども、もっと色々置かないと生活感が出ない。プロップをもっと素早く作れるといいんだけど…。

●本物のクレイアニメみたいに物を自由に変形させたり、一旦キャラクターを別の形にしたりはできることはできるけど、手間がものすごく掛かってしまう(それこそ本物を撮った方が楽なほどに)。何か良い方法が見付かればいいんですが…

 

・最後に

映像編2連覇ということで、ご評価いただき本当にありがとうございます!今回は偶然年始あたりに大きく時間が作れたので、いい作品を作れたと思っております。もちろん全てが思い通りに行ったわけではないですが…

ともあれ、凄い作品が多い中で自分の作品が最優秀賞を取れたことはとても嬉しいです。

主催のヒストリア様、ならびに参加者、関係者の皆様に改めて御礼申し上げます。

みんなありがとう!これからもよろしくね!