Shopping around for a graphics engine, completely new to JMonkey

We’re a team of two trying to make a 3D game with LWJGL. About a year ago we started writing what I guess qualifies as a basic graphics engine, and got so far as a demo consisting of a single mesh with like 10 bones, texture, shader, controlable camera, and a basic repeating animation using matrices and/or quaternions. I also recall writing a python script in blender to export files into our own xml based format
I had to do some money oriented work for a few months but now I’m itching to get back at it. I have big aspirations and want to try to implement some pretty atypical ideas, I don’t know if JMonkey is suitable for my needs, so I’ll describe what I’m doing and you can yell at me to go google it:

  1. I have this idea where meshes have internal textures assigned to them, so that when they’re cut in pieces the texture of the exposed surface is auto generated. It has an orientation within the mesh, probably following the nearest bone. Think rings on a tree, off white for cutting apples, or red with white in the middle for severed body parts. I’m assuming this one is the most likely to be a deal breaker it deals intimately with how things are handled on the cpu and maybe the shader too.

  2. Multiple viewports. Not just to have stationary 3D stills in the inventory, but like a secondary frame showing what an entirely different camera sees.

  3. Dynamically generated meshes. When a mesh is loaded, sometimes I’ll apply a transformation on it, not to scale it up, but to instead make it’s points move closer or further from it’s skeleton according to some muscularizing algorithm.

  4. Cheap collision detection where hitboxes are cylinders (distance from line) from the bone with varying radius. Graphics and physics will be speed + quantity over quality.

Please let me know which of these are least suitable for use with JMonkey and why, and point me to any resources that outline the general scope of what JMonkey is responsible for. Thank you.

It’s suitable for all of them, see the wiki and the examples on github or sdk.

Is .j3o human readable? Where can I find specifications of what all it stores or an example file?

[quote=“M_C, post:3, topic:36846, full:true”]
Is .j3o human readable?
[/quote]If by “human readable” you mean “readable as a text document”, then no.

But you can import it as .j3o (binary) and then export to .xml (XML) format.
Not sure how much of that XML you will be able to read or understand though.
Use BinaryImporter and then XMLExporter.

.xml files are immense but they’re somewhat understandable: just be sure to download something like Notepad++.

I basically breathe and defecate .xml for a living, so I’m not worried about being able to read it. Notepad++ is the best xml viewer I’ve used.

By import .j3o and export as .xml do you mean import into blender and export collada (.dae)? or is an .xml version of .j3o? If it’s colladae I don’t care, otherwise I’d really love to see it if someone has one handy or a link to it.

I just want to get the hang of the format (how many bone weights per index (if any restriction), whether textures are tied to triangles or indices, and so on. The details.) Thanks for everyone’s assistance. I’m also still interested any resources that provide a general overview of potential limitations of JMonkey.

Glanced through this and see references to scenes. How restrictive are these scenes?
My game world is going to operate like a conveyor belt under the player, with different combinations of different variations of pre-existing objects like trees and walls loading and unloading on the edges of the landscape as they move. The client won’t know what’s over the horizon until they go there, which seems fundamentally incompatible with a scene that can be saved.

You will have to handle paging yourself or look into an add-on library.

For example, this demo uses my paging library and can scroll endlessly, basically:

(no releases moved to github after googlecode died so you’d have to build from source… maybe I’ll upload a release soon.)

The blog-like thread about how I made it:

A video of it in action:

It uses this library to manage the multithreaded paging:

1 Like