Papervision3D [3]

さて、前回で、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のみ、だった、、。
平面や、球では、そのままいけるのかも。
以下、ライトも合わせての設定部分。
-
import org.papervision3d.lights.PointLight3D;
-
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
-
private var light:PointLight3D;
-
private var flmat:FlatShadeMaterial;
-
light = new PointLight3D(true, false);
-
flmat = new FlatShadeMaterial(light, 0xFFFFFF);
-
var mateList:MaterialsList = new MaterialsList( {
-
all:flmat
-
}
-
);
-
cubeObj = new Cube(mateList, size, size, size, cSeg, cSeg, cSeg);
抜粋してますので、全文はここで確かめて下さい。
ここで、実際にシェーダーの設定部分は、これ。
flmat = new FlatShadeMaterial(light, 0xFFFFFF);
第一引数には、ライトの設定。
第二引数には、ライトの色の設定。
第三引数には、環境光の設定。
だ、そう。(たぶん、、)
要するに、二番目の色が一番明るいところの色で、三番目の色が一番暗いところの色、みたい。
何もいれなければ、白と黒が与えられるようです。
それにしても、たったこれだけのコードを書くだけで、こんなものが出来てしまうとは、、。
すごいです。そして面白い。
No comments
Jump to comment form | comments rss [?] | trackback uri [?]