three.js关于移除掉setFaceCulling属性,实现剔除渲染

three.js关于移除掉ssetFaceCulling属性,实现剔除渲染

three.js默认剔除的是背面,如果我们想要直接看到box内部的东西,就需要修改默认的剔除方式,之前我们实现这种功能的方式是采用ssetFaceCulling属性来实现。首先来看看之前的实现方法。

 let geometry = new THREE.BoxGeometry( 10, 10, 10);
 let mats=[];

 for(var i = 0;i<geometry.faces.length;i++){
 	let material = new THREE.MeshBasicMaterial({
 		color: new THREE.Color(Math.random() * 0xffffff)
 	});
  mats.push(material);
 }

 let mesh=new THREE.Mesh(geometry,mats);
 mesh.position.set(0,1,0);

 scene.add(mesh);

首先创建一个每个面颜色都不相同的box

renderer.setFaceCulling(THREE.CullFaceFront,THREE.FrontFaceDirectionCW);

然后我们设置剔除前面:这里有两个参数,第一个指定剔除模式,第二个指定顺时针还是逆时针。但在新的API中已经将setFaceCulling属性移除。所以现在不能采用这种方式来实现。
接下来看一下现在怎么实现这个小小的需求,跟之前一样我们首先创建一个每个面颜色都不同的box

 let geometry = new THREE.BoxGeometry( 10, 10, 10);
 let mats=[];

 for(var i = 0;i<geometry.faces.length;i++){
 	let material = new THREE.MeshBasicMaterial({
 		color: new THREE.Color(Math.random() * 0xffffff)
 	});
  mats.push(material);
 }

 let mesh=new THREE.Mesh(geometry,mats);
 mesh.position.set(0,1,0);

 scene.add(mesh);

在这里插入图片描述
接下来就是修改其默认的剔除,修改为正面剔除,只需要在material里添加side:THREE.BackSide即可。

let material = new THREE.MeshBasicMaterial({
	color: new THREE.Color(Math.random() * 0xffffff),
	side:THREE.BackSide
});

在这里插入图片描述

side 还有其它属性可以供我们使用

  • THREE.FrontSide 默认值 即选择背面剔除
  • THREE.BackSide 就是我们使用的正面剔除
  • THREE.DoubleSide 正面和背面都不剔除
    以上只是小白的个人理解,如果有什么错误希望大佬指出错误,3D的世界里山高水长,还得继续默默前行。

生活不只有诗和远方,还有面包和牛奶。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值