我试图应用来自shaderLib的着色器,但其中大多数都会将节点完全变为白色或黑色。只有normal
着色器似乎工作。如何将Three.js着色器应用于节点
这是我如何应用它:
const shader = THREE.ShaderLib.depth;
const uniforms = shader.uniforms;
const material = new THREE.ShaderMaterial({
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
uniforms
})
this._viewer.impl.matman().addMaterial(
data.name, material, true)
,并设置片段与材料:
function setMaterial(fragIds, material) {
const fragList = this._viewer.model.getFragmentList()
this.toArray(fragIds).forEach((fragId) => {
fragList.setMaterial(fragId, material)
})
this._viewer.impl.invalidate(true)
}
就像在这个例子中:https://forge.autodesk.com/blog/forge-viewer-custom-shaders-part-1
我也尝试添加颜色到像这样的制服,但它没有帮助。
任何想法,他们为什么不工作?
这是完全白色的,我希望它保持以前的颜色,这甚至有可能吗? – shinzou
对不起,这是我的联盟。我不知道'THREE.ShaderLib.depth'做了什么。 Forge Viewer使用私有的'three.js',所以它可能不支持'three.js'中的所有东西。 –
您是否知道Autodesk中的人员知道如何在查看器中使用着色器或为查看器实现着色器? – shinzou