最近 r68 に切り替え、すべてのジオメトリを に移動していますTHREE.BufferGeometry
。
THREE.MeshFaceMaterial
多くの場所で使用していましたが、 BufferGeometry の面のマテリアル THREE.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;
これはエラーなしで正常に機能しますが、レンダリングすると、すべてのライトマップなどが機能しないように見えます。ジオメトリは問題なく見えますが、色は 1 つしかありません。
これを適切に実装する方法に関するヒントはありますか?
編集:
UV の問題: https://github.com/mrdoob/three.js/issues/5118
編集2:
WebGLRenderer のソース コードを掘り下げた後、これを実装するのは、今すぐやる価値があるよりもはるかに多くの作業であると思います。今のところ古いジオメトリに固執しますが、私はまだ提案を受け付けています ;)
編集 3: これを自分で行う基本的な方法は、https ://github.com/mrdoob/three.js/issues/5268 にあります。
three.js エクスポーターを改善するために、 https://github.com/mrdoob/three.js/issues/5417で作業が行われています。たとえば、複数のマテリアルを使用して buffergeometries をエクスポートします。