1

我在 pv3d 论坛上问过这个问题,但没有一个人能或愿意回答它。

我对 3d 比较陌生,所以如果这对某些人来说是常识,我深表歉意。

我有一个球体,我在其中应用了 CellMaterial。看起来很棒。我注意到在 papervision sdk 中,还有一个 CellShader。

我应该使用它与 CellMaterial 一致吗?应该是一个还是另一个?着色器是着色器材质的不推荐做法吗?

我最初的想法是着色器适用于整个场景,而材质可以唯一地应用于对象。

文档似乎另有说明。

如果同时使用 CellShader 和 CellMaterial 可以获得什么好处?我真的很喜欢在其中获得一些环境包容性。

4

1 回答 1

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 的帖子

至于 Ambient Occlusion,获得效果最便宜的方法是将阴影烘焙到纹理中。您可以使用您选择的 3D 编辑器(3dsmax、maya、blender 等)来执行此操作,这基本上意味着光/阴影被渲染到纹理中。 mr.doob 纹理烘焙

有一些关于动态执行此操作的工作,但尚未检查是否已将其制成最新版本的 Papervision。

kode80 ssao

于 2010-09-10T20:44:31.090 回答