2010-05-24 68 views
1

我在pv3d論壇上問過這個問題,而不是一個人可以或不願意回答它。着色器vs着色器材質,papervision特定,一般洞察力歡迎

我相對較新的3D,所以我很抱歉,如果這是一些常識。

我有一個球體,其中我正在應用CellMaterial。看起來很棒。 我注意到在papervision sdk中,還有一個CellShader。

我應該與CellMaterial一起使用它嗎? 它應該是一個還是另一個? 着色器,對Shader材質的棄用實踐?

我最初的想法是着色器適用於整個場景,而材質可以唯一地應用於對象。

該文檔似乎顯示,否則。

如果通過同時使用CellShader和CellMaterial可以獲得什麼好處,會有什麼好處?編號真的很喜歡在那裏得到一些環境包容。

回答

1

如果您只是在單元格外觀之後,而沒有別的,CellMaterial是您的選擇。 CellShader的用途是將其與ShadedMaterial中的BitmapMaterial混合使用。

假設你應用了GaraudMaterial並且喜歡外觀,但是你也希望在那裏有紋理。不能用GaraudMaterial做到這一點,但如果你有一個BitmapMaterial和一個GaraudShader,你可以創建一個ShadedMaterial來使用這兩個。

例如

var bitmapMaterial:BitmapMaterial = new BitmapMaterial(yourBitmapData); 
var shader:PhongShader = new PhongShader(yourLight,0xFFFFFF, 0x000000,0,yourBumpMap); 
//this uses the two above 
var shadedMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial,shader); 
//apply it to something 
var sphere:Sphere = new Sphere(shadedMaterial,250,10,10); 

欲瞭解更多解釋結算Jim Foley's post

至於Ambient Occlusion,最便宜的方法是將效果提升到bake the shadows。你用你選擇的3D編輯器(3dsmax,maya,blender等)來做到這一點,它基本上意味着光/陰影被渲染到紋理中。 mr.doob texture baking

有一些工作要做到這一點dynamically,但沒有檢查是否製成最新版本的Papervision。

kode80 ssao