Javascript 如何在csg操作后保持原始颜色(使用ThreeCSG.js)
在html中,我使用JSONLoader加载我的obj(.js文件从Blender 2.66导出)。加载obj后,我使用ThreeCSG减去一个立方体。我想要达到的效果就像横截面。现在csg运作正常。问题是csg手术后我不能保持原色 例如,在A减去B之后,我希望网格仍然是A的材质,与图像(A.subtract(B))显示的有些类似。不同的是我希望它都是红色的(A的材料)。但是,它可能更复杂,因为我的obj有多种颜色和更复杂的几何体 这是我代码的一部分 three.js的版本是R55 对不起,我的英语很差。我真的需要一些帮助。希望你能理解我的意思Javascript 如何在csg操作后保持原始颜色(使用ThreeCSG.js),javascript,three.js,csg,Javascript,Three.js,Csg,在html中,我使用JSONLoader加载我的obj(.js文件从Blender 2.66导出)。加载obj后,我使用ThreeCSG减去一个立方体。我想要达到的效果就像横截面。现在csg运作正常。问题是csg手术后我不能保持原色 例如,在A减去B之后,我希望网格仍然是A的材质,与图像(A.subtract(B))显示的有些类似。不同的是我希望它都是红色的(A的材料)。但是,它可能更复杂,因为我的obj有多种颜色和更复杂的几何体 这是我代码的一部分 three.js的版本是R55 对不起,
谢谢大家。正确设置材质索引 如何: 将立方体材质添加到材质中 将result.geometry.faces循环为searchFace 在geometry.faces中搜索顶点与searchFace相同的面 如果找到,则将面的materialindex添加到searchFace 如果未找到,请搜索与geometry.faces中的searchFace具有两个相同顶点的面 如果找到,则将面的materialindex添加到searchFace 如果未找到,请搜索与geometry.faces中的searchFace具有1个相同顶点的面 如果找到,则将面的materialindex添加到searchFace
如果未找到,请添加立方体材质的材质索引谢谢您的建议。它在大多数情况下都非常有效。但是,横截面中的这些面无法显示原始颜色。例如,没有与立方体的面相同的顶点。还有其他办法解决这个问题吗?我脑海中浮现的想法是利用边缘来做出判断。如果它有效,我将与您分享。我试图检查面坐标与原始坐标,并将每个面的材质索引设置为原始值。但这对我不起作用。
loader.load( "obj/blenderscene/FinFET2.4.js", createScene1 );
function createScene1( geometry, materials ) {
mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
var mesh_bsp = new ThreeBSP(mesh);
var cube_geometry = new THREE.CubeGeometry( 2.5,7 , 7 );
cube_geometry = new THREE.Mesh( cube_geometry ,new THREE.MeshLambertMaterial( { color: 0xff11ff, opacity: 0.9, shading: THREE.FlatShading, wireframe: true, wireframeLinewidth: 2, transparent: true } ) );
var cube_bsp = new ThreeBSP( cube_geometry );
var subtract_bsp = mesh_bsp.subtract( cube_bsp );
var result = subtract_bsp.toMesh( new THREE.MeshFaceMaterial(materials) );
result.geometry.computeVertexNormals();
scene.add( result );
}