我有一个Collada对象,我将每个Three.js加载到我的场景中。 现在我想改变模型中的一些顶点位置 顶点着色器,这没问题。 但有了这个,我必须跳过出口的collada材料并采取 ShaderMaterial。 问题是现在我必须计算完整的照明 片段着色器中的场景。 之前,使用collada材料,通过使用定向光和半球光框架计算完整的光照。
所以我的问题是,如果有一个解决方案,我可以保持fragmentShader不受影响,所有的颜色都计算好像我不使用ShaderMaterial。
我尝试使用THREE.ShaderLib并仅传递phong着色器的fragmentShader 和我自己的vertexShader。但是这只给出了两个着色器中没有定义相同变化的错误。
答案 0 :(得分:1)
不幸的是,你是对的。您必须创建自己的ShaderMaterial
,并且合并场景照明将非常繁琐。
如果您的场景照明不是那么重要,您可以在片段着色器中的摄像机位置处摄入一些环境光和一盏灯。
如果您的场景照明很重要,那么您需要设置ShaderMaterial
参数lights: true
,您将可以访问顶点和片段着色器中的场景灯制服。
three.js r.63