Javascript 在three.js中相同位置的两个材质

Javascript 在three.js中相同位置的两个材质,javascript,ecmascript-6,three.js,3d,textures,Javascript,Ecmascript 6,Three.js,3d,Textures,我想把两种材料放在一架飞机上,一种在另一种上面。我的意思是,我有一个砖块背景,我需要在其上放置另一个材质和其他纹理。使用以下方法将多个材质应用于网格。其思想是以这样一种方式定义,即使用不同的材质渲染整个几何体(而不仅仅是部分几何体) var渲染器、场景、摄影机; init(); render(); 函数init(){ renderer=new THREE.WebGLRenderer({antialas:true}); renderer.setPixelRatio(window.devicePi

我想把两种材料放在一架飞机上,一种在另一种上面。我的意思是,我有一个砖块背景,我需要在其上放置另一个材质和其他纹理。

使用以下方法将多个材质应用于网格。其思想是以这样一种方式定义,即使用不同的材质渲染整个几何体(而不仅仅是部分几何体)

var渲染器、场景、摄影机;
init();
render();
函数init(){
renderer=new THREE.WebGLRenderer({antialas:true});
renderer.setPixelRatio(window.devicePixelRatio);
setClearColor(0x000000,0.0);
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
场景=新的三个。场景();
摄像头=新的三个透视摄像头(40,window.innerWidth/window.innerHeight,11000);
摄像机。位置。设置(15、20、30);
场景。添加(摄影机);
var controls=新的三个.OrbitControls(camera、renderer.doElement);
控件。addEventListener('change',render);
控件。minDistance=10;
控件。最大距离=50;
添加(新的三个环境光(0xffffff,0.1));
var灯=新的三点灯(0xffffff,1);
相机。添加(灯光);
var geometry=新的三个.BoxBufferGeometry(10,10,10);
geometry.clearGroups();
几何.addGroup(0,无穷大,0);
几何.addGroup(0,无穷大,1);
//质地
var loader=new THREE.TextureLoader();
var map=loader.load('https://threejs.org/examples/textures/decal/decal-diffuse.png",渲染),;
var normalMap=loader.load('https://threejs.org/examples/textures/decal/decal-normal.jpg",渲染),;
var material1=新的三种材料。网状材料({
颜色:0xffffff,
镜面反射:0x22222,
光泽度:100,
地图:地图,
法线贴图:法线贴图,
字母测试:0.5,
可见:正确
} );
var material2=新的3.MESHNORMAL材料({
不透明度:0.5,
透明:是的,
可见:正确
} );
网格=新的三个网格(几何体,[material1,material2]);
场景。添加(网格);
}
函数render(){
渲染器。渲染(场景、摄影机);
}
正文{
边际:0px;
}
坎维斯{
显示:块;
}


再次感谢@Mugen87!我一直在尝试着色材质,并将这两种纹理设置为一致,然后在着色器中混合它们。但这也是个好主意!!谢谢你知道我是否可以为这两种材料应用混合模式吗?