three.js,透明模型能够遮挡可见模型

本人在开发眼镜试戴的AR项目中,遇到一个问题:当脸部转动的时候,眼镜镜教部分会直接盖在脸上,使得试戴体验并不好。翻阅很多资料后发现,可以通过透明模型遮挡的方法来遮住镜脚。说白点就是在场景中放置一个人头模型,人头跟着脸部旋转,这样,旋转切换模型的时候,镜脚如果被人头模型遮住,镜脚就不会被渲染。
如此,假如glasses为眼镜,head为人头。
glasses模型需要遍历一下所有的mesh并设置renderOrder的值大于0,使其能够先于透明模型(head)被渲染(模型默认的renderOrder = 0);

  glasses.traverse(function (obj) {
    if (obj.type === 'Mesh') {
      obj.renderOrder = 1;
    }
  })

随后再调整head如下
 

  head.traverse(function (obj) {
    if (obj.type === 'Mesh') {
      obj.material.colorWrite = false;    // 重点是这段代码
      obj.material.side = THREE.DoubleSide;    // 是否双面渲染看具体需求,加不加问题不大
    }
  })

后面head没有设置renderOrder是因为默认的就是0了,无需再重复设置。但是如果有需要的话,得保证head的renderOrder小于glasses的renderOrder。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值