我现在正在学习Bruno Simons的课程,在“鬼屋”的演讲中,他演示了如何实现纹理。一切都很好,所有的贴图纹理都工作得很好,但是当设置参数transparent: true时,整个对象都不可见,而不是删除浮置的纹理。
transparent: true
我错过了一个参数吗?或者textureLoader需要更多信息?
eh57zj3b1#
确保你使用的纹理有一个合适的alpha通道。Alpha通道应该确定纹理的哪些部分是透明的,哪些不是。您应该使用支持Alpha通道的PNG格式。检查纹理中的alpha值以确保其设置正确。混合模式:为材质设置正确的混合模式。在Three.js中,你可以使用blending属性来配置它。对于透明度,通常需要将其设置为THREE.NormalBlending或THREE.CustomBlending,并在必要时指定自定义blendSrc和blendDst函数。试试这个!!
const texture = new THREE.TextureLoader().load('your_texture.png'); const material = new THREE.MeshBasicMaterial({ map: texture, transparent: true, blending: THREE.NormalBlending, depthTest: true, depthWrite: false, }); const mesh = new THREE.Mesh(yourGeometry, material); scene.add(mesh);
1条答案
按热度按时间eh57zj3b1#
确保你使用的纹理有一个合适的alpha通道。Alpha通道应该确定纹理的哪些部分是透明的,哪些不是。您应该使用支持Alpha通道的PNG格式。检查纹理中的alpha值以确保其设置正确。
混合模式:为材质设置正确的混合模式。在Three.js中,你可以使用blending属性来配置它。对于透明度,通常需要将其设置为THREE.NormalBlending或THREE.CustomBlending,并在必要时指定自定义blendSrc和blendDst函数。
试试这个!!