Skip to content

Commit 74e9571

Browse files
committed
GLTFLoader: Handle multiple primitives.
1 parent c837ea1 commit 74e9571

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

examples/js/loaders/GLTFLoader.js

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,16 +125,20 @@ THREE.GLTFLoader.prototype = {
125125

126126
var mesh = meshes[ meshId ];
127127

128-
var geometry = new THREE.BufferGeometry();
129-
geometry.name = mesh.name;
128+
var geometries = {
129+
name: mesh.name,
130+
array: []
131+
};
130132

131133
var primitives = mesh.primitives;
132134

133-
for ( var i = 0; i < 1; /*primitives.length;*/ i ++ ) {
135+
for ( var i = 0; i < primitives.length; i ++ ) {
134136

135-
var primitive = primitives[ 0 ];
137+
var primitive = primitives[ i ];
136138
var attributes = primitive.attributes;
137139

140+
var geometry = new THREE.BufferGeometry();
141+
138142
if ( primitive.indices ) {
139143

140144
geometry.setIndex( accessors[ primitive.indices ]._bufferattribute );
@@ -164,9 +168,11 @@ THREE.GLTFLoader.prototype = {
164168

165169
}
166170

171+
geometries.array.push( geometry );
172+
167173
}
168174

169-
mesh._geometry = geometry;
175+
mesh._geometries = geometries;
170176

171177
}
172178

@@ -212,7 +218,20 @@ THREE.GLTFLoader.prototype = {
212218
for ( var i = 0; i < node.meshes.length; i ++ ) {
213219

214220
var meshId = node.meshes[ i ];
215-
object.add( new THREE.Mesh( meshes[ meshId ]._geometry, new THREE.MeshNormalMaterial() ) );
221+
222+
var geometries = meshes[ meshId ]._geometries;
223+
224+
var group = new THREE.Group();
225+
group.name = geometries.name;
226+
object.add( group );
227+
228+
var array = geometries.array;
229+
230+
for ( var j = 0; j < array.length; j ++ ) {
231+
232+
group.add( new THREE.Mesh( array[ j ], new THREE.MeshNormalMaterial() ) );
233+
234+
}
216235

217236
}
218237

0 commit comments

Comments
 (0)