開車加入光影材質…
http://www.asn.com.tw/flex/cardrive/CarDriver3.html
幾種加入光影材質的方式…
在PV3D 裡面有所謂的 shadematerial,用來產生會按照光源反應出明暗變化的效果的材質,在使用上很方便,只需產生一個點光源,再利用它來 new 出一個 ShadeMaterial,再賦予物件使用。
最簡單的像是 org.papervision3d.materials.shadematerials 底下的 FlatShadeMaterial …
private function foo():void
{
var light:PointLight3D = new PointLight3D();
var shaderMaterial:FlatShadeMaterial = new FlatShadeMaterial( light, 0x123456, 0x000000 );
var plane:Plane = new Plane(shaderMaterial,500,500);
}
但有時會需要用貼圖的方式來生成物件的表面紋理,比較像真,這時要透過 shader 來重新製作俱備貼圖的 ShadedMaterial…
[Embed(source="assets/photo.jpg")]
private var bmpAsset:Class;
private function foo():void
{
var light:PointLight3D = new PointLight3D();
var yourBitmap:Bitmap = new bmpAsset() as Bitmap;
var bitmapMaterial:BitmapMaterial = new BitmapMaterial(yourBitmap.bitmapData);
var shader:FlatShader= new FlatShader( light, 0xffffff, 0x333333);
var shaderMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial, shader);
plane = new Plane(shaderMaterial,500,500);
}
上面是靜態讀圖的作法,但是若是透過 BitmapFileMaterial 動態即時讀圖檔,卻會失敗…
private function foo():void
{
var fileMaterial:BitmapFileMaterial = new BitmapFileMaterial("assets/FocusBody.jpg");
/// after FileLoadEvent.LOAD_COMPLETE ....
var light:PointLight3D = new PointLight3D();
var shader:FlatShader = new FlatShader(light, 0xFFFFFF, 0x333333);
var shaderMaterial:ShadedMaterial = new ShadedMaterial(fileMaterial, shader);
var plane:Plane = new Plane(shaderMaterial,500,500);
}
因為 BitmapFileMaterial 並不是 BitmapMaterial 的子類別 ~"~,所以要稍微轉一下…
private function foo():void
{
var fileMaterial:BitmapFileMaterial = new BitmapFileMaterial("assets/FocusBody.jpg");
/// after FileLoadEvent.LOAD_COMPLETE ....
var light:PointLight3D = new PointLight3D();
var shader:FlatShader = new FlatShader(light, 0xFFFFFF, 0x333333);
var bitmapMaterial:BitmapMaterial = new BitmapMaterial( fileMaterial.bitmap );
var shaderMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial, shader);
var plane:Plane = new Plane(shaderMaterial,500,500);
}
另外要注意,Cube 六面體若是要使用 ShadedMaterial 的話,六面都要 new 個新 shader 給它,否則會有三角形黑色塊產生 = =",很麻煩,而且跑起來非常秏效能。
org.papervision3d.materials.shader 底下還有很多種不同的 shader 可以使用,效果皆不同…
FlatShader
PhongShader
CellShader
EnvMapShader
GouraudShader
…
2009年11月26日 星期四
訂閱:
張貼留言 (Atom)
VirtualBox 空間減肥
sdelete64 -z c: VBoxManage modifymedium disk "/Users/fellow/VirtualBox VMs/Win10/Win10.vdi" --compact *.vdi 路徑可以在 VirtualBox 儲...
-
https://github.com/ljean/modbus-tk/ install pip… sudo apt-get install python-pip install... download modbus_tk-x.x.x.tar.gz tar zxvf...
-
ARis... ARis 是日本一間公司出品的產品,應用了 ARToolKit 技術。 展示影片在這… http://www.youtube.com/watch?v=yCCx7zANsGE YouTube上可以找到更多類似的影片。 這邊是我用 FLARToolK...
-
由於ASSEMBLA即將開始收費,因此要把所有的SVN進行大搬家,連帶的一些教學文件也跟著搬家了,看來還是GOOGLE的窩最舒適(重點是免費) FPPA實驗平台教學教材-使用C語言 FPPA實驗平台簡介 實驗(一) 8位元LED輸出單元 與 模組設計總論 實驗(二) 按鍵開關輸入...
沒有留言:
張貼留言