CATEGORY : 3D

Real Time Ray Tracing

[ソース表示] レイトレースの中でも最も基本的な球面反射をリアルタイムでレンダリングします。200行弱の非常にシンプルな実装のため、移植性は高いと思います。 jsdo.it にはJavaScript version[Real Time Ray Tracing]も投稿しました。こちらはブラウザごとのNumberの扱いの違いなどに微妙に悩まされました。

Frocessing3D あそび

[ソース表示] wonderflに導入されたライブコーディング機能を使いながら、2時間くらいで作ったゲームです。あんまり実装例の多くないFrocessingの3D機能を使用してみました。

Dive into Cyberspace

[ソース表示] 100行でアルファベットを使ったワープエフェクトを作りました。AからZまで順番に突入していきます。scaleを使った典型的な擬似3Dにモーションブラーをかけてそれっぽく見せています。wonderfl上で開催されたコンテストの応募作品で、残念ながら入賞は逃しましたが、favorite数はnutsuさんのインベーダ(http://wonderfl.net/c/3OcH)に次ぐ二位でした。

Depth buffer test on FlashPlayer10

[ソース表示] FlashPlayer10 の 3D機能で深度バッファを実装しました。FlashPlayer10では、深度バッファは実装されていないため、BitmapDataのthreshold()メソッドと描画方法を色々組み合わせて実装しています。 画面クリックで、実際にレンダリングしている深度バッファをグレースケールで表示します。実際にGPUで採用されている深度バッファは、焦点からのz方向距離の逆数を使うことで、近くは細かく遠くは粗く計算しますが、この実装ではz値をそのまま256段階のビットマップに落とし込むため、境界の判定が粗いです。

Real time ambient occlusion on FlashPlayer10

[ソース表示] ライティングもデプスバッファも無い FlashPlayer10 の似非3D機能を使ったリアルタイム大域照明(Ambient Occlusion)レンダリングです。球面の各頂点から見える景色を簡易レンダリングすることで遮蔽率を計算します。大雑把に言えば、物体を真っ黒/背景を真っ白に設定して、原始的なラジオシティ法のエネルギー伝播を1回だけ実行している、とも表現できるかもしれません。 関連エントリ; WonderflでReal Time? Ambient Occlusion

Ambient Occlusion Rendering

[ソース表示] 大域証明 ray-tracing のベンチマークテストであるAOBench(https://code.google.com/p/aobench/)を FlashPlayer10 に移植したものです。当時は ActionScript3に Vector がようやく搭載されたばかりで、まだ認知度が低かったため、その実験と検証を兼ねて投稿しました。 関連エントリ; wonderflで汚名返上

Arena Shooting in 100 Lines

[ソース表示] 100行の Arena shooting geme です。ActionScriptでは改行は空白として認識されるので、行数は意味がないのですが、一応 1行120文字制限 セミコロンは1行に一個 複数行にまたがるクロージャは閉じ中括弧に1行使う という制限をかけてコーディングしています。 関連エントリ;wonderflで100行で全方位シュー