1

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

比如A减B之后,我希望mesh保留A的材质,有点类似csg.js网站显示的image(a.subtract(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。

对不起我的英语不好。我真的需要一些帮助。希望你能明白我的意思。

谢谢你们。

4

1 回答 1

2

正确设置材料指标。

如何:

将立方体材质添加到材质中

将 result.geometry.faces 循环为 searchFace

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

如果找到,则将人脸的材质索引添加到 searchFace

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

如果找到,则将人脸的材质索引添加到 searchFace

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

如果找到,则将人脸的材质索引添加到 searchFace

如果没有找到添加立方体材质的材质索引

于 2013-08-12T08:23:28.843 回答