前回に引き続き Stardust を触っています。
今回は3D関連の処理を試してみました。
利用フローは基本的に2Dの時と同じなので簡単です。
カメラ関連のAPIを調べつつ、付属のサンプルを読めばだいたい掴めるかと。
Papervision3D などの外部の3Dエンジンを組み合わせるのではなく、
idv.cjcat.stardust.threeD.*
パッケージを使っていきます。
(2D関連は idv.cjcat.stardust.twoD.*
パッケージ)
例によって昔作ったものをコンバートするわけですが、
今回は クラインの壺 (Klein bottle) を描いてみました。
ただ、むりやり球を並べて描いているので形がとてもわかりづらいです;;
さすがに Stardust には “線を扱う” クラスの追加実装予定は期待薄かも。
wonderfl にも投稿しておいたので、コードはそちらで。
また、self fork して メビウスの帯 Ver. も作っておきました。
Vec3D クラスは高機能で便利なのですが、7kb もある重量級のクラスなので、
座標値のみを覚えておきたい場合は、単一の Vector で管理した方がいいと思います。
コードは読みづらくなりますが、空間・時間効率共にかなり良くなるはずです。
(このケースだとたぶんL2キャッシュにがっつりヒットする)
あるいは、3次元の座標値のみを保持する小さなデータクラスを自分で作って管理するか。
threeD パッケージは他にもいろいろ面白そうなクラスがあったので、
また時間があるときに引き続き調べていきたいと思います。
Stardust in a Klein Bottle – wonderfl build flash online
Stardust ties Möbius Strip – wonderfl build flash online
・関連記事
クラインの壺 – pv3d – Rest Term
メビウスの帯 – pv3d – Rest Term