html에서는 JSONLoader를 사용하여 obj (.js 파일을 Blender 2.66에서 내보내는 중)를로드합니다. 내 obj를로드 한 후 ThreeCSG를 사용하여 큐브를 뺍니다. 달성하고자하는 효과는 횡단면과 같습니다. 이제 csg 작업이 정상적으로 작동합니다. 문제는 csg 작업 후에 원래 색을 유지할 수 없다는 것입니다.csg 작업 후 원본 색 유지 방법 (ThreeCSG.js 사용)
예를 들어, A가 B를 뺀 후에, 메시가 A의 재질로 남아 있기를 바랍니다. 이미지와 다소 비슷합니다 (a.subtract (b)) csg.js website이 표시됩니다. 차이점은 모두 빨간색 (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이다.
내 가난한 영어로 죄송합니다. 도움이 필요합니다. 무슨 뜻인지 이해해 주실 수 있기를 바랍니다.
감사합니다.
감사를 재료 인덱스를 추가 발견되지 않는 경우는 다음 searchFace
에 얼굴의 MaterialIndex에 추가 발견합니다. 대부분의 상황에서 잘 작동합니다. 그러나 단면의면은 원래 색상을 표시 할 수 없습니다. 예를 들어 [빨간색으로 표시된면] (http://ppt.cc/70Ey)에는 큐브의면과 공통된 정점이 없습니다. 이 문제를 해결하는 다른 방법이 있습니까? 내 생각에 나오는 아이디어는 가장자리를 사용하여 판단을 내리는 것입니다. 작동하면 공유해 드리겠습니다. – user2666495
얼굴 좌표를 원래의 것으로 확인하고 각면의 재질 인덱스를 원래 값으로 설정하려고했습니다. 하지만 나를 위해 일하지 않습니다. – Deeps