Mesh의 일정 영역을 잘라내기
csg.js는 두개의 3D 모델이 겹쳐있을 때 하나로 합치거나 겹쳐있는 영역만 빼야 하는 경우에 사용할 수 있는 라이브러리이다. ThreeCSG.js를 사용하면 csg.js를 Three.js에서도 사용할 수 있다.
아래는 육면체에서 겹쳐져 있는 구만큼의 영역을 지우는 예제이다.
csg.js와 ThreeCSG.js를 가져온다.
<script src="js/csg.js"</script>; <script src="js/ThreeCSG.js"</script>;
육면체와 그 보다 작은 구를 생성한다.
// 육면체 var cubeGeometry = new THREE.BoxGeometry( 10, 10, 10 ); var cube = new THREE.Mesh( cubeGeometry ); // 구 var sphereGeometry = new THREE.SphereGeometry( 3, 10, 10 ); var sphere = new THREE.Mesh( sphereGeometry ); sphere.position.y = 5;
ThreeBsp를 생성하고 각각 육면체, 구 mesh를 넘겨준다.
var cubeBsp = new ThreeBSP( cube ); var sphereBsp = new ThreeBSP( sphere );
subtract 함수를 사용하여 육면체에서 구를 뺀다.
var subtractBsp = cubeBsp.subtract( sphereBsp ); // toMesh함수를 실행하면 THREE.Mesh를 반환 받는다. var result = subtractBsp.toMesh(new THREE.MeshPhongMaterial({color : 0xcccccc})); scene.add( result );