for my summer project I’m trying to improve a working version of my sandbox editor
for JMonkeyEngine. My goal is to expose all the functionality in the JME3 sdk in time.
I’m still looking for a place to share my code, and select a license that is compatible with the
JME3 license.
For now the features are:
A level system: easy switching between levels in the sandbox
A layer system: objects can be placed in layers, and layers can be turned on and off. A special case is the physics layer which enables the user to debug physics inside the sandbox.
Translate and rotate gizmos, which can be used to place objects off course, with support for different coordinate spaces (local, parent and world for now).
Link objects to a parent node and create an assembly.
Use physics inside the editor to place objects.
Create and edit joints
Add and edit lights and enable shadow mapping for a given light.
Undo/redo framework
Export scenes as xml (I’m working on exporting the levels as j3o files as well).
A custom procedural animation framework.
An example scene is shown here:
An example of physics support in the sandbox :
An example of light editing is shown in this video (I used fraps to capture, so the user interface is hidden)
And finally, I’m working on procedural animation and poses for characters:
That’s it for now, I plan to keep on working on it during the summer holiday, any comments / advice on how to
open source it / host it or integrate it with JMonkeyEngine is more then welcome.
I use Swing and the swing utility functions to inject events from other threads into the user interface.
For the objects, I have a single point of entry to modify every property (via reflection). An update to
a property is posted to a work queue and is executed from within the JME thread. The single point
of entry for the property changes also made it easy to implement to undo/redo framework.
For example the undo/redo framework will join subsequent changes to the same property of the same object.
I use the Guava library from Google library to create the events.
I will look into the license, I hope to have a version that people can play with, with a proper license
in the next two week.
a system to create groups of objects and manage them (reload meshes in the scene if a group changes). I also
implemented the WatchService to track (external) changes to the j3o files that I use.
added visual feedback to linking objects.
I created a small video (1 min) to show how a level could be created with my editor:
I also want to emphasize that the goal is to create larger scenes (exported as j3o), starting from j3o files,
it is not my goal to replace the SDK.
Next step is to create a video to show the group mechanism, and to export the final scene to a j3o (a bit
of work because I want to filter out all the helper objects and nodes that I use for construction purposes.
After a lot of work I now have a better system to create groups of objects. As you can see in the video,
the scenegraph is completely visualized and it is possible to select an interesting branch of the scenegraph
and convert it into an assembly.
The mechanism to link objects to a parent object has also improved a bit and it is also possible to just
copy branches in the editor itself.
DArtE: the sandbox editor (a jmonkeyengine project)
ML: a machine learning library with support for multilayer neural networks and fuzzy logic (and the possibility to convert the fuzzy logic to neural network), which I use for the procedural animation stuff (a standard java library project).
DArtE has a dependancy on the ML project.
Please consider that this is a very early alpha version, I think a lot of testing and bugfixing will be needed to bring it into the realm of useability. I’m still looking for a place to host the binaries.
Strange, I removed the references to those libraries , I moved the intersect package inside the ML project too, normally it should build without those libraries.
Edit: just downloaded the master as zip, I see no references in the project to batik and intersect, so it should work hopefully.
@daenim said:
Strange, I removed the references to those libraries , I moved the intersect package inside the ML project too, normally it should build without those libraries.
Edit: just downloaded the master as zip, I see no references in the project to batik and intersect, so it should work hopefully.
Well can’t compile. THere are unsutisfied dependencies.
Also there are project dependencies.
A bit of a slowdown, lots of problems with synchronizing the tree ui with the j3o scene. Only progress is in the export part, I created an exporter for j3o that reduces the number of nodes needed (a use a lot of structural Node objects) and utilizes only classes that exist in the JMonkeyEngine sdk.
This first screenshot shows a random scene in my editor :
The second screenshot shows the exported scene in the SDK:
I am also working on a general exporter interface to make it possible to save the scene in whatever format is necessary.