note.x

もろもろ機能追加。日付だけが重要なエントリー。

ランバートのみじゃあんまりなのでフォン実装。なんかいろいろおかしい気もするけど、ひとまず良しとした。.blendのパース時に手を抜いてたフェイス定義を修正。共有すべき頂点は共有するように。

Phong Shading Test(要:FlashPlayer11)

ビルボード実装。

Billboard Test(要:FlashPlayer11)

keim_at_siさんのエントリー「ActionScriptでPoint Sprite」と同じように4頂点を座標変換した後、上下左右に各頂点を移動させる方法で常にカメラの方向を向くようにしてる。

ポリライン実装。

Poly-line Test(要:FlashPlayer11)

Stage3DにはGL_LINE相当の描画モードが無いので線を描くことができない。以前Twitter経由で、9ballsyndromeさんに教えて頂いた http://forums.adobe.com/thread/886188?tstart=0 の方法で、見かけ上ワイヤーフレーム表示することもできるけど、これはサーフェスのエッジ部分だけ描画する方法なので、ポリゴンを真横とか真上から見たりすると線が表示されなくなる。うまい方法無いもんかと悶々とし続けた結果、これも2枚の三角ポリゴン使って描くしかなさげだという結論に達したのでそうした。

頂点を座標変換するところまではビルボードと同じ。各頂点を移動する処理の部分で、ラインの始点・終点の接線ベクトルと視線ベクトルの外積を取って、その方向に線の太さ分移動させてる。欠点として、ラインの接続部分が綺麗じゃなかったり、カメラに真っ直ぐ向かってくるラインの表示が破綻したりするので改善の余地あり。

Game Programming Gems 3 に載ってる Billboard Beams でごまかせそうだという情報を得たので、本屋で立ち読みして何となく把握した。静岡市立図書館にGame Programming Gems置いてくれ。


実に1年ぶりのエントリー。自分でもびっくりした。

FlashPlayer11がリリースされてStage3Dが解禁になったのを機に、以前作ってた自作ライブラリをStage3Dベースに置き換える作業をグダグダと進めてるので、作りながら気づいたことなんかを書き残していけたらいいなと。そんな感じでnote.x再始動であります。

ライブラリの現状は以下のような感じ。

※いずれのデモも要FlashPlayer11、さらに再生環境がStage3DのサポートするGPUを搭載している必要があります。GPU非対応の環境では、ソフトウェアレンダリングで再生されますが、その場合何も表示されなかったりブラウザがクラッシュしたりする可能性があります。

シーングラフ、カメラ実装済。シェーディングについては、現状フラットシェーディングのみ。

Stage3D Test01

ポリゴンのエッジだけを描画する方法で、なんちゃってワイヤーフレーム表示。

Stage3D Test02

旧ライブラリから引き続き.blendローダー搭載。
これだけが他の有名ライブラリに無いトピック。

Stage3D Test03

頂点カラー焼き付けで、なんとなくAO風味。

Stage3D Test04

旧ライブラリはZバッファ持たせたいが為に自前でソフトウェアラスタライズやってた。FlashPlayer10の時点ではそこそこ高速化できてたと思うけど、それでも描画周りがかなり足を引っ張っていて、正直行き詰まり感が強かった。
Stage3Dのおかげでポリゴン描画や座標変換やらをGPUに丸投げできちゃうので、山ほどポリゴン描ける。PV3Dで△1000あたりが限界とかやってたあの頃がウソのよう。ポリゴン描画のためにやらなきゃならない事が相当減ったし、オレ程度のレベルでも何やらスゴげな事が出来そうな気にさせてくれるのはスゲーありがたい。(簡単になったわけではないんだけども)

まぁなんつーか、Stage3D周りはこれまでのAPIから完全に逸脱してるし、機能的にも「劣化OpenGL」みたいな中途半端さがあるけど、なんだかんだいってAS3でこういうのが書けるってのは気楽でいい。これくらいがオレみたいな道楽でリアルタイムレンダリングやってる人間には案配がいい感じがするんですわ。ShockWave3Dよりも遙かに間口が広いと思うし。
地方のWeb屋にとって、仕事にすぐさま活かせるものでは無いからこそ目一杯遊んでおきたい。


自前エンジンにラスタライザ組み込んだ。やっと一息つけるとこまでできたー。

Rasterizer Test01(要:FlashPlayer10.1)

解像度640×480、△9800のトーラスにフラットシェーディングした状態で、自分の環境の場合30fpsくらい。背面カリングしてるので、実質△4000〜△4500くらい描画してる。ポリゴンあたりの描画面積のほうが影響ありそうなので、何枚描画できるかなんて性能評価の基準にならないかもしれないけど、まあ目安として。初代プレステが(たぶんローレゾで)30フレーム動作だと12000微少ポリゴン描画できるってことだから、なんとか近づけたい。目指せ初代プレステ。

Zバッファ持たせたので交差ポリゴンも問題なし。

Rasterizer Test02(要:FlashPlayer10.1)

テクスチャにもとりあえず対応。アルファブレンドはまだ。

Rasterizer Test03(要:FlashPlayer10.1)

ようやくBlenderローダーが前に進められそうな状況が整ってきたので、とりあえずハデな部分はこのへんで止めて地味な処理を詰める。勝手な解釈で曖昧にしてた部分が全部ひっくり返されて、かなり整理された。