】ナイアガラでリボンをねじる方法。作例として床屋のくるくるしてるアレを作る。この作例を作るのであればナイアガラでなくても作れそうだ。今回はあくまで「ナイアガラで使えるねじり」の表現方法ということで記事を書く。※あえてナイアガラで書いたほうが後々変形して複雑にするのが楽そうではある。ビームエミッタをベースに作る基本はStaticBeamのテンプレートから作ればよい。ビームが全くわからない人向けに記事を書いているので意味がわからなければまずそちらで。次のテクスチャを自作して3x3倍に配置しただけだ。必要あればテクスチャは自由に使ってもらえればと思うが、ここはお好みで変えてみよう。重要:リボンシェイプここでリボンシェイプの設定がとても重要(結構下の方にある)ねじり表現をするためにはデフォルトのPlane(板ポリ)だと視覚的に殆どねじりがわからない。Subdivisionsでポリゴンの解像度を設定する。大きくすれば良いというものではなく3のような非常に低い数値に設定したほうが「ねじっている感じ」が大きく出る。※値3だとねじった後ドリルの歯のようになる。Durationを長め(10秒)に設定。これを設定することでサインポールのスポーン間隔を明示する。ポールは1本だけなので1回スポーンすれば良い。設定しないと数秒で何本もポールが現れて、重なってしまう。EndのX=300に設定。ここでビームの終点を設定することで「長さと方向」が決定される。Count=100に設定したが5とか極端に少ない値でも問題なかった。少なくしすぎるとポリゴンがガタガタになったりするので微調整を心がける。ParticleLifetimeだけ設定してある。Beamこのモジュールは初心者解説に書いてあるとおり挿すだけでOK。Setupとセット使わないとエラー。Width今回の「ねじり」表現で重要な項目なので画像を張る。Wdthは単純にビームの幅を決定するもなので固定値でよい。Amountがとても重要で、例えばここになにか定数を一ついれただけだと上の状態で定数を動かしてもくるくる回るだけで1ミリも「ひねり」にならない。「全体を回転させただけ」となっている結果だ。いうことは各パーティクルごとで別々の角度をつけてやらないといけない。Indexというダイナミックインプットの出番である。Indexとはなんだろうか。Normalizedというのは「正規化された」という意味である。※意味がわからなければ読み飛ばす例えばパーティクルのIDが0~256まで生成されていたとして、この数字を0~1の範囲に収めるという処理をしている。83.2%(=0.832)になる。ここでは難しく考える必要はなく、生成されたパーティクル順に0~1の値を別々に付与していると理解できれば良い。Indexその名の通り各パーティクルのインデックスを正規化した値が出力される。Emitterでは配列(Index)の順番にパーティクルが並んでいるので、このインデックスの数字が増えるごとにちょっと角度を増やして回転してやれば「ねじり」になる。これは各パーティクルごとに違った値になるので、この値を角度に設定してやれば徐々に角度は増える=ねじりとなるわけ。実はまだ「ねじり」が入っただけで「回転」のアニメーションは付いていない。ここでは回転をアニメーションしていく。Position変数まずパラメータウィンドウから直接RibbonTwistで検索して出てきたものをパーティクル更新にドラッグしてモジュールに設定する。Widthで設定したデータが入っている。AB2つの値があるので、どちらか一つにもう一度RibbonTwistを入れて、もう片方に好きな値を入れる。処理をしているだけだ。これで回転しはじめる。なんで回転するの?上でTwistの値に定数を足しても「全体の回転になるだけ」と解説した。コレを利用してねじり後、定数を足し続けることで全体を回転を表現しているワケだ。パーティクル更新の中にこの処理が入っているので、フレームが更新されるごとに固定値がプラスされ続けるので回転がアニメーションになっている。※このモジュールをパーティクルのスポーンに移動してもエラーはないが、その場合は回転しなくる。videos.※冒頭と同じ作例。Indexをはじめ「ねじり」表現を文字にしてみると思ったより解説が難しかった。理解していただけたら幸いだ。今回ねじり+マテリアル(+おまけでパーティクル飛ばし)だけでもう一つ作例を作ったので貼っておく。派手な例ではないが、ねじり+マテリアルの透過を工夫してやれば様々な表現が可能になってくると思う。Engineこの記事をシェア著者Ultra-Noob謎の技術研究部部長。3DCG以外にもDTMやプログラミング等も研究する。謎の技術研究部とはプライバシーポリシーホーム(自動スクロールなし)ご意見、お問い合わせ。