Sandbox editor for JMonkeyEngine

Hi,

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:

  1. A level system: easy switching between levels in the sandbox
  2. 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.
  3. 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).
  4. Link objects to a parent node and create an assembly.
  5. Use physics inside the editor to place objects.
  6. Create and edit joints
  7. Add and edit lights and enable shadow mapping for a given light.
  8. Undo/redo framework
  9. Export scenes as xml (I’m working on exporting the levels as j3o files as well).
  10. 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)

[video]DAE Sandbox - Edit lights - YouTube

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.

10 Likes

Forgot to include a screenshot for editing the shadows.

It is easy to enable/disable the shadow for a spotlight and see the result in the editor:

And the same goes for the directional light:

There is currently a problem when mixing directional and spotlight shadows, there is a patch for it , but I’m working
with the stable version for now.

5 Likes

Wow, well done.
This is awesome work.
I like the interface and the simplicity of this editor.

Keep it up.

Good job! Do you use multithreading for gui and JME?
Do you use swing or JavaFX?

I think NewBSD License is ok. And github.

You can take any things from my edtor too: https://code.google.com/p/simple-world-editor/

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.

I’ll look into your editor too :slight_smile:

looks great! Had the same idea a long time ago… but dropt it. I’m glad that u are going to master this thing.

Some updates:

Two major features:

  • 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.

4 Likes

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.

[video]DAE Sandbox - Assemblies - YouTube

I am probably going to release to source code on github this weekend or at the start of next week, and
also make an alpha version available.

4 Likes

It’s really cool.
Already want to try it. :slight_smile:

Wow, this looks really good.
Nice job.
But what does “klatsch” stand for? German by any chance? xD

Ah, klatch is in fact english (like in coffee klatch), but is indeed derived from German. In Dutch we also us the same stem : koffie klets. :slight_smile:

Ok,

so I placed it on Github : samynk (Koen Samyn) · GitHub

There are two projects there:

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.

1 Like

I cannot compile ML because of Batik(jar) and Intersect(project).

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.

Ok, going to look into it a little bit deeper now, probably my misunderstanding of how github works :-?

That is very impressive! Nice work! Makes me think of the Aurora Engine from (NWN) the way it looks.

1 Like

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.

1 Like

Added a github page for the project with a first alpha release:

http://samynk.github.io/DArtE/

Please keep in mind:

  • the release is largely untested outside of my laptop
  • please run it with a console window enabled, to make it easier to report errors back.

I’m interested in :

  • useability feedback
  • crashes
  • bugs
  • any ideas you might have to improve the workflow.

Thanks in advance,
Koen

3 Likes

This is looking really cool. Keep up the good work!

1 Like