2014-09-01 4 views
0

최근에 r68로 전환하여 모든 지오메트리를 THREE.BufferGeometry으로 옮깁니다.BufferGeometry MeshFaceMaterial 구현 r68

많은 장소에서 THREE.MeshFaceMaterial을 사용 중이었고 BufferGeometry faces materialsTHREE.BufferGeometry에 따르면이 기능을 지원하지 않습니다. 해결책은 여러 개의 메쉬를 만드는 것으로 보이지만이 방법을 시도했지만 작동하지 않는 것으로 보입니다. 오류가 발생하지 않습니다. 다음과 같이

나의 접근 방식은 다음과 같습니다

var oldGeometry = ... // THREE.Geometry from our loader 
var materials = ... // Material array from our loader, uses lightmaps, normalmaps etc. 
var bufferGeometry = new THREE.BufferGeometry(); 
var geometry = bufferGeometry.fromGeometry(oldGeometry); 

var group = new THREE.Object3D(); 

materials.forEach(function(material){ 
    group.add(new THREE.Mesh(geometry, material)); 
}); 

geometry.attributes.uv = geometry.attributes.uvs; 

이 오류없이 잘 작동하지만 렌더링 될 때, 모든 라이트 맵 등이 작동하지 않는 것은, 형상이 잘 보이지만, 하나의 색깔이있다.

올바르게 구현하는 방법에 대한 힌트가 있습니까?

편집 :

UV 문제

: https://github.com/mrdoob/three.js/issues/5118

편집 2 :

WebGLRenderer 소스 코드를 통해 파고 후, 나는이 구현하는 생각이 더 많은 작품은 다음 지금 그것을 가치가있다. 우리는 지금 기존의 형상을 고수하지만, 난 아직도 제안을 열려있어,

편집) 3 :이 작업을 수행하는 기본적인 방법으로 자신을 여기에서 찾을 수 있습니다 : https://github.com/mrdoob/three.js/issues/5268

되는 일이있다 여기를 완료 https://github.com/mrdoob/three.js/issues/5417 three.js 수출을 개선하기 위해 예 다중 재료로 버퍼 게이지를 내보내기.

답변

2

r68의 uv를 처리 할 때 bufferGeometry.fromGeometry()에 버그가 있습니다.

bufferGeometry.attributes.uv = bufferGeometry.attributes.uvs; 
+0

불행하게도,이 정말 도움이되지 않았다 :

이 해결 방법을 시도하십시오. 다른 메쉬 (다른 위치)를 분리하면 모든 메쉬에 고유 한 재질이 있음을 알 수 있지만 결합하면 하나만 볼 수 있습니다. 먼저 https://github.com/mrdoob/three.js/issues/4751에서 제안한 것처럼 맵을 사용하여 메쉬를 만들려고했으나 도움이되지 않았습니다. BufferGeometry에 여러 가지 재질로 작업 예제가 있습니까? 아니면 자외선 문제를 지적 해 주실 수 있습니까? – rawphl

+0

방금 ​​재료가 전체 지오메트리에 적용된다는 것을 알았습니다. 질감이있는 재료가 있으면 매우 재미 있습니다. 내 지오메트리를 분할해야하는데, 이것이 훨씬 어려워졌습니다. ^^ – rawphl