如何在csg操作后保持原始颜色(使用ThreeCSG.js)



在html中,我使用JSONLoader加载我的obj(从Blender 2.66导出的.js文件)。加载我的obj后,我使用ThreeCSG减去一个立方体。我想要达到的效果就像横截面。现在csg的运作良好。问题是我不能在csg操作后保持原来的颜色。

例如,在A减去B之后,我希望网格保持A的材质,与csg.js网站上显示的图像(A.减法(B))有些相似。不同的是,我希望它都是红色的(A的材料)。然而,它可能更复杂,因为我的obj有几种颜色和更复杂的几何形状。

这是我代码的一部分。

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 );
 }

three.js的版本是R55。

抱歉我英语不好。我真的需要帮助。希望你能理解我的意思。

谢谢大家。

正确设置物料索引。

如何:

将立方体材料添加到材料

将result.geometry.faces作为searchFace 循环

在geometry.faces 中搜索与searchFace具有相同顶点的面

如果找到,则将面的材料索引添加到searchFace

如果未找到,则在geometry.faces 中搜索具有与searchFace相同顶点的2个面的

如果找到,则将面的材料索引添加到searchFace

如果未找到,则在geometry.faces 中搜索与searchFace具有1个相同顶点的面

如果找到,则将面的材料索引添加到searchFace

如果未找到,则添加立方体材料的材料索引

相关内容

  • 没有找到相关文章

最新更新