Javaゲーム制作記

いろいろ作ってます  

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | Comment(-)

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)

3D水面 with Processing

Processingで、無理矢理に環境マッピングを実装してみました。
スフィアマップなのでUV座標は、

U=N.x / 2 + 0.5
V=-N.y / 2 + 0.5
(Nは正規化された法線ベクトル)

となります。
うん、超簡単ですね。

あとはこれにテクスチャを貼り付ければ・・・


じゃーん。
こうなります。
水銀っぽくてとてもきれいです。

では実際に見てみましょう!
続きからどぞ↓
[ 2010/10/03 12:46 ] 3D | Comment(8)

コマンドクエストフロア増設&3Dアプレット

最近3Dエンジンカテゴリがかわいそうなのでそっちにしてみました。

コマンドクエストの10階から15階までを実装しました。
モンスターも強くなっているので注意!

あと、10階のボスはLv10あれば倒せるはずです。



3Dアプレット

続きからどうぞ。
[ 2010/09/09 15:35 ] 3D | Comment(12)

3DCG追加!

やっていそうでやっていなかったトーラス(ドーナツ型のあれ)を使ったデモを追加しました!

(クリックで見れます)

今回はちょっとダークな感じに仕上がりました。
トップページのサムネが見えにくいのもそのせいです。
[ 2010/04/24 11:42 ] 3D | Comment(2)

3DCG追加!

今回はマップではなく観賞用の3DCGを追加してみました。
なかなか綺麗だと思います(多分・・・)。

(画像をクリックすると見れます)

例によってあのティーポットです。
スペキュラの色が常に白になるという不具合の修正チェックもかねて作りました。
いつものと違って、マウスでぐるぐる回せます。

P.S.
トップページを調整しました。
だいぶいろいろとたまってきたのでジャンルごとに分けました。
[ 2010/04/11 14:51 ] 3D | Comment(7)

さらに・・・高速化!

自分でももうそろそろ速度の限界かと感じでいた3Dエンジンですが、
前回とんでもない発見をしてしまったので、
また高速化に励んでいます。

その成果として、グーローシェーディングの処理速度を二倍近く向上させることが出来ました。
今まではピクセル単位のときもfloat型を使っていたんですが、
ライン描画時に0xffff倍してint型に格納、
ピクセル描画時に16ビット右にシフトする(>>16)
という手順で実装に成功しました。

早速それを使って何か作ってみました。
で、できたんですが、
何だろ、これ・・・
なんだかよく分からないゲームになってしまいました。
ではどぞ↓


(画像をクリック!)(リンク切れ)
[ 2010/04/09 16:12 ] 3D | Comment(8)
プロフィール

Author:saharan

Twitter
検索フォーム


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