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的世界里山高水长,还得继续默默前行。
生活不只有诗和远方,还有面包和牛奶。