我試圖應用來自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