株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • プロシージャルでライトニング(稲妻)

プロシージャルでライトニング(稲妻)

2013/5/20

Tag: ,,

[あいさつ]

半年ぶりです。crowdTDの 護守(ごのかみ) です。
早いもので5月ですね~。
新入生・新入社員の皆々様は新しい環境に慣れましたでしょうかね?
思えば一年の1/3が過ぎているんですよね…
以前、開発の方との雑談で、
「一年が100%から減っていく時計があったら面白い」とか話してたんですが、
今思うと社会人にとっては鬱要素にしかならなそうですよね(´・ཀ・`)-3

はい、雑談はここまでで本題に入りましょう。

まず最初に謝っておきます。ごめんなさい。
デザイナー側に比重を置いた記事を目指してたんですが、
技術寄りになってしまいました。
実際に作って使えるようにすればよかったんですが
そこまではできなかったです…すいません…

今回は『プロシージャルシリーズ第二弾』と勝手に称して
エフェクトについて書いていきます。

主題としてはライトニング作成ツールの提案です。
光速の異名を持ち重力を自在に操る方ではないのであしからず。
 
 
 

[全体のフロー]

個人的になるべく手間を少なくツールは作りたいです。
なのであるものはどんどん活用していきます。

mayaには標準でライトニングツールがあります。
メニューこれ

かシェルフこれ

オブジェクトを二つ選択して実行するとライトニングができます。
しかし、これは形状がライトニングっぽくありません。
アニメーションとかリグシステム的には
流用できそうですが、単体ではあまりよくない感じです。

ということは、形状だけこちらで作れば何とかなりそうってことですね。
形状作成は社内からMaya標準のLightingでは不十分との要望があり、
自社で形状作成ができるツールを既に開発しておりました。
そこでこの二つを

ドッキング!

でけた!

ここでのドッキングというのをわかりやすく言うと
mayaツール → リグつきの骨
形状ツール → ハイポリモデル
といった感じです。

ですが、この方法はあくまで弊社のように形状作成ツールがあった場合。
普通は無ければ作らなければなりません。
というわけで次の項で形状作成についてのアルゴリズムを考えてみました。
 
 
 

[考察してみました]

稲妻の形ってどんな数式使えばいいんでしょうか?

社内ツールを解読すれば一発なんですが、如何せんブラックボックス的に
なってしまっていたため一から考えてみました。

なんとなくの知識としてあるのは稲妻はフラクタル形状ということです。
ということは、フラクタル形状を式にして実装すれば終わり、
ということになります。

では具体的にどんな式になるのかなぁと調べてみました。

結果… ありませんでした。

調べたりないのかなと思ってL-system
とかも
調べていたんですが、そのときこんな文章に出会いました。


————————————————————————————————————————————
既知の問題
L-system に関する問題は数多く存在するが、
その最たるものは L-system を逆に辿る事が困難であるというものである。
具体的には、ある構造が示された時に、その構造を生成するパラメータや置換規則を見つける事が難しい。
これは自然物のような複雑な(反復回数の多い)過程を経て形成された図形に顕著である。
————————————————————————————————————————————

wikipedia抜粋
http://ja.wikipedia.org/wiki/L-system
 

なるほど。あるわけないですよね…形状から数式求められないんですからね…

ならば、他のところで作られている稲妻とかはどんな数式でやられているのでしょうか?

アルゴリズムとして用いられているのは大きく2種類あるようです。
・電界を考慮した生成(物理法則を用いた生成)
・ランダム要素など代替要素を用いた生成(フラクタルを用いたものやベクトル飛ばしていくものとか)

一つ目はかなりリアルなものになるようですが、なにぶん計算負荷が高すぎます。
それに私の頭じゃ付いていけそうもありません。
というわけで二つ目を採用です。
裏づけはないのですが、ゲームエンジンとかでも下の方を採用しているっぽいです。
ただ、二つ目は稲妻の形状にならないこともあるそうです。
このデメリットは、この際多少目をつぶります。
 
 
 

[アルゴリズムこんなんどうでしょうか?]

基本はコッホ曲線のアルゴリズムになります。
その中にランダムな要素を入れていきます。
コッホ曲線について書いていくと長くなりますのであえて書きません。
wikipediaなど参照してください。

で、後は分割数・分岐頻度の割合・子孫数の入力ができるようにして、
分岐後の終点をコントロールできるようになれば完璧ですね。
 
 
 

[おさらい]

mayaライトニングツールで作成したカーブ
 ↓
形状を作成したカーブ
 ↓
カーブからメッシュを作成

でライトニング作成は完了です。
カーブからのメッシュ作成は、
カーブで円を作ってナーブスのエクストルードを行えばできます。

形状についてもツールを使わずとも、
実際にカーブで基本形状を作ってしまって
それを利用することもできますよ。

ちなみに社内で作ってみたライトニングはこんな感じになりました。

時間がなくて調整適当ですが、しっかり調整すれば下の画像くらいにはなるはずです。

 
 
 

[おわりに]

今回はなんとも中途半端になって申し訳ない限りです。
どうしてもツールで欲しいという方は
ツール書ける人にこのページ見せて相談してみてください。
よければツール化、
あわよくばもっといいソリューションを提供してくれるでしょう。

こちらでも時間がとれればツール化の挑戦をしてみます(•̀ω •́ )

プロシージャルでエフェクトまで作れちゃえばもう怖いものなしですしね~。

それでは今回はこのへんで(:3ノシ )ヘ

Pocket

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*