use of org.rajawali3d.loader.fbx.FBXValues.Objects.Model in project Rajawali by Rajawali.
the class LoaderFBX method parse.
@Override
public LoaderFBX parse() throws ParsingException {
super.parse();
BufferedReader buffer = null;
if (mFile == null) {
InputStream fileIn = mResources.openRawResource(mResourceId);
buffer = new BufferedReader(new InputStreamReader(fileIn));
} else {
try {
buffer = new BufferedReader(new FileReader(mFile));
} catch (FileNotFoundException e) {
RajLog.e("[" + getClass().getCanonicalName() + "] Could not find file.");
throw new ParsingException(e);
}
}
String line;
try {
while ((line = buffer.readLine()) != null) {
String repl = line.replaceAll(REGEX_CLEAN, REPLACE_EMPTY);
if (repl.length() == 0 || repl.charAt(0) == COMMENT)
continue;
readLine(buffer, line);
}
buffer.close();
} catch (Exception e) {
throw new ParsingException(e);
}
// -- get lights
Stack<Model> lights = mFbx.objects.getModelsByType(FBXValues.MODELTYPE_LIGHT);
int numLights = lights.size();
Renderer.setMaxLights(numLights == 0 ? 1 : numLights);
Stack<ALight> sceneLights = new Stack<ALight>();
for (int i = 0; i < numLights; ++i) {
Model l = lights.get(i);
// -- really need to add more light types
sceneLights.add(buildLight(l));
}
if (numLights == 0) {
ALight light = new DirectionalLight();
light.setPosition(2, 0, -5);
light.setPower(1);
sceneLights.add(light);
}
// -- check fog
//TODO: add fog support
/*if(mFbx.version5.fogOptions.fogEnable != null && mFbx.version5.fogOptions.fogEnable == 1) {
FogOptions fogOptions = mFbx.version5.fogOptions;
mRenderer.setFogEnabled(true);
Camera cam = mRenderer.getCamera();
cam.setFogEnabled(true);
cam.setFogNear(fogOptions.fogStart);
cam.setFogColor(fogOptions.fogColor.color);
mRenderer.setBackgroundColor(fogOptions.fogColor.color);
}*/
// -- get meshes
Stack<Model> models = mFbx.objects.getModelsByType(FBXValues.MODELTYPE_MESH);
try {
for (int i = 0; i < models.size(); ++i) {
buildMesh(models.get(i), sceneLights);
}
} catch (TextureException tme) {
throw new ParsingException(tme);
}
// -- get cameras
Stack<Model> cameras = mFbx.objects.getModelsByType(FBXValues.MODELTYPE_CAMERA);
Model camera = null;
for (int i = 0; i < cameras.size(); ++i) {
if (cameras.get(i).hidden == null || !cameras.get(i).hidden.equals("True")) {
camera = cameras.get(i);
break;
}
}
if (camera != null) {
//TODO: FIX
Camera cam = mRenderer.getCurrentCamera();
cam.setPosition(camera.position);
cam.setX(mRenderer.getCurrentCamera().getX() * -1);
cam.setRotation(camera.properties.lclRotation);
Vector3 lookAt = camera.lookAt;
// lookAt.x = -lookAt.x;
cam.setLookAt(lookAt);
cam.setNearPlane(camera.properties.nearPlane);
cam.setFarPlane(camera.properties.farPlane);
cam.setFieldOfView(camera.properties.fieldOfView);
}
return this;
}
Aggregations