23
23
package processing .core ;
24
24
25
25
import java .io .BufferedReader ;
26
- import java .io .File ;
27
26
import java .util .ArrayList ;
28
27
import java .util .HashMap ;
29
28
import java .util .Map ;
@@ -46,20 +45,17 @@ public class PShapeOBJ extends PShape {
46
45
* Initializes a new OBJ Object with the given filename.
47
46
*/
48
47
public PShapeOBJ (PApplet parent , String filename ) {
49
- this (parent , parent .createReader (filename ), getBasePath ( parent , filename ) );
48
+ this (parent , parent .createReader (filename ));
50
49
}
51
50
52
- public PShapeOBJ (PApplet parent , BufferedReader reader ) {
53
- this (parent , reader , "" );
54
- }
55
51
56
- public PShapeOBJ (PApplet parent , BufferedReader reader , String basePath ) {
52
+ public PShapeOBJ (PApplet parent , BufferedReader reader ) {
57
53
ArrayList <OBJFace > faces = new ArrayList <OBJFace >();
58
54
ArrayList <OBJMaterial > materials = new ArrayList <OBJMaterial >();
59
55
ArrayList <PVector > coords = new ArrayList <PVector >();
60
56
ArrayList <PVector > normals = new ArrayList <PVector >();
61
57
ArrayList <PVector > texcoords = new ArrayList <PVector >();
62
- parseOBJ (parent , basePath , reader ,
58
+ parseOBJ (parent , reader ,
63
59
faces , materials , coords , normals , texcoords );
64
60
65
61
// The OBJ geometry is stored with each face in a separate child shape.
@@ -172,7 +168,7 @@ protected void addChildren(ArrayList<OBJFace> faces,
172
168
}
173
169
174
170
175
- static protected void parseOBJ (PApplet parent , String path ,
171
+ static protected void parseOBJ (PApplet parent ,
176
172
BufferedReader reader ,
177
173
ArrayList <OBJFace > faces ,
178
174
ArrayList <OBJMaterial > materials ,
@@ -242,15 +238,12 @@ static protected void parseOBJ(PApplet parent, String path,
242
238
} else if (parts [0 ].equals ("o" )) {
243
239
// Object name is ignored, for now.
244
240
} else if (parts [0 ].equals ("mtllib" )) {
241
+
245
242
if (parts [1 ] != null ) {
246
243
String fn = parts [1 ];
247
- if (fn .indexOf (File .separator ) == -1 && !path .equals ("" )) {
248
- // Relative file name, adding the base path.
249
- fn = path + File .separator + fn ;
250
- }
251
244
BufferedReader mreader = parent .createReader (fn );
252
245
if (mreader != null ) {
253
- parseMTL (parent , fn , path , mreader , materials , mtlTable );
246
+ parseMTL (parent , fn , mreader , materials , mtlTable );
254
247
mreader .close ();
255
248
}
256
249
}
@@ -339,7 +332,7 @@ static protected void parseOBJ(PApplet parent, String path,
339
332
}
340
333
341
334
342
- static protected void parseMTL (PApplet parent , String mtlfn , String path ,
335
+ static protected void parseMTL (PApplet parent , String mtlfn ,
343
336
BufferedReader reader ,
344
337
ArrayList <OBJMaterial > materials ,
345
338
Map <String , Integer > materialsHash ) {
@@ -364,15 +357,8 @@ static protected void parseMTL(PApplet parent, String mtlfn, String path,
364
357
if (parts [0 ].equals ("map_Kd" ) && parts .length > 1 ) {
365
358
// Loading texture map.
366
359
String texname = parts [1 ];
367
- if (texname .indexOf (File .separator ) == -1 && !path .equals ("" )) {
368
- // Relative file name, adding the base path.
369
- texname = path + File .separator + texname ;
370
- }
371
-
372
- File file = new File (parent .dataPath (texname ));
373
- if (file .exists ()) {
374
- currentMtl .kdMap = parent .loadImage (texname );
375
- } else {
360
+ currentMtl .kdMap = parent .loadImage (texname );
361
+ if (currentMtl .kdMap == null ) {
376
362
System .err .println ("The texture map \" " + texname + "\" " +
377
363
"in the materials definition file \" " + mtlfn + "\" " +
378
364
"is missing or inaccessible, make sure " +
@@ -452,18 +438,6 @@ static protected class OBJFace {
452
438
}
453
439
454
440
455
- static protected String getBasePath (PApplet parent , String filename ) {
456
- // Obtaining the path
457
- File file = new File (parent .dataPath (filename ));
458
- if (!file .exists ()) {
459
- file = parent .sketchFile (filename );
460
- }
461
- String absolutePath = file .getAbsolutePath ();
462
- return absolutePath .substring (0 ,
463
- absolutePath .lastIndexOf (File .separator ));
464
- }
465
-
466
-
467
441
// Stores a material defined in an MTL file.
468
442
static protected class OBJMaterial {
469
443
String name ;
@@ -488,4 +462,4 @@ static protected class OBJMaterial {
488
462
kdMap = null ;
489
463
}
490
464
}
491
- }
465
+ }
0 commit comments