在ThreeJs中为材料动态添加新制服?

时间:2018-03-15 08:34:27

标签: three.js material uniform

是否可以在ThreeJs中动态地向标准MeshMaterial添加新的制服?

这样的事情:

material = new THREE.MeshPhongMaterial();
material.uniforms = {
  customTexture: new THREE.Texture(canvas),
  textureSize: { value: 1024 },
};

我修改了一些THREE.ShaderChunks,因此它可以在着色器中使用新的制服,但是当材料被编译时,似乎新的制服被three.js忽略了......

1 个答案:

答案 0 :(得分:4)

  

是否可以在ThreeJs中动态地向标准MeshMaterial添加新的制服?

是。请查看以下示例:webgl_materials_modified

在此演示中,MeshNormalMaterial增强了一个额外的统一time和一些顶点变换逻辑。它使用Material.onBeforeCompile(),它在编译着色器程序之前执行。这是在three.js中修改内置材料的推荐方法。