fc2ブログ

Javaゲーム制作記

いろいろ作ってます  

Stage3Dで地球

最近FlashのStage3DというAPIがGPUでの3D描画に対応したらしいので、
勉強がてらに地球を表示してみました。

※FlashPlayer 11が必要です

The Earth - wonderfl build flash online



Stage3DだとAGALという言語で直接シェーダープログラムを書くことができるんですね。
そこで今までやっていなかったバンプマッピングに挑戦してみました。

バンプマッピングというのは平面のポリゴンに擬似的に凹凸を貼り付けるものです。

凹凸の表現に使われるテクスチャには表面の高さを白黒で表したハイトマップ(左)や、
直接法線ベクトルを書き込んだノーマルマップ(右)が使われますが、
最終的にはどちらも内部で法線ベクトルに変換されます。



もちろん実際にシェーダーで使うためには、
法線ベクトルの向きをポリゴンに合わせて変換しなければなりません。

変換後の法線ベクトルR'は、変換前の法線ベクトルをR、
テクスチャが貼ってあるポリゴンのU座標(Tangent)とV座標(Binormal)の向きUV、
およびポリゴンの法線ベクトルNを使用して以下のように計算できます。

R'.x = U.x * R.x + V.x * R.y + N.x * R.z
R'.y = U.y * R.x + V.y * R.y + N.y * R.z
R'.z = U.z * R.x + V.z * R.y + N.z * R.z

U軸(Tangent)とV軸(Binormal)の求め方については複雑なので、ここでは割愛します。
自分はこちらこちらを参考にさせていただきました。


本当はこの計算を全て頂点シェーダ内でしてしまうと速いのですが、
今回は手を抜いてフラグメントシェーダ内で行っています。
この辺を最適化すればもう少し速く動いたかもしれないです。



おまけ:絶賛作り直し中
スポンサーサイト



[ 2011/11/27 20:11 ] 3D | Comment(4)

メタボール

久しぶりにつぶつぶの更新です。
かなり前から挑戦してたメタボールシェーダーが完成しました。



しかし重い。
これ以上ないくらい最適化したつもりだけど、それでもかなり重いです。

見た目はそれなりにいいと思うので、一度お試しあれ!
(SceneタブにMetaballで入ってます)


ついでに速度ビューも実装しました。
剛体の各質点の速度が見えて面白いです。




おまけ:
作ってます。
[ 2011/11/16 17:20 ] ゲーム制作 | Comment(9)

現状

ずっと更新できてないですが、一応進んではいます。


ちょっと新しいマップパーツ作ってみたり、


看板立ててみたり。

毎日2%位ずつ進んでる感じです。

年内には公開できたらいいな…
[ 2011/11/10 19:20 ] ゲーム制作 | Comment(5)
プロフィール

saharan

Author:saharan

Twitter
検索フォーム