PV3D裡的光源似乎只有點光源,PointLight3D,而且不能直接作用於物體,必須通過接受光源的材質來傳遞。
點光源的建立一條代碼就夠,引用路徑org.papervision3d.lights.PointLight3D:
var lt:PointLight3D = new PointLight3D(true);
參數true是說明光源可見。
隨後是建立一種接受光照的材質,PV3D裡有這些材質可選:PhongMaterial,CellMaterial,GouraudMaterial
三種材質的建立參數都一樣,第一個是光來源物件,第二是光源顏色,第三個是氛圍顏色,第四個是反光層級,典型代碼如下:
var m:GouraudMaterial = new GouraudMaterial(lt,0xFFFFFF,0x000000,1);
然後就可以賦給各種模型,幾何體了。
如果要使用貼圖,也要光照,PV3D就不如Away3D靈活了,PV3D裡必須建立一個著色器材質對象,同時包含貼圖材質和光照材質,然後賦給模型,這樣才能顯示出來。三種光照材質都有對應的著色器材質:PhongShader,CellShader,GouraudShader,建立著色器材質的代碼也相同。然後用ShaderMaterial對象混合兩種材質即可。比如建立一個貼圖材質和一個PhongMaterial,代碼如下;
var mf:BitmapFileMaterial = new BitmapFileMaterial("test.jpg");var ms:PhongShader = new PhongShader(lt);var m:ShadedMaterial = new ShadedMaterial(mf, ms);
然後再將ShaderMaterial材質賦給模型。
需要說明的是,三個光照材質賦給立方體似乎有Bug,就是立方體的背光面邊緣也莫名其妙地發光了,只有球體的光照效果最好。
還需要說明的是,上次的DAE模型匯入方法還是不全對,Sketchup裡把模型建的複雜一點,匯入PV3D依然無法顯示。