최근에 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 수출을 개선하기 위해 예 다중 재료로 버퍼 게이지를 내보내기.
불행하게도,이 정말 도움이되지 않았다 :
이 해결 방법을 시도하십시오. 다른 메쉬 (다른 위치)를 분리하면 모든 메쉬에 고유 한 재질이 있음을 알 수 있지만 결합하면 하나만 볼 수 있습니다. 먼저 https://github.com/mrdoob/three.js/issues/4751에서 제안한 것처럼 맵을 사용하여 메쉬를 만들려고했으나 도움이되지 않았습니다. BufferGeometry에 여러 가지 재질로 작업 예제가 있습니까? 아니면 자외선 문제를 지적 해 주실 수 있습니까? – rawphl
방금 재료가 전체 지오메트리에 적용된다는 것을 알았습니다. 질감이있는 재료가 있으면 매우 재미 있습니다. 내 지오메트리를 분할해야하는데, 이것이 훨씬 어려워졌습니다. ^^ – rawphl