Guys, hello. Why can’t i import my model with shape keys in gltf (from blender) properly. It’s always “RendererException: Cannot recompile shader source” or “RendererException: compile error in: ShaderSource”. But if I uncheck normals in gltf export settings, everything is fine, but the model becomes solid black and I can’t do anything.
SEVERE: Uncaught exception thrown in Thread[jME3 Main,5,main]
com.jme3.renderer.RendererException: compile error in: ShaderSource[name=Common/MatDefs/Light/Lighting.vert, defines, type=Vertex, language=GLSL150]
0(459) : error C1111: non-lvalue actual parameter #2 cannot be out parameter (“norm.28”)
at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1476)
at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1503)
at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1567)
at com.jme3.material.logic.MultiPassLightingLogic.render(MultiPassLightingLogic.java:158)
at com.jme3.material.Technique.render(Technique.java:166)
at com.jme3.material.Material.render(Material.java:1026)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:614)
at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:266)
at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:305)
at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:877)
at com.jme3.renderer.RenderManager.flushQueue(RenderManager.java:779)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1108)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1158)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:272)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:197)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:232)
at java.base/java.lang.Thread.run(Thread.java:834)
My simpleInitApp():
public void simpleInitApp() {
setTimer(new EraseTimer());
viewPort.setBackgroundColor(ColorRGBA.LightGray);
rootNode.addLight(new DirectionalLight(new Vector3f(-1, -1, -1).normalizeLocal()));
Spatial model = assetManager.loadModel("Models/untitled.glb");
File storageFolder = JmeSystem.getStorageFolder();
file = new File(storageFolder.getPath() + File.separator + "g8m.j3o");
BinaryExporter be = new BinaryExporter();
try {
be.save(model, file);
} catch (IOException e) {
e.printStackTrace();
}
assetManager.registerLocator(storageFolder.getPath(), FileLocator.class);
model2 = assetManager.loadModel("g8m.j3o");
model2.setLocalTranslation(0, 0, 0);
model2.depthFirstTraversal(new SceneGraphVisitor() {
@Override
public void visit(Spatial spatial) {
if (spatial instanceof Geometry) {
if (((Geometry) spatial).getMesh().hasMorphTargets()) {
System.out.println("Found morphs: " + ((Geometry) spatial).getMesh().getMorphTargets().length);
myGeom = (Geometry)spatial;
weights = new float[((Geometry) spatial).getMesh().getMorphTargets().length];
myGeom.setMorphState(weights);
}
}
}
});
Material sphereMat = new Material(assetManager,
"Common/MatDefs/Light/Lighting.j3md");
sphereMat.setBoolean("UseMaterialColors",true);
model2.setMaterial(sphereMat);
model2.setLocalTranslation(0, 0, 8);
rootNode.attachChild(model2);
}
After unchecking normals:
or i can get:
SEVERE: Uncaught exception thrown in Thread[jME3 Main,5,main]
com.jme3.renderer.RendererException: Cannot recompile shader source
at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1363)
at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1503)
at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1567)
at com.jme3.material.logic.MultiPassLightingLogic.render(MultiPassLightingLogic.java:158)
at com.jme3.material.Technique.render(Technique.java:166)
at com.jme3.material.Material.render(Material.java:1026)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:614)
at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:266)
at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:305)
at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:877)
at com.jme3.renderer.RenderManager.flushQueue(RenderManager.java:779)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1108)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1158)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:272)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:197)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:232)
at java.base/java.lang.Thread.run(Thread.java:834)