ヒトダマをビルボード手法で作ってみました
まだ、ゲーム機が今ほどスペックが高くなかった頃、3D表現に例えば「木」をいっぱい配置するとき、ポリゴン数の節約のため、1枚にの板ポリゴンに1枚の木の画像を貼って、常にカメラを向いておき、カメラが木の横に動いたとしても、ペラペラの木だってバレない様に、木自身のY軸(縦の軸)を回転させる手法が取られていた話は有名で、「ビルボード」なんて呼ばれてたらしいです。
そんなビルボードの手法、使ってみたくてと思いつつ、木を使うのもオモシロくないし、何か無いかな?って何気なくひらめいたのがヒトダマ。
炎って形がとくに決まってないから、ビルボードを使うにはもってこいだ!と思ったんですね。
さて、炎をどう作るか・・・最近乾燥してるから家の中で炎は燃やしたくないなあ〜火事は恐いし。
そうだ、ソフトを使おう、確かAppleのタイトルムービー作成ソフト「LiveType」を久しぶりに使ってみよう。
LiveTypeには炎が入っていたはず。というわけで
メディアブラウザ>オブジェクト>パイロ>彗星にしてみる、なるほど、ヒトダマにも見えてきた。
アルファチャンネルを持ってるからそれごとmov形式にて書き出しました。
そのままFlash Video Encoder(最近名前が変わったよね)に持ってきてflvにエンコード。
そのまま同じ階層でいい、置いておこう。 名前は「hitodama.flv」。
さて、背景どうしよっかな?と考えたあげく、背景は暗い方がフンイキ出ますね。
そんなわけで天空のテクスチャを作ることにした、んだけど、球体にテクスチャを貼ると、そのままじゃ極座標に行くほど変に画像が歪むんです。QTVRとか作ってる人って上手ですね、そのあたり。
で、僕はそんなことまで出来ないので、自然景観ソフト「Vue」を使ってみることにしました、ありがたいことに、「空を書き出す」コマンドが用意されている。

月夜、いい感じです、またこのサムネイルがフンイキを醸し出しています。
でも残念なことに空の書き出しだけではVue5 infineteのバージョンだと、本当に空だけしか書き出せないです、何か方法ないかな?天空を自分で作る方法もあるけど、かなり熟練しないと厳しいので、また練習しとこう。

そのままFlash Video Encoder(最近名前が変わったよね)に持ってきてflvにエンコード。
そのまま同じ階層でいい、置いておこう。 名前は「hitodama.flv」。
さて、背景どうしよっかな?と考えたあげく、背景は暗い方がフンイキ出ますね。
そんなわけで天空のテクスチャを作ることにした、んだけど、球体にテクスチャを貼ると、そのままじゃ極座標に行くほど変に画像が歪むんです。QTVRとか作ってる人って上手ですね、そのあたり。
で、僕はそんなことまで出来ないので、自然景観ソフト「Vue」を使ってみることにしました、ありがたいことに、「空を書き出す」コマンドが用意されている。
月夜、いい感じです、またこのサムネイルがフンイキを醸し出しています。
でも残念なことに空の書き出しだけではVue5 infineteのバージョンだと、本当に空だけしか書き出せないです、何か方法ないかな?天空を自分で作る方法もあるけど、かなり熟練しないと厳しいので、また練習しとこう。
素材の準備ができたところでFlashへ。
今回はVideoStreamMaterialというPapervision3Dのクラスを使います、そうなんです、ビデオを扱うからですね。
普通、flvを扱うときって結構面倒です、少なくともVideoクラス、NetConnectionクラス、NetStreamクラスを使います、NetStreamは再生とか「今何秒?」とかを扱う役目で、再生したあとこれが制御役になるのです。
flvを読み込み、設定が終わったらVideoStreamMaterialへVideoとNetStreamを引数に渡すんですが・・・何だこりゃ?
アルファチャンネルが効いてない。
何か設定があるのか、と思い、まずはコンストラクタ、第三引数はprecise:Boolean = falseとなっていたので、trueにしても変わらず。
ヘルプを見ると気になるプロパティ「movieTransparent」が、継承元はMovieMaterial。
なにをいじってもダメでした。
GoogleCode調べてみると、なんだ、そうだったのか、こんなのがあった。
http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/materials/VideoStreamMaterial.as
VideoStreamMaterial(video:Video, stream:NetStream, precise:Boolean = false, transparent:Boolean = false)
と書いてあるので、バージョンの違いか、ひとまず修正。
中身を見てみると、うん確かに
super ( DisplayObject(video), transparent );
になってる。
カーソルキー上下で一応カメラポジションを変えてますが、もう少しいい動きを考えてみたいものです。
こんな感じで書いてみましたが、まだまだ勉強が必要ですね。
今回はVideoStreamMaterialというPapervision3Dのクラスを使います、そうなんです、ビデオを扱うからですね。
普通、flvを扱うときって結構面倒です、少なくともVideoクラス、NetConnectionクラス、NetStreamクラスを使います、NetStreamは再生とか「今何秒?」とかを扱う役目で、再生したあとこれが制御役になるのです。
flvを読み込み、設定が終わったらVideoStreamMaterialへVideoとNetStreamを引数に渡すんですが・・・何だこりゃ?
アルファチャンネルが効いてない。
何か設定があるのか、と思い、まずはコンストラクタ、第三引数はprecise:Boolean = falseとなっていたので、trueにしても変わらず。
ヘルプを見ると気になるプロパティ「movieTransparent」が、継承元はMovieMaterial。
なにをいじってもダメでした。
GoogleCode調べてみると、なんだ、そうだったのか、こんなのがあった。
http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/materials/VideoStreamMaterial.as
VideoStreamMaterial(video:Video, stream:NetStream, precise:Boolean = false, transparent:Boolean = false)
と書いてあるので、バージョンの違いか、ひとまず修正。
中身を見てみると、うん確かに
super ( DisplayObject(video), transparent );
になってる。
カーソルキー上下で一応カメラポジションを変えてますが、もう少しいい動きを考えてみたいものです。
こんな感じで書いてみましたが、まだまだ勉強が必要ですね。

