妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

ディスプレイが複数あると動画チュートリアルが見やすい

「今日UE4の放送をYoutubeでやってて、Paragonのアセットの使い方とか、アニメーションの合成のやり方とかやってた」

www.youtube.com
たぶんアーカイブがここで配信されるはず

「それはそれとして、やっぱり画面が2つあると便利だね。片方でこういう動画を見ながら、もう片方で試したり検索したりできるし」

妹「それなに?」

「液タブを買った」

妹「もってなかったっけ?」

「妹に貸したら戻ってこなかったから」

妹「そうなんだ。お気の毒に……」

「液タブはペンの筆圧とかを感知出来るけど、液晶画面でもあるので、絵を描かない時には追加のディスプレイとして使える。なので2画面あるのと同じ状態になる」

f:id:una_unagi:20180517222221p:plain

「最近動画チュートリアルが増えてきたけど、切り替えながらやるとどうしても効率悪い。スマホでもやってみたけど、どうしても文字ちっちゃくて細かいとこ読めないから。画面の隅っこで再生するのとあまり変わらない感じ」

妹「わたしが使ってるスマホみたいなタブレットは?」

スマホよりはずっと大きいけど、それでも10インチぐらいだからちょっと厳しいかも。というか妹は今液タブをもってるはずでは? あれは13.3インチだったはず」

妹「ずっと出してるとキーボード置くとこなくて邪魔になるから、絵を描かない時は外して横に置いてるんだよ」

「そのデスクは20年ぐらい前の型だから、ディスプレイの大きさも17インチぐらいが限界で、それを複数置くとかもまったく想定してないからね……」

妹「今はそんな想定してるの!?」

「してるのもある。もちろん省スペース型だとそんな余裕はないんだけど。少なくともパソコンが横置きで、ディスプレイがブラウン管という想定のはもう売ってないね……」

フォリッジで側面にも草を生やす

f:id:una_unagi:20180515232544p:plain

「本当は全然違う話を書こうとしてたというか、このマテリアルについて調べて書こうとしてたんだけど」

3dnchu.com

「なんか公開停止になってて、動画も消えちゃってるみたいで」

※5/18 追記 現在は正常に公開されてます

妹「それはまたどうしちゃったんだろう?」

「よくわかんないけど、中身のブループリントに無効なノードがあったりしたから、そこらへんが気になったけど、それだけなら動画まで消す必要はなさそうだし。とりあえず今日はそれを調べてる過程でフォリッジの仕組みが少しわかった」

f:id:una_unagi:20180515232822p:plain

「普通はフォリッジ機能でペイントできるの、上を向いたポリゴンだけみたいで、横とか下とかにはおけないんだけど、こうやってスタティックメッシュを回転させると、そのままフォリッジも回転することがわかった。メッシュを移動させた時にもついてくる」

f:id:una_unagi:20180515232941p:plain

「そうやって回転させていくと、最終的に全面的に草まみれにすることができた。草をいっぱい増やすことができる」

妹「なんで最初から横も塗れるようになってないんだろ?」

「わかんない。なんか別のとこに設定があるのかもしれないけど。真上じゃなくてもいいけど、かなり上を向いてないと駄目な感じが」

f:id:una_unagi:20180515233347p:plain

「ちょっとデコボコしたとこをが上を向いてたりすると、そこには草が生える。でも駄目なとこには何度やっても草が生えない。でも角度を変えればOKだった」

Rotatorに角度を足し算する② それでも強引に足し算する方法

f:id:una_unagi:20180510222637g:plain

imoue.hatenablog.com
imoue.hatenablog.com
昨日までの

「昨日はCombine Rotationsノードを使うことで、角度をちゃんと変化させる方法をやったけど、実はもう少しちゃんとしてない方法もある」

f:id:una_unagi:20180511233125p:plain

「こういう風にすると、普通に角度を足しても回転させることができる」

妹「これは何が違うの?」

「いったん現在の角度をRotator変数に保存して、それをSetActorRotationする。次のフレームも、GETする時は必ず変数からで、GetActorRotationは使わないようにすると、これはこれでちゃんと回転する。一昨日にやった、ロールとヨーが反転しちゃう問題は、どの時点で発生してるかっていうのが問題で」

妹「GetActorRotationした時?」

「実際にはSetActorRotationした時点かもしれないけど、どちらにしてもGetActorRotationした時点でそうなってることがわかる。そこで角度の正規化が行われて、ロールとかが反転しちゃう。でもRotator変数に保存しただけなら元の数字が残ってる。だから反転もしないし、720.0とか設定しても0に戻らない。そのままの数字。丁度エディタで角度のとこに数字を入れたのと同じような状態になってるはず」

妹「でも昨日のやつの方がラクチンのような」

「まあそうなんだけど、こういうやり方が必要なケースもあるかもしれない。角度の数字がプレイヤー側にも表示されてる場合とか。勝手に反転されたら気味悪いだろうし。あと変数はRotatorじゃなくVectorにした方が計算は楽。足し算ノードとか使えるから。SetActorRotationの時にそのVectorをつなげば自動で変換ノード出るし」

妹「Rotatorは足し算出来ないんだ……でもそうするとVectorとの違いっていったい」

「データ的にはたぶん同じ物なんだけど、これは角度のやつってしといた方が、わかりやすいんじゃないかな。うっかり違うのにつないだ場合も変換ノードで気づくし。足し算をさせないようにというのもその一環で」

妹「普通にfloatに分解して足してたから全然気付かなかった」