three.js多重材质不透明度深度顺序
我正在用three.js做一个壁球游戏,我正在添加通过collada文件加载的玩家模型 我需要球员模型相对透明,这样即使在物体下也能看到球和其他元素 我遍历对象的three.js多重材质不透明度深度顺序,three.js,webgl,Three.js,Webgl,我正在用three.js做一个壁球游戏,我正在添加通过collada文件加载的玩家模型 我需要球员模型相对透明,这样即使在物体下也能看到球和其他元素 我遍历对象的多重材质的所有材质,并将它们设置为透明,不透明度值为0.7 但是,当我这样做时,由于模型有几个组件,我可以看到眼睛、嘴巴等,如图所示: 代码: var loader2=new THREE.ColladaLoader(); loader2.load(“./squash/player/wip2.dae”),函数(collada){ col
多重材质的所有材质,并将它们设置为透明,不透明度值为0.7
但是,当我这样做时,由于模型有几个组件,我可以看到眼睛、嘴巴等,如图所示:
代码:
var loader2=new THREE.ColladaLoader();
loader2.load(“./squash/player/wip2.dae”),函数(collada){
collada.scene.transverse(函数(子函数){
if(三个的子实例skindmesh){
对于(变量i=0;i
实例-
我如何才能使播放器模型的遮挡部分隐藏起来,这样我就看不到眼睛、嘴、头,比如头发在上面了?你必须渲染播放器两次
在玩家的第一次渲染中,对于材质数组中的每个材质,设置material.colorWrite=false代码>。这将仅渲染到深度缓冲区
然后像往常一样使用material.colorWrite=true第二次渲染播放器代码>
three.js r.73你会一直从后面看这个角色吗?不总是……但你有一个建议吗?如果你总是从后面看,我不会画我不想要的元素。是的,我也这么想……谢谢你。如果可能的话,我更愿意画出来……但如果没有其他方法,这是一个解决办法。
var loader2 = new THREE.ColladaLoader();
loader2.load("./squash/player/wip2.dae", function(collada) {
collada.scene.traverse(function(child) {
if (child instanceof THREE.SkinnedMesh) {
for (var i = 0; i < child.material.materials.length; i++) {
var m = child.material.materials[i];
m.skinning = true;
m.transparent = true;
m.opacity = 0.7; //here
}
child.material.skinning = true;
player = child;
player.castShadow = true;
player.receiveShadow = true;
scene.add(player);
}
});
});