2012-09-11 4 views
3

와이어 프레임 메쉬와 텍스쳐 메쉬를 threeJS로 그리려하고 있는데, 둘 다 씬에 추가하면 텍스쳐 메쉬가 표시되지 않습니다. 아래 코드 :텍스쳐 메쉬와 와이어 프레임 메쉬를 3 개로 사용하기

재료 중 하나가 와이어 프레임이고 다른 하나가 텍스처 인 동일한 형상을 공유하는 두 개의 메시를 만드는 데 문제가 있습니다. 머티리얼 중 하나가 와이어 프레임이고 다른 하나가 색상 채우기 인 경우 잘 동작하지만 두 번째 머티리얼을 텍스처로 만들면 작업이 중단됩니다.

scene.add(wireMesh);을 주석 처리하면 텍스처 메시가 나타납니다.

var wireMat = new THREE.MeshBasicMaterial({ color:0x00FFFF, wireframe: true,     transparent: true, overdraw:true }); 
var wireMesh = new THREE.Mesh(geometry, wireMat); 
scene.add(wireMesh); 

var texture = texture = THREE.ImageUtils.loadTexture('textures/world.jpg'); 

var imageMat = new THREE.MeshBasicMaterial({color:0xffffff, map: texture }); 

var fillMesh = new THREE.Mesh(geometry, imageMat); 
scene.add(fillMesh); 

답변

15

SceneUtils에는 createMultiMaterialObject(geometry, materials)이 있습니다. 기본적으로 모든 메시지를 그룹 내에서 동일한 지오메트리를 공유하는 다중 메시를 만듭니다.

예 :

var mesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [ 

    new THREE.MeshLambertMaterial({ color: 0xffffff}), 
    new THREE.MeshBasicMaterial({ color: 0x222222, wireframe: true}) 

]); 

THREE.SceneUtils source code

0

유감스럽게도 와이어 프레임을 사용하는 개체와 사용하지 않는 개체간에 형상을 공유 할 수 없습니다. 그 지오메트리를 복제해야합니다. 우리가 아직 에 대해 .clone()을 수행하지 않았 음을 상기시켜줍니다.

+0

감사합니다! 기하학을 생성하는 코드를 두 번 올릴 것입니다. 나는이 모든 것을 학습 경험으로하고 있기 때문에 호기심에서 벗어났습니다. 그것은 3 가지의 한계입니까? js? 또는 webgl의 한계? –

+0

둘 다 같아요. 와이어 프레임은 솔리드와 다른 방식으로 렌더링됩니다. – mrdoob

관련 문제