Java3d pushing the limits...

classic Classic list List threaded Threaded
27 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Java3d pushing the limits...

Alexei A. Morozov
This post was updated on .
Hi, Philjord

Thank you for the interesting information. Well, what is your opinion – is it possible to use your system for simulation of 3D scenes in a video surveillance? I mean, what is you estimation, how many time is necessary to create a simple 3D model of a number of rooms in a building with moving persons to obtain videos for testing behavior recognition algorithms? What additional software tools are to be used for it?

Thank you,

Alexei

P.S. I have no time to worry about the future of Java3D, because I am using it in my Actor Prolog project already... :)
Reply | Threaded
Open this post in threaded view
|

Re: Java3d pushing the limits...

philjord
In reply to this post by hharrison
Harvey,
I’m very happy to contribute back, but as I mentioned it still needs a lot of clean up work.
 
The Java3D pipeline design helped make this an change easier, I only put a single call into GeometryArray (to clean up buffers) otherwise the whole change was just a new pipeline taken from JoglPipeline.
 
It is currently aimed at being GL2ES2 compatible, so it’s got a bunch of pipeline features unsupported.
 
as a sample things like:
Raster
QuadArray
AA by accum
Texture3D
TexCoordGen
MipMap auto generation (ES2 has a different system I haven’t put in place yet)
Lines (GL_LINE/GL_LINE_STRIP) looks terrible with no line patterns
Screen door transparency
Texture Boundaries (and the CLAMP changes)
A bunch of image types aren’t supported, but all the main ones are.
 
 
 
Some stuff I didn’t really understand is dropped as well
TextureFillBackground\TextureFillRaster
Decal1stChildSetup\DecalNChildSetup
 
 
I’ve only made it go with the geometry format I needed indexed/unindexed by ref nio float buffers. All the others are not yet converted, but in theory should be fine.
 
My buffer init/cleanup is entirely in the pipeline but needs to be pushed out to the GeometryArray itself, but that’s not a showstopper just a bit of better design.
 
Finally, I have a single shader vert/frag pair that clearly shows anyone who want to see how a FFP equivalent shader would look.
I say that because thousands of learners want to know what it would look like, but no one on the web wants to say, they just say “make it do whatever you want” which is annoying when what you want is “the same as FFP”.
 
So I’ll fire you a pull request at some point in the next month or so and you can take a look at the damage and decide how you want to proceed.
 
Thanks,
Phil.
 
 
Sent: Wednesday, February 17, 2016 6:54 AM
Subject: Re: Java3d pushing the limits...
 
I'm especially interested in the pipeline changes you've made as all of the infrastructure for multiple pipelines still exists in Java3D, and if you're willing to contribute your changes upstream I'd be very interested in trying to integrate them.

Harvey


If you reply to this email, your message will be added to the discussion below:
http://forum.jogamp.org/Java3d-pushing-the-limits-tp4035814p4036269.html
To start a new topic under java3d, email [hidden email]
To unsubscribe from java3d, click here.
NAML
Reply | Threaded
Open this post in threaded view
|

Re: Java3d pushing the limits...

philjord
In reply to this post by Alexei A. Morozov
Alexei,
I see 2 issues that (probably) make my code not what you want...

The ElderScrollsExplorer code looks good because it uses the world data from Skyrim and Fallout etc, but the downside of this is the only way to change the data from the what's delivered by the game install files is to edit those files (the ones with the esm extension).

In order to edit them you need to use a tool called Construction Kit (or G.E.C.K), which is very widely used and documented by the game modding community. But it's a monstrous and powerful tool that takes weeks to get to understand and be able to use with any sort of efficiency, it's like the effort required to learn 3DStudio or Photoshop properly.

So that's the first issue, a long ramp up time.

The second is that there is currently no AI in my code at all. Each character is static like the plates and barrels. It does randomly play animations, but it does not move or make any decisions.

So you would need to add quite a bit of code to make them look alive.

