I build the model and set material to it following this shader docs
https://learn.foundry.com/modo/content/help/pages/shading_lighting/shader_items/gltf.html
everything worked smoothly and in modo was no warnings (if material has problems modo shows warning on export), I also checked the model in gestaltor, windows 3d viewer, and blender it is as expected. but in jme no material only a white object and i get following warning
Mar 01, 2023 9:42:29 AM com.jme3.scene.plugins.gltf.CustomContentManager readExtension
WARNING: Could not find loader for extension KHR_texture_transform
Mar 01, 2023 9:42:29 AM com.jme3.scene.plugins.gltf.CustomContentManager readExtension
WARNING: Could not find loader for extension KHR_texture_transform
Mar 01, 2023 9:42:30 AM com.jme3.scene.plugins.gltf.CustomContentManager readExtension
WARNING: Could not find loader for extension KHR_texture_transform
Mar 01, 2023 9:42:30 AM com.jme3.scene.plugins.gltf.CustomContentManager readExtension
WARNING: Could not find loader for extension KHR_texture_transform
Mar 01, 2023 9:42:30 AM com.jme3.scene.plugins.gltf.CustomContentManager readExtension
WARNING: Could not find loader for extension KHR_texture_transform
Mar 01, 2023 9:42:33 AM com.jme3.material.Material checkTextureParamColorSpace
NOTE: I Used adobe substance to create texture maps from a photo, ao,roughness, and metalic produced grayscale, so i changed profiles to srgb in photoshop then i used this tutorial Combine Maps into RGB texture (Better) - YouTube to combine them into one rgb clip as modo needs it, i also used normal multiply blend mode for transparent amount(alpha) in modo.
this is a state i used to attach the model “frisebee” to the scene.
@Override
protected void onEnable() {
app = (SimpleApplication) getApplication();
rootNode = app.getRootNode();
frisebee = getApplication().getAssetManager().loadModel("Models/freezbeez/gagafrise.glb");
Node probeNode = (Node) getApplication().getAssetManager().loadModel("Scenes/defaultProbe.j3o");
LightProbe probe = (LightProbe) probeNode.getLocalLightList().iterator().next();
rootNode.addLight(probe);
rootNode.attachChild(frisebee);
CameraControl cameraControl = new CameraControl(
getApplication().getCamera(),getApplication().getInputManager());
cameraControl.setSpatial(frisebee);
cameraControl.setControlDir(CameraControl.ControlDirection.SpatialToCamera);
frisebee.addControl(cameraControl);
Spatial torus = getApplication().getAssetManager().loadModel("Models/torus/untitled.glb");
torus.setLocalRotation(new Quaternion().fromAngleAxis(FastMath.QUARTER_PI,Vector3f.UNIT_Y));
rootNode.attachChild(torus);
getApplication().getViewPort().setBackgroundColor(ColorRGBA.DarkGray);
dl = new DirectionalLight();
dl.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
rootNode.addLight(dl);
dl.setColor(ColorRGBA.White);
getApplication().getStateManager().getState(BulletAppState.class).setDebugEnabled(true);
Spatial sky = SkyFactory.createSky(app.getAssetManager(), "Textures/Sky/4kresovled.hdr", SkyFactory.EnvMapType.EquirectMap);
rootNode.attachChild(sky);
}
screens:
jme3.5.2:
looks in modo:
i also tried to check it on sdk but it was the same in sdk with following log:
INFO [com.jme3.gde.modelimporter.UberAssetLocator]: Clearing asset List
INFO [null]: Last record repeated again.
INFO [com.jme3.gde.modelimporter.ModelImporterVisualPanel3]: Start offview panel
WARNING [com.jme3.scene.plugins.gltf.CustomContentManager]: Extension KHR_texture_transform is not supported, please provide your own implementation in the GltfModelKey
WARNING [com.jme3.scene.plugins.gltf.CustomContentManager]: Could not find loader for extension KHR_texture_transform
WARNING [null]: Last record repeated 4 more times.
INFO [com.jme3.gde.core.assets.AssetDataObject]: Loaded asset gagafrise
INFO [com.jme3.gde.core.assets.AssetDataObject]: Removing asset gagafrise.glb, from cache via main asset gagafrise.
INFO [com.jme3.gde.modelimporter.ModelImporterVisualPanel3]: Attaching model gagafrise.glb (Node)
INFO [com.jme3.gde.modelimporter.ModelImporterVisualPanel3]: Stop offview panel
INFO [null]: Last record repeated again.
INFO [com.jme3.gde.modelimporter.UberAssetLocator]: Looking in empty list for gagafrise.glb
INFO [org.netbeans.ui.indexing]: Indexing started, time from last indexing 95,218 ms.
INFO [com.jme3.gde.modelimporter.ImportModel]: Copied file C:/Users/Moh/Documents/gagafrise.glb to Models/gagafrise/gagafrise.glb
INFO [com.jme3.gde.modelimporter.ImportModel]: Add file Models/gagafrise/gagafrise.glb to delete list
INFO [com.jme3.gde.modelimporter.ImportModel]: Using real ProjectAssetManager for import instatiation.
WARNING [com.jme3.scene.plugins.gltf.CustomContentManager]: Extension KHR_texture_transform is not supported, please provide your own implementation in the GltfModelKey
INFO [org.netbeans.ui.indexing]: Indexing finished, indexing took 316 ms.
INFO [org.netbeans.ui.indexing]: Indexing started, time from last indexing 0 ms.
INFO [org.netbeans.ui.indexing]: Indexing finished, indexing took 37 ms.
INFO [org.netbeans.ui.indexing]: Indexing started, time from last indexing 0 ms.
WARNING [com.jme3.scene.plugins.gltf.CustomContentManager]: Could not find loader for extension KHR_texture_transform
INFO [org.netbeans.ui.indexing]: Indexing finished, indexing took 132 ms.
INFO [org.netbeans.ui.indexing]: Indexing started, time from last indexing 0 ms.
INFO [org.netbeans.ui.indexing]: Indexing finished, indexing took 101 ms.
WARNING [com.jme3.scene.plugins.gltf.CustomContentManager]: Could not find loader for extension KHR_texture_transform
WARNING [null]: Last record repeated again.
WARNING [null]: Last record repeated 2 more times.
INFO [com.jme3.gde.core.assets.AssetDataObject]: Loaded asset gagafrise
SEVERE [org.openide.util.Exceptions]
java.lang.NullPointerException
at com.jme3.gde.modelimporter.UberAssetLocator.getInfo(UberAssetLocator.java:97)
[catch] at com.jme3.gde.modelimporter.ImportModel$2.visit(ImportModel.java:265)
at com.jme3.scene.SceneGraphVisitorAdapter.visit(SceneGraphVisitorAdapter.java:61)
at com.jme3.scene.Geometry.depthFirstTraversal(Geometry.java:483)
at com.jme3.scene.Node.depthFirstTraversal(Node.java:801)
at com.jme3.scene.Spatial.depthFirstTraversal(Spatial.java:1799)
at com.jme3.gde.modelimporter.ImportModel.replaceLocatedTextures(ImportModel.java:247)
at com.jme3.gde.modelimporter.ImportModel.copyModel(ImportModel.java:213)
at com.jme3.gde.modelimporter.ImportModel$1.run(ImportModel.java:104)
at java.base/java.lang.Thread.run(Thread.java:829)
SEVERE [null]: Last record repeated 4 more times.
INFO [org.netbeans.ui.indexing]: Indexing started, time from last indexing 1,500 ms.
INFO [com.jme3.gde.core.assets.AssetDataObject]: File gagafrise.glb saved successfully
INFO [com.jme3.gde.core.assets.ExternalChangeScanner]: Notified about change in AssetData properties for gagafrise
INFO [com.jme3.gde.core.assets.ExternalChangeScanner]: gagafrise listening for external changes on C:\java\JME\GradleGame\assets\Models\gagafrise\gagafrise.glb@986beb4d:2a368265[invalid]
INFO [com.jme3.gde.core.assets.AssetDataObject]: Set original path for gagafrise to Models/gagafrise/gagafrise.glb
INFO [com.jme3.gde.core.assets.AssetDataObject]: Removing asset Models/gagafrise/gagafrise.glb, from cache via main asset gagafrise.
INFO [com.jme3.gde.core.assets.ExternalChangeScanner]: External file C:\java\JME\GradleGame\assets\Models\gagafrise\gagafrise.glb@986beb4d:2a368265[invalid] for gagafrise deleted!
INFO [com.jme3.gde.core.assets.ExternalChangeScanner]: Remove file change listener for deleted object on gagafrise
INFO [org.netbeans.ui.indexing]: Indexing finished, indexing took 1,098 ms.
INFO [org.netbeans.ui.indexing]: Indexing started, time from last indexing 0 ms.
INFO [org.netbeans.ui.indexing]: Indexing finished, indexing took 91 ms.
INFO [org.netbeans.ui.indexing]: Indexing started, time from last indexing 0 ms.
INFO [org.netbeans.ui.indexing]: Indexing finished, indexing took 68 ms.