Three.js || 解决 || 矢量图片作为纹理材质存在黑色背景

解决方案:

transparent: true  //MeshLambertMaterial、MeshBasicMaterial

参考

场景:将矢量图片作为纹理材质贴图:

      const circleGeometry = new THREE.CircleGeometry(0.6, 80)
      const textureLoader = new THREE.TextureLoader()
      textureLoader.load('static/img/光圈.png', function(texture)
      {
        let circleMaterial = new THREE.MeshLambertMaterial({
          map: texture     
        })
        const circle = new THREE.Mesh(circleGeometry, circleMaterial)
        scene.add(circle)
      })

在这里插入图片描述
尝试添加属性:

          color: 'white', // 自身颜色
          emissive: 'white', // 自发光的颜色
		  depthTest: false, // 深度测试

甚至修改材质为MeshBasicMaterial、MeshNormalMaterial、MeshPhongMaterial,都没有效果。
最终解决:

      const circleGeometry = new THREE.CircleGeometry(0.6, 80)
      const textureLoader = new THREE.TextureLoader()
      textureLoader.load('static/img/光圈.png', function(texture)
      {
        let circleMaterial = new THREE.MeshLambertMaterial({
          map: texture,
          transparent: true
          
        })
        const circle = new THREE.Mesh(circleGeometry, circleMaterial)
        scene.add(circle)
      })

在这里插入图片描述
我测试的MeshLambertMaterial、MeshBasicMaterial并不是depthTest: false起作用,而是transparent: true起作用,可能PointsMaterial有用。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值