妹でもわかるUnrealEngine4

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

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

UE4のパーティクル研究(8) Beamの面白い使い方を考える

f:id:una_unagi:20171222234705p:plain

「Beamエミッタで作るパーティクルのテクスチャがどういう仕組みかわからないけど、テクスチャを変更できるわけだから、ひょっとしてこういう鎖の表示にも使えるのかなと思ってためしてみた。これはAsepriteってソフトで作ったけど、Kritaとかでもいい。ルールする感じになってれば」

妹「そういうのは2Dゲーム用に前に作ったことがある」

f:id:una_unagi:20171222234945p:plain

「その絵で適当なマテリアルを作って……」

f:id:una_unagi:20171222234954p:plain

「ビーム用のテクスチャに設定するとこうなる」

妹「だいぶ……伸びてるね。これじゃ鎖にならないのでは」

「こういう風になってるとは思ってなかった。直線状のビームならこれでいいんだけど、模様付きの場合は工夫が必要」

f:id:una_unagi:20171222235412p:plain

「Beamモジュールの中に、テクスチャの繰り返し回数を設定する項目がある。距離でやるか回数指定か。距離の方が融通は効きそうだけど」

f:id:una_unagi:20171222235427p:plain

「そして根本的に角度が間違ってたので90度傾けたもの。横軸がパーティクルの進行方向になるようにテクスチャを作らないとダメらしいことがわかった。あとエフェクト用ならライト無しで光るUnLitの方が自然な気が」

f:id:una_unagi:20171223000130p:plain

「適当に曲げても、ゆがませた四辺形をつなぎ合わせた感じで、わりと自然につながる」

UE4のパーティクル研究(7) Distributionによる位置設定方法いろいろ

f:id:una_unagi:20171221232238p:plain

「直線ビームの終点を固定じゃなくて、ある範囲内でのランダムになるようにしてみた。微妙にビームがブレる」

妹「本数も増えたような」

「それは元々減らしてなかった。単にNoiseを無効化したから、ピッタリ同じ位置に重なっててわかんなかっただけ」

f:id:una_unagi:20171221234127p:plain
f:id:una_unagi:20171221234140p:plain

「SourceにしてもTargetにしても、位置を指定するところには、位置だけじゃなく、位置を設定する方法の設定から出来るようになってる。Distributionという名前になってるところは全部そうみたい」

妹「Distributionは何用語?」

「普通の英語かなあ。分布という意味で使ってるっぽい」

Distribution Vector Constant  XYZで1点を指定
Distribution Vector Constant Curve  不明
Distribution Vector Particle Parameter  ブループリントなどから変更できるパラメータ
Distribution Vector Uniform  XYZそれぞれにminとmaxを設定して、その範囲内でランダムにばらける
Distribution Vector Uniform Curve  不明

「だいたいこういう風になってることがわかった」

妹「不明って書いてあるから」

「よくわからないことがわかった。名前からして何か曲線的に設定してるんだとは思うんだけど。とりあえずConstantとUniformで通常の用途には間に合いそう」

妹「ブループリントなどから変更できるというのは」

「変更できるらしい。まだ試してはないんだけど、こういう記事が見つかった」

qiita.com

「敵に向かってビームを飛ばす時とかはTargetをその都度設定しないとおかしいから、そのへんの設定ができる。同じエフェクトのパラメータを少しずつ変えて使いまわすというのも考えられる」

UE4のパーティクル研究(6) Beamエミッタをさらに研究

f:id:una_unagi:20171220224059p:plain

「Beamエミッタ用の、Noiseというところの設定で、ギザギザが生まれていることがわかった。これの低周波ノイズというのを無効化すると、ビリビリしなくなる」

妹「健康によさそうな雰囲気をかもしだしてる」

「実際何が低周波なのかも含めてよくわかってないんだけど、このへんを色々するとギザギザに変化が生まれる。ノイズを有効にした状態で、NoiseRangeのMinとMaxの差を小さくすれば、稲妻だけどもっと角度がゆるやかになったりする」

f:id:una_unagi:20171220224436p:plain

「SourceとTargetは、ビームの始点と終点になる。サンプルのやつは、Xが+200の位置から-200の位置に向かうという設定だから、中心点をまたぐようにビームが出てる」

妹「このビームが曲がってるのはなんで?」

「Sourceの中のSourceTanget、Targetの中のTargetTangetの設定で曲がることはわかった。各をTangetを0にすればビームは直進する」

妹「Tangentというやつの設定はどうすればいいの?」

「それはわからない。わからないけど、XYZそれぞれの数字を大きくすると、その方向にぐっと飛び出す感じになる。丸くするにはSourceとTargetで逆の数をいれるといい。サンプルだとZに40と-40が入ってるから、Z方向に緩やかに曲がってる」

f:id:una_unagi:20171220224957p:plain

「SourceとTargetでは、なんというか、向いてる方向が逆になってて、同じ数字を入れるとこういう風にねじれる」

妹「綺麗な半円にしたい場合はどうすれば」

「たぶんSourceとTargetの間の長さに応じて、Tangetを調整しないといけないと思うんだけど、計算式がわからないので、今のところ目分量」

妹「適当だ……」

「あと、普通は相対座標だから、パーティクルのアクターやコンポーネントとの位置関係で指定するけど、Absoluteっていうのにチェックを入れると絶対座標になるから、指定したアクターに向けてビームを撃つというのも出来そう」