Finally, and not so important, is that it will only load models that already exist (unless you also want to make models, which would mean learning Blender...), so your building and people would be forced to look either medieval or post apocalyptic, both good looks but not standard for machine learning...

I'm not familiar enough with other engines to offer a decent opinion on analternative, but I'd suggest Ardor3D and JMonkeyEngine are better places to start.

Thanks,
Phil.


Reply | Threaded
Open this post in threaded view
|

Re: Java3d pushing the limits...

gouessej
Administrator
In reply to this post by philjord
Good job and I agree about “the same as FFP”.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d pushing the limits...

Alexei A. Morozov
In reply to this post by philjord
Hi, Phil,

Yes, I read the discussion on the Java game engines with interest. But could you please explain what the advantage of your approach is? Is it a higher level of 3D scene description and, probably, simplicity of programming its modifications?

Thank you,

Alexei
Reply | Threaded
Open this post in threaded view
|

Re: Java3d pushing the limits...

philjord
Alexei,
I've been playing with Java game programming for twenty years, I was writing my "engine" before Jogamp, Lwjgl, Ardour3D, JMonkeyEngine, libGDX and especially minecraft existed, so my approach of extending the Java3D scenegraph is looked on as a folly by everyone that's working on the "real" Java engines.

Based on that I'd say nothing I'm doing is easier or simpler :)

The only aspect of what I'm doing that could be considered good practice is the following:

Game engines only exist in relation to an asset pipeline,
The definition of the 3d models (in a file format) allows a game engine to render things and allows it to to do advanced rendering techniques.
The definition of the 3d models (in a file format) allows artist to record what they create, though they create in a 3d studio tool.
The definition of the 3d models (in a file format) dictates file size, load speed, and many other performance factors (byte colors, half floats, compressed geometry etc).

So before you even think about writing a game or 3d application by using any engine or writing a single line of code, you MUST know your asset pipeline, which is at root knowing (or defining) your 3d model file format, and to a lesser extent your compressed texture format.

A lot of Java engines do not come with file formats other than the open ones that Ogre3D and Blender support, for example the .obj format; because of this many, many games are re-written over and over as the file format and everything derived from it comes up short.

So I decided to use a commercial strength format that was leading the way, the nif format, right from the beginning.

And that is the only thing about my work that is "good design", for everything else the other engines are better written and better supported.


Reply | Threaded
Open this post in threaded view
|

Re: Java3d pushing the limits...

gouessej
Administrator
philjord wrote
So I decided to use a commercial strength format that was leading the way, the nif format, right from the beginning.

And that is the only thing about my work that is "good design", for everything else the other engines are better written and better supported.
It's highly subjective and questionable. If the developers and the artists used some interchange file formats for long term storage, some editor specific file formats for modeling and editing and some engine specific file formats for loading, they wouldn't have to rewrite everything.

JogAmp's Ardor3D Continuation supports Collada which is a standard interchange file format, you can use Blender or another popular modeller to export to Collada and JogAmp's Ardor3D Continuation has its own binary file format too. If I really wanted to use exactly the same format in the modeller and in the engine, I would rather choose an open standard like the Blender file format which is supported by JavaBlend rather than a proprietary file format.
Anyway, there is a risk of being unable to do anything with a model if it becomes unreadable because of the numerous incompatible changes done in the file format of a modeler (which isn't an interchange file format) or because of the changes intentionally done in a closed file format in order to force the end users to pay to read their files (typical in Autodesk and Adobe file formats including FBX and DXF/DWG).
Therefore, there is no need to rewrite a game when you use a widely supported file format (including WaveFront OBJ even though it's good only for static things). In the worst case, you may have to write an import/export script for the modeller and/or an importer/exporter for the engine. Choosing a closed file format is the best way to put yourself into the worst case, especially if there are a few people using this file format. For example, Blender has no build-in import script for MD2 since its version 2.50.
Julien Gouesse | Personal blog | Website
12