Merge pull request #2154 from shadekiller666/OBJ_Loader
OBJLoader Update: Fix for normal generation, whitespace handling, and UVs outside 0-1 range
This commit is contained in:
commit
887f3bf31d
4 changed files with 464 additions and 423 deletions
|
@ -28,11 +28,10 @@ public class OBJLoader implements ICustomModelLoader {
|
||||||
private final Set<String> enabledDomains = new HashSet<String>();
|
private final Set<String> enabledDomains = new HashSet<String>();
|
||||||
private final Map<ResourceLocation, OBJModel> cache = new HashMap<ResourceLocation, OBJModel>();
|
private final Map<ResourceLocation, OBJModel> cache = new HashMap<ResourceLocation, OBJModel>();
|
||||||
|
|
||||||
public OBJLoader() {}
|
|
||||||
|
|
||||||
public void addDomain(String domain)
|
public void addDomain(String domain)
|
||||||
{
|
{
|
||||||
enabledDomains.add(domain.toLowerCase());
|
enabledDomains.add(domain.toLowerCase());
|
||||||
|
FMLLog.log(Level.INFO, "OBJLoader: Domain %s has been added.", domain.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onResourceManagerReload(IResourceManager resourceManager)
|
public void onResourceManagerReload(IResourceManager resourceManager)
|
||||||
|
@ -46,8 +45,7 @@ public class OBJLoader implements ICustomModelLoader {
|
||||||
return enabledDomains.contains(modelLocation.getResourceDomain()) && modelLocation.getResourcePath().endsWith(".obj");
|
return enabledDomains.contains(modelLocation.getResourceDomain()) && modelLocation.getResourcePath().endsWith(".obj");
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
public IModel loadModel(ResourceLocation modelLocation) throws IOException
|
||||||
public IModel loadModel(ResourceLocation modelLocation)
|
|
||||||
{
|
{
|
||||||
ResourceLocation file = new ResourceLocation(modelLocation.getResourceDomain(), modelLocation.getResourcePath());
|
ResourceLocation file = new ResourceLocation(modelLocation.getResourceDomain(), modelLocation.getResourcePath());
|
||||||
if (!cache.containsKey(file))
|
if (!cache.containsKey(file))
|
||||||
|
@ -68,13 +66,20 @@ public class OBJLoader implements ICustomModelLoader {
|
||||||
else throw e;
|
else throw e;
|
||||||
}
|
}
|
||||||
OBJModel.Parser parser = new OBJModel.Parser(resource, manager);
|
OBJModel.Parser parser = new OBJModel.Parser(resource, manager);
|
||||||
OBJModel model = parser.parse();
|
OBJModel model = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
model = parser.parse();
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
cache.put(modelLocation, model);
|
cache.put(modelLocation, model);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
FMLLog.log(Level.ERROR, e, "Exception loading model %s with OBJ loader, skipping", modelLocation);
|
// FMLLog.log(Level.ERROR, e, "Exception loading model '%s' with OBJ loader, skipping", modelLocation);
|
||||||
cache.put(modelLocation, null);
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
OBJModel model = cache.get(file);
|
OBJModel model = cache.get(file);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,17 +7,23 @@ v 0 1 0
|
||||||
v 1 1 0
|
v 1 1 0
|
||||||
v 0 0 0
|
v 0 0 0
|
||||||
v 1 0 0
|
v 1 0 0
|
||||||
vt 1 0
|
#vt 1 0
|
||||||
vt 0 0
|
#vt 0 0
|
||||||
vt 1 1
|
#vt 1 1
|
||||||
vt 0 1
|
#vt 0 1
|
||||||
usemtl back
|
usemtl back
|
||||||
f 1/4 2/3 4/1 3/2
|
#f 1/4 2/3 4/1 3/2
|
||||||
|
f 1 2 4 3
|
||||||
usemtl front
|
usemtl front
|
||||||
f 5/1 6/2 8/4 7/3
|
#f 5/1 6/2 8/4 7/3
|
||||||
|
f 5 6 8 7
|
||||||
usemtl side
|
usemtl side
|
||||||
f 3/4 4/3 6/1 5/2
|
#f 3/4 4/3 6/1 5/2
|
||||||
f 7/1 8/2 2/4 1/3
|
f 3 4 6 5
|
||||||
|
#f 7/1 8/2 2/4 1/3
|
||||||
|
f 7 8 2 1
|
||||||
usemtl top
|
usemtl top
|
||||||
f 2/3 8/1 6/2 4/4
|
#f 2/3 8/1 6/2 4/4
|
||||||
f 7/2 1/4 3/3 5/1
|
f 2 8 6 4
|
||||||
|
#f 7/2 1/4 3/3 5/1
|
||||||
|
f 7 1 3 5
|
|
@ -1,8 +1,2 @@
|
||||||
newmtl fancy_fence:Default
|
newmtl fancy_fence:Default
|
||||||
illum 4
|
|
||||||
Kd 1.00 1.00 1.00
|
Kd 1.00 1.00 1.00
|
||||||
Ka 0.00 0.00 0.00
|
|
||||||
Tf 1.00 1.00 1.00
|
|
||||||
Ni 1.00
|
|
||||||
Ks 1.00 1.00 1.00
|
|
||||||
Ns 0.00
|
|
||||||
|
|
Loading…
Reference in a new issue