Papervision3D [3]

080410.jpg

さて、前回で、Papervision3Dの超基本的な使い方はわかった(はず)なのですが、
バージョンを少しでも上げるととたんに動かなくなりました。

見てみると、前回の分は、バージョン1.1。
これは、あまりにも古いだろう、、、という事で、いよいよ本命(?)Papervision3D 2.0 alpha、通称、GreatWhiteに突入。


と、言っても、前回作ったものを2.0で動くようにしただけ。
基本、rectさんのところを参照させてもらいながらエラーとにらめっこ、でした。

で、移植したものが、これ。ソースも一緒に。

変更点等は、note.xさんのところを参考にさせて頂きました。
ほんと、お世話になりっぱなしです。

参考にさせてもらった記事です。
[Papervision3D2.0] Viewport3D
今回から新たに加わったという、表示用クラス(?)Vieport3D。
[Papervision3D2.0] Render
レンダリングの仕方が変わりました。

あとこれは、2.0から、ではないようだけれども、立方体のマテリアルの指定の仕方が変わったようです。
前まではこう。

var colorMate:ColorMaterial = new ColorMaterial(0x666666, 0.2);
planeObj = new Cube(colorMate, 100, 100, 100, 4, 4, 4);

で、新しいのは、こう。

var colorMate:ColorMaterial = new ColorMaterial(0x666666, 0.2);
var mateList:MaterialsList = new MaterialsList({all:colorMate});
planeObj = new Cube(mateList, 100, 100, 100, 4, 4, 4);

この、var mateList:MaterialsList = new MaterialsList({all:colorMate});で、立方体のどの面にどのマテリアルを指定するかを設定出来ます。
例では、all、としてるので、これだと全面同じ。あとは、front、back、right、left、top、bottom、と、そのままな名前であります。
FlaTech+さんのところを参照させてもらいました

それで、出来たものが、これ。
※クリックで表示。オブジェクトをクリックでウニウニっとなります。
一つ目の分に、colorMaterialを貼って、マウスの位置によって、くるくる回るようにしました。

で、やっぱりせっかく2.0を触り始めたんだから、これだけではもったいない、と思って、
この2.0の目玉(と勝手に今思った)である、ライトの表現に挑戦。
で、結論から言うと、出来たのが、冒頭にも写真があった、これ。※クリックで回転します。

ライトの表現、いわゆるシェーダーですが、これが種類が五つほどあるらしく、そこでちょっとはまった。
formerさんのこの記事を参照させてもらいました。
最初は、このformerさんのサンプルにもあるとおり、GouraudShaderを使用していたんだけれども、このシェーダーだとキューブに適用しようとするとエラーが出て上手くいかない、、。
結局他のシェーダーも試したけれど、出来たのがFlatShaderのみ、だった、、。
平面や、球では、そのままいけるのかも。

以下、ライトも合わせての設定部分。

ACTIONSCRIPT:
  1. import org.papervision3d.lights.PointLight3D;
  2. import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
  3. private var light:PointLight3D;
  4. private var flmat:FlatShadeMaterial;
  5. light = new PointLight3D(true, false);
  6. flmat = new FlatShadeMaterial(light, 0xFFFFFF);
  7. var mateList:MaterialsList = new MaterialsList( {
  8.     all:flmat
  9.     }
  10. );
  11. cubeObj = new Cube(mateList, size, size, size, cSeg, cSeg, cSeg);

抜粋してますので、全文はここで確かめて下さい。

ここで、実際にシェーダーの設定部分は、これ。

flmat = new FlatShadeMaterial(light, 0xFFFFFF);

第一引数には、ライトの設定。
第二引数には、ライトの色の設定。
第三引数には、環境光の設定。
だ、そう。(たぶん、、)
要するに、二番目の色が一番明るいところの色で、三番目の色が一番暗いところの色、みたい。
何もいれなければ、白と黒が与えられるようです。

それにしても、たったこれだけのコードを書くだけで、こんなものが出来てしまうとは、、。
すごいです。そして面白い。


About this entry