Hey Guys,
Hey @Kaelthas,
I finally had the time to try out the recent 3.1 again and I was unable to import my models which work fine with 3.0.
As much as I’d love to contribute to jme3, I am not really familiar with the workflow neither with BlenderLoader’s Interna.
Let’s start with the Exception that I have in netbeans (NOT in the SDK, as the LoggingMethod is crashed )
SEVERE [org.openide.util.Exceptions]
java.io.CharConversionException: Invalid XML character �.
at org.openide.xml.XMLUtil.checkContentCharacters(XMLUtil.java:800)
at org.openide.xml.XMLUtil.toElementContent(XMLUtil.java:630)
at org.netbeans.modules.notifications.NotificationImpl.createDetails(NotificationImpl.java:242)
Caused: java.lang.IllegalArgumentException
at org.netbeans.modules.notifications.NotificationImpl.createDetails(NotificationImpl.java:244)
at org.netbeans.modules.notifications.NotificationImpl.initDecorations(NotificationImpl.java:173)
at org.netbeans.modules.notifications.center.NotificationCenterManager$3.run(NotificationCenterManager.java:227)
at org.netbeans.modules.notifications.center.NotificationCenterManager.firePropertyChange(NotificationCenterManager.java:233)
at org.netbeans.modules.notifications.center.NotificationCenterManager.add(NotificationCenterManager.java:101)
at org.netbeans.modules.notifications.NotificationDisplayerImpl.add(NotificationDisplayerImpl.java:111)
at org.netbeans.modules.notifications.NotificationDisplayerImpl.notify(NotificationDisplayerImpl.java:90)
at org.netbeans.modules.notifications.NotificationDisplayerImpl.notify(NotificationDisplayerImpl.java:81)
at org.openide.awt.NotificationDisplayer.notify(NotificationDisplayer.java:222)
at com.jme3.gde.core.util.notify.NotifyUtil.show(NotifyUtil.java:63)
at com.jme3.gde.core.scene.ApplicationLogHandler.publish(ApplicationLogHandler.java:123)
at java.util.logging.Logger.log(Logger.java:738)
at java.util.logging.Logger.doLog(Logger.java:765)
at java.util.logging.Logger.log(Logger.java:788)
at java.util.logging.Logger.warning(Logger.java:1476)
at com.jme3.scene.plugins.blender.file.FileBlockHeader$BlockCode.valueOf(FileBlockHeader.java:190)
at com.jme3.scene.plugins.blender.file.FileBlockHeader.<init>(FileBlockHeader.java:73)
at com.jme3.scene.plugins.blender.BlenderLoader.setup(BlenderLoader.java:308)
at com.jme3.scene.plugins.blender.BlenderLoader.load(BlenderLoader.java:92)
Caused: java.io.IOException: Unexpected importer exception occured: java.io.CharConversionException: Invalid XML character �.
at com.jme3.scene.plugins.blender.BlenderLoader.load(BlenderLoader.java:221)
at com.jme3.scene.plugins.blender.BlenderLoader.load(BlenderLoader.java:81)
at com.jme3.asset.DesktopAssetManager.loadLocatedAsset(DesktopAssetManager.java:262)
Caused: com.jme3.asset.AssetLoadException: An exception has occured while loading asset: Mr_Chan.blend
at com.jme3.asset.DesktopAssetManager.loadLocatedAsset(DesktopAssetManager.java:264)
at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:376)
at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:419)
[catch] at com.jme3.gde.core.assets.SpatialAssetDataObject.loadAsset(SpatialAssetDataObject.java:95)
at com.jme3.gde.core.assets.SpatialAssetDataObject.loadAsset(SpatialAssetDataObject.java:54)
at com.jme3.gde.core.assets.AssetData.loadAsset(AssetData.java:130)
at com.jme3.gde.modelimporter.ModelImporterVisualPanel3.loadModel(ModelImporterVisualPanel3.java:92)
at com.jme3.gde.modelimporter.ModelImporterVisualPanel3.loadSettings(ModelImporterVisualPanel3.java:61)
at com.jme3.gde.modelimporter.ModelImporterWizardPanel3.readSettings(ModelImporterWizardPanel3.java:82)
at org.openide.WizardDescriptor.updateStateOpen(WizardDescriptor.java:867)
at org.openide.WizardDescriptor.updateState(WizardDescriptor.java:822)
at org.openide.WizardDescriptor._updateState(WizardDescriptor.java:800)
at org.openide.WizardDescriptor.goToNextStep(WizardDescriptor.java:1065)
at org.openide.WizardDescriptor.access$1900(WizardDescriptor.java:92)
at org.openide.WizardDescriptor$Listener$1.run(WizardDescriptor.java:2208)
at org.openide.WizardDescriptor.lazyValidate(WizardDescriptor.java:1516)
at org.openide.WizardDescriptor.access$2000(WizardDescriptor.java:92)
at org.openide.WizardDescriptor$Listener.actionPerformed(WizardDescriptor.java:2227)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.openide.util.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:461)
at com.sun.proxy.$Proxy32.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:724)
at java.awt.EventQueue$4.run(EventQueue.java:722)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
at java.awt.Dialog.show(Dialog.java:1084)
at org.netbeans.core.windows.services.NbPresenter.superShow(NbPresenter.java:1065)
at org.netbeans.core.windows.services.NbPresenter.doShow(NbPresenter.java:1115)
at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:1087)
at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:128)
at org.openide.util.Mutex.doEventAccess(Mutex.java:1376)
at org.openide.util.Mutex.readAccess(Mutex.java:278)
at org.netbeans.core.windows.services.NbPresenter.show(NbPresenter.java:1072)
at java.awt.Component.show(Component.java:1654)
at java.awt.Component.setVisible(Component.java:1606)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at com.jme3.gde.modelimporter.ImportModel.actionPerformed(ImportModel.java:94)
at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:199)
at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:202)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:724)
at java.awt.EventQueue$4.run(EventQueue.java:722)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
It all comes down to jmonkeyengine/FileBlockHeader.java at eb767e75802cab5ae20597fee7fb6fa40ac55d45 · jMonkeyEngine/jmonkeyengine · GitHub (simply handling a (unknown) block).
Furthermore, I’d suggesting removing String casting here: jmonkeyengine/FileBlockHeader.java at eb767e75802cab5ae20597fee7fb6fa40ac55d45 · jMonkeyEngine/jmonkeyengine · GitHub and simply output the two hexaValues. (possibly check if both are in alphabetical range and then cast them, otherwise fall back to bytewise output)
I don’t know if blender now has non-alphabetic-chars, but seeing it’s #0, it rather looks like a bug somewhere else?
I’ll also upload the Model File (if needed), but that will take ages (I’ll check if it crashes with the texture-less model aswell)