我在pv3d论坛上问了这个问题,而不是一个人可以,或者不愿回答它。
我对3d比较新,所以如果这对某些人来说是常识,我会道歉。
我有一个球体,我在其中应用了CellMaterial。看起来很棒。 我注意到在papervision sdk中,还有一个CellShader。
我是否应该与CellMaterial一致使用此功能? 它应该是一个还是另一个? 是着色器,Shader材料的弃用实践?
我最初的想法是着色器适用于整个场景,而材质可以唯一地应用于对象。
文档似乎另有说明。
使用CellShader和CellMaterial可以获得什么好处?我真的很想在那里得到一些环境包容。
答案 0 :(得分:1)
如果您只是在细胞外观之后,没有别的,CellMaterial是您的选择。 CellShader的目的是将它与ShadedMaterial中的BitmapMaterial混合。
假设您应用GaraudMaterial并且喜欢外观,但您还需要纹理。使用GaraudMaterial无法做到这一点,但如果您有BitmapMaterial和GaraudShader,则可以创建使用这两者的ShadedMaterial。
e.g。
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等)来实现这一点,它基本上意味着将光/阴影渲染到纹理中。
有一些工作要做dynamically,但是没有检查是否是最新版本的Papervision。