FC2ブログ


てらりんぶろぐ



 超不定期でごめんなさい><><><><>   昔のテンプレに戻してみた^^^^^^^^^



スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

燃えー(゚∀゚*)

 紙が燃えるチュートリアルです。
 割と面倒です。
 画像が20枚あります。
 って明日からアメリカなのに何やってんですかね。
 アハハー。
 さて、まぁアメリカはいいんです、どうでも。

 紙が燃えるチュートリアルと言えば、どっかのサイトにタバコの火から紙が燃え上がるというのがあったと思います。(どこか忘れましたが)
 それをインスp(ry
 そこそこリアルだと思いますよ。

 まずはNurbsPlaneを用意します。
 割り方は適当に。(たしかこの時は30*30くらいにしたような)
 で、適当に炎をつけてやります。(私は面倒なんでCreateFireでやりましたが、リアル志向な方は自作してくださいな)
ばーん01
で、つけるとこんな感じに一気に燃え上がりますね。
これじゃ手抜きです。

 ひとまず全体が燃えるのは嫌なので、まずはEmitterのRateをテクスチャベースに設定します。
ばーん02
まずはRampTextureを作って、黒→白→黒に設定します。
次に、炎のEmitterのTextureEmissionAttributeを開き、TextureRateにHyperShadeからRampを中ボタンでD&Dします。
すると、Rampの白い部分から炎が出るわけです。(少し分かり辛いかもしれませんが)
なお、今回は見た目に分かりやすくなるようにColorに一時的にRampを割り当ててますが、これは必要ではありません。(Textureノードさえあれば無問題)

ばーん03
Rampの真中にFractalとかのテクスチャを割り当ててやります。
これは後々紙の燃え方に影響してきますので、place2dなんかも利用しつつ、上手く大きさを調整してください。
次に、Rampのエントリーのポジションをガガーっと寄せてやると、炎が局所的に現れるようになります。

 さて、この寄せられたRampのエントリーポジションを動かすことで炎がゆっくりと燃えながら移動していく表現を行うのですが、どれだけ寄せてもこのままじゃ最初から炎が出ていることになってしまいます。
 なので、Rampのplace2dTextureでRampを引き伸ばしてやります。
ばーん04
Repeatは繰り返し回数を表しますが、小数点だと繰り返し回数と言うよりは引き伸ばし率に近くなります。
ポジションが0.9~0.7の場合、Repeatを0.6にすればRampのグラデーション部分は隠れます。

 さて、次にエントリーポジションにアニメをつけてやります。
 ここはMELでぱぱーっとやっちゃいましょう。

if(frame==0)
fireMap.colorEntryList[0].position = 0.7;
fireMap.colorEntryList[0].position -= 0.001;
if(frame==0)
fireMap.colorEntryList[1].position = 0.8;
fireMap.colorEntryList[1].position -= 0.001;
if(frame==0)
fireMap.colorEntryList[2].position = 0.9;
fireMap.colorEntryList[2].position -= 0.001;


 初期値を設定して、あとは1Fremeごとにポジションを0.001下げてるだけ。
 で、これを入力してやるとなんと炎が移動していくわけですね。
(当然ですが、再生は0フレームからやってください。やる気に溢れてる人は、フレーム数から直接数値を出すMELにすると途中再生とか便利かもしれませんね)

 さて、紙が燃えている以上、燃えた部分は消えていかなきゃいけません。
ばーん05
RampをDuplicateInputConnectionしてTransparencyにマッピングしてやりましょう。
なお、コピーされたRampの一番上の色は白にしてやります。(紙が消えていくので)
MELも一緒にコピーしてやりましょう。
左のやつはちょっと手順が違うので、ポジションとか変ですが。

ばーん06
レンダリングするとこうなります。
徐々に消えてってるけど、明らかに変ですね。
紙なのに半透明とか意味分かりません。
(ちなみに、Colorに割り当てていたRampのコネクションは切りました)

 さて、紙である以上、やっぱり燃えてるところはすっぱりと切れてほしいです。
 というわけで、Rampとマテリアルの間にContrastUtilityを入れてやります。
ばーん07
コントラストってこんな感じ。
なんか赤線の位置がちょっと変ですけど。
RampをContrastのVarueにコネクトして、ContrastをマテリアルのTPにコネクト。
Contrastの値をいじると境目がくっきりします。
レンダリング結果も紙が燃えたっぽいですね。

ばーん08
次に、カラーを調整していきます。
それにあたって、ひとまずチェッカーを元の紙の模様として割り当ててみました。(もちろん、自作Texを用意できる方はそれを貼ってください)
あと、現在のノード関連図。
まだまだ大したことはありません。

 さて、燃えてる紙というのは先のほうが燃える前に焦げます。
 イメージが湧かない人はそこらへんで新聞紙でも燃やしてください。(放火と間違われないように注意してください)
 ちなみに、私はキャンプ生活長いのでここらへんのイメージはばっちりです。(たぶん)
 ひとまず、チェッカーを一旦カラーと切って、間にLayeredTextureを入れます。
 で、チェッカーの下に黒いレイヤーを作ります。(これが焦げですね)
 そして、TP用のランプから新しくContrast→Reverse→RGBtoLuminanceとノードを繋げて、それをチェッカーのレイヤーのアルファとして使います。
ばーん09
一気にややこしくなってきましたが、やってることは案外単純です。
まず、紙の透明部分と焦げの境界部分をずらすためにContrast値やBiasをいじります。(Biasを弄ると、コントラストの境界域がずれます)
 次に、Reverseで白黒反転させ、燃えてる側が透明になるようにします。(MayaはマテリアルのTPは白が透明、テクスチャのアルファは黒が透明という謎仕様です)
 次に、Rampの値はRGBの三次元なので、アルファ用の一次元に替えてやるためにRGBtoLuminanceを入れてやります。(これも謎仕様ですね)
で、それをチェッカーのアルファにしてやると、紙の切れ目と少しずれて焦げ目の黒が出てくるわけです。

 さて、紙は非常に燃えやすいため、火がついた瞬間にもう灰になってます。
 つまり、燃えてる部分は白いんですね。
 それを焦げ目と同じ手順で表現します。
ばーん10
さっきと同じ手順で、またコントラストを少しずらしたアルファを今度は黒(焦げ)のアルファにコネクトしてやります。
すると、紙の先端が白くなるわけですね。(ハードウェア上では分かりにくいので、コントラストの設定にはIPRを使うことをオススメします)

ばーん11
レンダリングするとだいぶそれっぽくなったのが分かります。
ちなみに、背景は分かりやすさ優先で青くしました。
別に深い意味はありません。

 さて、紙というのは燃えるとき赤く発光します。
 細い炎のラインが燃えてるエッジに出るのですね。
 それを表現するためにIncandiscenceを使います。
ばーん12
新しくLayeredTextureを作り、黒・赤・黒のレイヤーを作ります。(赤は便宜的に位置を確かめるためのものなので、色調整は特に必要ありません)
Incandiscenceは透明部分も自己発光するため、紙のなくなった部分には黒を置く必要があります。
トップの黒のアルファに、マテリアルのTPに使ったコントラストにReverseとRGBtoLuminanceを繋げたものを割り当てることで、透明部分が発光することを防ぎます。
赤(発光部分)のアルファにはカラーのLayeredの焦げ目に貼ったアルファをそのまま流用してやります。(つまり、発光域はカラーの灰部分と同じです)

 Incandiscenceの赤にソリッドフラクタルを割り当てて、色を調整してやります。
ばーん13
レンダリングするとこんな感じ。
いかにも紙が燃えてるっぽいでしょう。


ばーん14
最終的なコネクション。
煩雑さを避けるために、マテリアルと直接関係ないノードは一時的に消してあります。
④の(Offset)というのは(RepeatV)のミスですねw
ややこしそうですが、ちゃんと手順を理解しながらやれば大丈夫でしょう。

ばーん15
特に意味のない図。
こういうの一度作ってみたかったんですよー(・∀・)

 さて、山場は越えました。
 しかし、こんなひとまず燃えただけって感じで満足してちゃだめです。
 紙が燃えるときってのはうねるんですよー。
 って紙燃え論議みたいになってますけど。
 ひとまず、お決まりのSoftbodySpringで攻めてみましょう。
ばーん16
今回は普通に本体をSoftにしてやればいいです。
追従の必要がないですから。
Springで引っ張るので、Weightも0でいいです。

 Springは特に書くことないので省略。
 前と一緒です。
 手抜きじゃないよ!!1!1!!!11
ばーん17
Springがついたら、Turbulenceをかけてやります。
ひとまずアトリビュートは参考値程度に。
Attenuationに値が入ってるのとVolumeShape使ってるのがポイントでしょうか。
並行に燃えていくので範囲がいるわけですね。
ちなみに、RampのTypeを斜めとかにしている場合はVolumeShapeを使わなくてもいいかもしれません。
まぁ、ここらへんは好み。

ばーん18
タービュランスを大体設定したらGravityも同じ感じで設定して、タービュランスにPointConstraintしてやります。
ちなみに、燃えてるあたりは空気に持ち上げられるので、方向はY+です。
Magnitudeは小さめでいいです。

ばーん19
タービュランスにキーを打って炎の移動とタイミングが合うように動かしてやりましょう。
MEL組んでできないこともなさそうですが、旗の大きさやRampの大きさやポジションの値を取って計算するってのが面倒くさくて断念。
まぁ、こんなん適当でいいですよ。

ばーん20
上手くタイミングが合うとこんな感じになるわけです。
中々いいと思いますよ。
自画自賛。

 というわけで、かなり面倒な作例です。
 この作例を作ること自体がすごく面倒でした。
 50枚くらいある画像をひたすら切って貼っての繰り返し。
 たまらんよ。
 しかし、中々面白いものができたんじゃないかなーと思います。
 マヤ・・・恐ろしい子!!!って感じ。
スポンサーサイト

テーマ:3DCG - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

http://westside.blog21.fc2.com/tb.php/147-be2fedcb
この記事にトラックバックする(FC2ブログユーザー)

 | HOME | 

FC2Ad

プロフィール

おなまえ:てらりん
うまれたひ:秘密
せいべつ:攻め
しょくぎょう:ぐらひっか

人間ってのは気を抜くと漫然と生きてしまう、ということをブログで痛感。
気付くと放置してるもんなー。
あれやるこれやると言っておきながら、何もやってないね。

リンク

このブログをリンクに追加する

うさちゅん

 

ブロとも申請フォーム

この人とブロともになる

ぶろぐないけんさく

カレンダー

11 | 2018/12 | 01
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

最近の記事

最近のコメント

最近のトラックバック

カテゴリー

イロイロ☆


人気blogランキングへ



・BLOOG-RANKING【投票】

 

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。