そうだ、ゲームを作ろう

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

ぷちコン映像編振り返り

この度ヒストリア様主催のぷちコン映像編に参加させていただきました。

historia.co.jp

(僕の環境だとサムネイルが表示されないんですが、ちゃんとアップロードできてるのかな?)

この記事はその過程で工夫したこと、引っ掛かったこと、反省すべきことなどをまとめようというものです。

 

以下お品書きです。

・月入りの夜空の作り方

・Matineeを使うことになった話

・CineCam付きActor

・詰め込みすぎ

・自作で効果音を作ろうとしたけれど…

・半透明とFOD問題がおきてるみたいですけど…

・Megascansについて

・完成させることができてよかった

・最後に

 

それでは早速いきましょう。まずは月入りの夜空の作り方について。

この映像で天球として使用しているのはBP_SkySphereを改造したもののみです。今は対応していますが、当時「ANIMAL VALIETY PACK」がUE4.24に対応していなかったため、4.24以降の機能であるSkyAtmosphereは使用しておりません。

BP_SkySphereもそれなりに高機能な天球ではありますが、弄ってみれば分かる通りそのままでは月を浮かべることができないという弱点があります。

なのでこれを改造します。BP_SkySphereのまま弄ると色々面倒なのでEngineContents内にあるBP_SkySphereとそれから参照元であるM_Sky_Panning_Clouds2をDuplicateしてContentの方に持っていきます。

M_Sky_Panning_Clouds2からMaterialInstanceを作成し、ConstructionScript内にあるMaterial参照部分に突っ込みます。

f:id:wvigler:20200114013709p:plain

MaterialInstanceのパラメーターを調整します。今回はこんな感じの数値にしてみました。

f:id:wvigler:20200114013944p:plain

SunRadiusは少し月が小さめと感じたため調整しています。それからDirectionalLightのLightColorをOverallColorと同じ色に変更するのも忘れないようにしましょう。色に合わせてSkyLightなど他のパラメーターも微調整しましょう。

さて、とりあえず夜空ができましたが、このままでは星がありません。これは月に見えているのは実際には天球内では「太陽」であり、今の時間は色味を調整しただけの「昼」にすぎないからです。なのでこれを操作するためにM_SkyPanning_Clouds2内を見ていきますと、SkyColorsというコメントブロック内にStarBrightnessにSunHeightを掛けている部分があります。

f:id:wvigler:20200114015827p:plain

この接続を切って常に1を掛けるようにすればいつでも強制的に星を表示させることができるようになります。これで月が入った夜空を表示させることができるようになります。(ただしこの方法だと満月のみですが)

 

・Matineeを使うことになった話

実はこのムービー、Sequencerからキャプチャしているのではなく、出力にMatineeを経由しています。なぜならUE4.23ではSequencerから直接キャプチャするとPlayRateTrackが効かなくなるという欠陥があったからです。要はスローモーションなどを実装することができません。結局それを使うためにはMatineeを経由させる必要があり、しかしながら4.23だとMatineeは既に非推奨なので、しばしば言うことを聞いてくれなくて困りました。妙なノイズが入ってしまったり、なぜかUMGの制御が上手くいかなかったり…

今試してみたところUE4.24.1では問題ないみたいです(ただし名前がTimeDilationTrackに変わっています)。みんな、最新版を使おうぜ!

 

・CineCam付きActor

カラスとテントウムシチェイスシーンではテントウムシのActorにSpringArmとCineCameraをくっつけて撮影しています。これがかなり良くて、とてもダイナミックなシーンが撮れました。

f:id:wvigler:20200114030446p:plain

SpringArmのTransformを操作することで、カメラをずらしたり回転させることもできます。ただ今回Meshの子コンポーネントとして実装してしまったため、Meshを回転させるとカメラが動いてしまうという問題が起きてしまいました。とはいえ一緒に動かしたい場面もあるのでRootComponentを作成してそこに紐付けしたものを別に用意するといいかもしれません。Sequencerがまたゴミゴミするかも知れませんが…

 

・詰め込みすぎ

