2017-04-26 1 views

Antwort

5

Verfahren

bufferGeometry.fromGeometry(geometry); 

kehrt nicht indizierte BufferGeometry.

Auch als "Dreieckssuppe" bekannt, hat BufferGeometry keine geteilten Scheitelpunkte, so dass computeVertexNormals() alle Scheitelpunktnormalen so einstellt, dass sie der Flächennormalen entsprechen.

In Ihrem Fall müssen Sie computeVertexNormals() auf Ihrer ursprünglichen Geometrie nennen - vor BufferGeometry zu konvertieren:

model.geometry.computeVertexNormals(); 

var bufferGeometry = new THREE.BufferGeometry(); 

bufferGeometry.fromGeometry(model.geometry); 

aktualisiert Geige: http://jsfiddle.net/2w9Lkjbm/8/

three.js r.85

+0

Eigentlich meine In diesem Fall benutze ich Sea3D Loader - alle Mesh sind bereits 'BufferGeometry' beim Import. Gibt es einen Workaround dafür? –

+0

Sie können versuchen, 'BufferGeometry' in 'Geometry' zu konvertieren und' mergeVertices() 'und' computeVertexNormals() 'aufzurufen. Dann zurück in 'BufferGeometry' konvertieren. – WestLangley