Refering to this post i created a patch to only load active layer and lights.
[patch]
— Remotely Modified (Based On HEAD)
+++ Locally Modified (Based On LOCAL)
@@ -33,7 +33,6 @@
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -41,8 +40,12 @@
import com.jme3.asset.AssetInfo;
import com.jme3.asset.AssetLoader;
import com.jme3.asset.BlenderKey;
+import com.jme3.asset.BlenderKey.FeaturesToLoad;
import com.jme3.asset.BlenderKey.LoadingResults;
+import com.jme3.asset.BlenderKey.WorldData;
import com.jme3.asset.ModelKey;
+import com.jme3.light.Light;
+import com.jme3.renderer.Camera;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.plugins.blender.animations.ArmatureHelper;
@@ -53,6 +56,7 @@
import com.jme3.scene.plugins.blender.exceptions.BlenderFileException;
import com.jme3.scene.plugins.blender.file.BlenderInputStream;
import com.jme3.scene.plugins.blender.file.FileBlockHeader;
+import com.jme3.scene.plugins.blender.file.Structure;
import com.jme3.scene.plugins.blender.lights.LightHelper;
import com.jme3.scene.plugins.blender.materials.MaterialHelper;
import com.jme3.scene.plugins.blender.meshes.MeshHelper;
@@ -123,25 +127,66 @@
JmeConverter converter = new JmeConverter(dataRepository);
LoadingResults loadingResults = blenderKey.prepareLoadingResults();
-
WorldData worldData = null;//a set of data used in different scene aspects<br />
for (FileBlockHeader block : blocks) {
-
if (block.getCode() == FileBlockHeader.BLOCK_OB00) {<br />
-
switch (block.getCode()) {<br />
-
case FileBlockHeader.BLOCK_OB00://Object<br />
Object object = converter.toObject(block.getStructure(dataRepository));
if (object instanceof Node) {
-
if ((blenderKey.getFeaturesToLoad() & FeaturesToLoad.OBJECTS) != 0) {<br />
LOGGER.log(Level.INFO, "{0}: {1}–> {2}", new Object[]{((Node) object).getName(), ((Node) object).getLocalTranslation().toString(), ((Node) object).getParent() == null ? "null" : ((Node) object).getParent().getName()});
if (((Node) object).getParent() == null) {
loadingResults.addObject((Node) object);
}
}
-
} else if (object instanceof Camera) {<br />
-
if ((blenderKey.getFeaturesToLoad() & FeaturesToLoad.CAMERAS) != 0) {<br />
-
loadingResults.addCamera((Camera) object);<br />
}
-
} else if (object instanceof Light) {<br />
-
if ((blenderKey.getFeaturesToLoad() & FeaturesToLoad.LIGHTS) != 0) {<br />
-
loadingResults.addLight((Light) object);<br />
}
-
}<br />
-
break;<br />
-
case FileBlockHeader.BLOCK_MA00://Material<br />
-
if ((blenderKey.getFeaturesToLoad() & FeaturesToLoad.MATERIALS) != 0) {<br />
-
loadingResults.addMaterial(converter.toMaterial(block.getStructure(dataRepository)));<br />
-
}<br />
-
break;<br />
-
case FileBlockHeader.BLOCK_SC00://Scene<br />
-
if ((blenderKey.getFeaturesToLoad() & FeaturesToLoad.SCENES) != 0) {<br />
-
loadingResults.addScene(converter.toScene(block.getStructure(dataRepository)));<br />
-
}<br />
-
break;<br />
-
case FileBlockHeader.BLOCK_WO00://World<br />
-
if (worldData == null) {//onlu one world data is used<br />
-
Structure worldStructure = block.getStructure(dataRepository);<br />
-
String worldName = worldStructure.getName();<br />
-
if (blenderKey.getUsedWorld() == null || blenderKey.getUsedWorld().equals(worldName)) {<br />
-
worldData = converter.toWorldData(worldStructure);<br />
-
if ((blenderKey.getFeaturesToLoad() & FeaturesToLoad.LIGHTS) != 0) {<br />
-
loadingResults.addLight(worldData.getAmbientLight());<br />
-
}<br />
-
}<br />
-
}<br />
-
break;<br />
-
}<br />
-
}<br />
-
try {<br />
inputStream.close();
-
} catch (IOException e) {<br />
-
LOGGER.log(Level.SEVERE, e.getMessage(), e);<br />
-
}<br />
List<Node> objects = loadingResults.getObjects();
if (objects.size() > 0) {
Node modelNode = new Node(blenderKey.getName());
-
for (Iterator<Node> it = objects.iterator(); it.hasNext();) {<br />
-
Node node = it.next();<br />
-
modelNode.attachChild(node);<br />
-
for (Node object : loadingResults.getObjects()) {<br />
-
modelNode.attachChild(object);<br />
}
-
for (Light light : loadingResults.getLights()) {<br />
-
modelNode.addLight(light);<br />
-
}<br />
return modelNode;
} else if (objects.size() == 1) {
return objects.get(0);
[/patch]