2010-05-24 62 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