55THREE . OBJLoader = function ( manager ) {
66
77 this . manager = ( manager !== undefined ) ? manager : THREE . DefaultLoadingManager ;
8-
8+
99 this . materials = null ;
1010
1111} ;
@@ -20,6 +20,7 @@ THREE.OBJLoader.prototype = {
2020
2121 var loader = new THREE . XHRLoader ( scope . manager ) ;
2222 loader . setCrossOrigin ( this . crossOrigin ) ;
23+ loader . setPath ( this . path ) ;
2324 loader . load ( url , function ( text ) {
2425
2526 onLoad ( scope . parse ( text ) ) ;
@@ -33,11 +34,17 @@ THREE.OBJLoader.prototype = {
3334 this . crossOrigin = value ;
3435
3536 } ,
36-
37+
38+ setPath : function ( value ) {
39+
40+ this . path = value ;
41+
42+ } ,
43+
3744 setMaterials : function ( materials ) {
38-
45+
3946 this . materials = materials ;
40-
47+
4148 } ,
4249
4350 parse : function ( text ) {
@@ -50,9 +57,9 @@ THREE.OBJLoader.prototype = {
5057 var vertices = [ ] ;
5158 var normals = [ ] ;
5259 var uvs = [ ] ;
53-
60+
5461 function addObject ( name ) {
55-
62+
5663 var geometry = {
5764 vertices : [ ] ,
5865 normals : [ ] ,
@@ -71,7 +78,7 @@ THREE.OBJLoader.prototype = {
7178 } ;
7279
7380 objects . push ( object ) ;
74-
81+
7582 }
7683
7784 function parseVertexIndex ( value ) {
@@ -191,7 +198,7 @@ THREE.OBJLoader.prototype = {
191198 }
192199
193200 }
194-
201+
195202 addObject ( "" ) ;
196203
197204 // v float float float
@@ -214,9 +221,9 @@ THREE.OBJLoader.prototype = {
214221
215222 // f vertex//normal vertex//normal vertex//normal ...
216223 var face_pattern4 = / ^ f \s + ( ( - ? \d + ) \/ \/ ( - ? \d + ) ) \s + ( ( - ? \d + ) \/ \/ ( - ? \d + ) ) \s + ( ( - ? \d + ) \/ \/ ( - ? \d + ) ) (?: \s + ( ( - ? \d + ) \/ \/ ( - ? \d + ) ) ) ? / ;
217-
224+
218225 var object_pattern = / ^ [ o g ] \s + ( .+ ) / ;
219-
226+
220227 var smoothing_pattern = / ^ s \s + ( [ 0 1 ] | o n | o f f ) / ;
221228
222229 //
@@ -301,22 +308,22 @@ THREE.OBJLoader.prototype = {
301308 ) ;
302309
303310 } else if ( ( result = object_pattern . exec ( line ) ) !== null ) {
304-
311+
305312 // o object_name
306313 // or
307314 // g group_name
308-
315+
309316 var name = result [ 1 ] . trim ( ) ;
310-
317+
311318 if ( foundObjects === false ) {
312-
319+
313320 foundObjects = true ;
314321 object . name = name ;
315-
322+
316323 } else {
317-
324+
318325 addObject ( name ) ;
319-
326+
320327 }
321328
322329 } else if ( / ^ u s e m t l / . test ( line ) ) {
@@ -332,7 +339,7 @@ THREE.OBJLoader.prototype = {
332339 } else if ( ( result = smoothing_pattern . exec ( line ) ) !== null ) {
333340
334341 // smooth shading
335-
342+
336343 object . material . smooth = result [ 1 ] === "1" || result [ 1 ] === "on" ;
337344
338345 } else {
@@ -359,30 +366,30 @@ THREE.OBJLoader.prototype = {
359366 buffergeometry . addAttribute ( 'normal' , new THREE . BufferAttribute ( new Float32Array ( geometry . normals ) , 3 ) ) ;
360367
361368 } else {
362-
369+
363370 buffergeometry . computeVertexNormals ( ) ;
364-
371+
365372 }
366373
367374 if ( geometry . uvs . length > 0 ) {
368375
369376 buffergeometry . addAttribute ( 'uv' , new THREE . BufferAttribute ( new Float32Array ( geometry . uvs ) , 2 ) ) ;
370377
371378 }
372-
379+
373380 var material ;
374-
381+
375382 if ( this . materials !== null ) {
376-
383+
377384 material = this . materials . create ( object . material . name ) ;
378-
385+
379386 }
380-
387+
381388 if ( ! material ) {
382389
383390 material = new THREE . MeshPhongMaterial ( ) ;
384391 material . name = object . material . name ;
385-
392+
386393 }
387394
388395 material . shading = object . material . smooth ? THREE . SmoothShading : THREE . FlatShading ;
0 commit comments