さてここからはちょっと反省っぽくなります。動画を見ていただければすぐに分かるのですが、1分という時間にまとめるには無理がある内容になっています。起きていることも速すぎて何しているのが分かりにくい、いや分からない。制作のある時点ではもっと長い内容になる予定でした。まあ正直これは経験不足ですね。1分という時間がどれぐらいの内容を詰め込める長さか、というのが自分の中でイメージできていなかったのでしょう。もう一つの原因としてSequencerで操作し続けていると時間感覚がおかしくなっていくというのがあります。制作している本人は既に内容が分かっている上に、1コマ1コマ見ることができるため、人にもよると思いますがどうしても色々速くなりがちです。次はもっと余裕を持った映像にしたいですね。

 

・自作で効果音を作ろうとしたけれど…

音に関しての問題です。当初この動画には風切り音のような効果音を付けるつもりでした。しかし風切り音の素材が見つからない…フリー素材やMarketplaceを覗いてみましたが結局あまり合う音が見つけられませんでした。ならもうしょうがないなと風立ちぬばりに自分の「吹く」音を録音し、それを加工してなんとかしてやろうとしました。

結果全然駄目でした。

まずかなり静かな環境でも何かしらノイズが乗ってしまいます。加工で何とかしようにも、「ノイズはどんなに加工してもノイズ」という事実しか分かりませんでした。あと普通に"息"っぽいです。風切り音に全然聞こえません。これもいくら加工しても消すことはできませんでした。音質も問題で、動画のトーンと合わないです。

結果としてカラスの鳴き声だけが乗るという寂しい結果となってしまいました(鳴き声がトリガーになっている演出があるので削るわけにいかなかった)。

BGMに関しても上手くできたとは全く思っていません。というかコンポジションを考えるならBGMは最初の方に決めるべきなんですよね。完全に後付けなので、シーンと合ってないこと甚だしいです。

 

・半透明とDoF問題がおきてるみたいですけど…

うるさいな!俺も気にしないようにしてるんだよ!

テントウムシのアセットの羽根の部分に半透明マテリアルが使用されており、DoFによる演出も多用しているため、これによって半透明マテリアルとDoFとの問題が起きています。具体的に言うとピントがテントウムシに合っている間は羽根はぼけ、ピントが背景に合うと羽根にフォーカスするという訳のわからない状態になっています。そしてこれは(詳しいことは省きますが)UE4側の仕様です

ぶっちゃけこれ解決方法とかあるんでしょうか?色々調べて解決法を探ってみましたが、「今回は使えないよなあ」と感じるものばかりで駄目でした。大体そんなインスタントに解決するような問題ならEpicが既に実装しているでしょう。

まあ、ほら…羽根が動くスピードが速いから、みんな気付かないでしょ、きっと…

 

・Megascansについて

Megascansはとても凄いアセットなのですが、結構使い方を選ぶ必要はあるなと感じました。まずいくら高解像度だからといってメッシュに対して限界まで接写するような使い方はしない方がいいです。テクスチャは問題ないのですが、それよりも先にポリゴンの粗さが目に付きます。それからMaterialInstanceのパラメーターを調整しないとリアリティがちゃんと出ません。特にNormalIntencityとRoughnessです。今回、草系のアセットならNormalIntencityは2~3、Roughnessは0.4程度にしています。

 

・完成させることができてよかった

しかしまあとにかく完成させることできて本当に良かったなあ、と。なんでも完成させるということにはエネルギーが必要で、想定外のことでつまづいたり作り直したりしていると「これってもしかしてもう完成させられないんじゃなかろうか?」という漠然とした不安に襲われます。

そんな時はとにかく誤魔化しでもなんでもいいんで先に進むことがいいんじゃないかなあ、と。多分どんな達人でも「ここをこうすればもっと良かったのになあ…」と思いながら進んでいくんじゃないですかね?勝手な推測ですけど。

 

・最後に

誰かLandscapeMaterialの作り方教えて下さい!いや真面目に今回アセット(Megascansですらない)から取ってくっつけただけだなんで…