1) It automatically builds the top-level scene graph for a program, adds a background, a set of lights, an optional floor grid and x-, y-, z- axes. The camera allows both mouse-based and key-based navigation.
2) The scene is automatically displayed in a JFrame. A menu bar includes a item for taking screenshots, information about the camera controls, and resetting the camera position.
3) Simple3D contains an ever-growing collection of static methods for common tasks:
* scene graph node creation;
* applying colors and textures;
* loading, examining, and saving OBJ models;
* translating, rotating, and scaling;
* common forms of animation;
* using vertex and fragment shaders.
Please download it, and try out the examples.
I've only just started this project, so I'd love to get feedback.
That's fantastic work!
I love the idea of it, now you've done it is seems obvious in retrospect, Java3D is a wonderful tool for teaching the working of all game engines, but still one level too deep.
When you mentioned your book I looked up and can see it on my bookshelf, I really loved reading that all those years a ago, it fired my interest in Java3D and game engine mechanics.
I tried running the examples and obviously was far too keen, so I flipped the compile.bat to compile *.java, but the useTetra fails out of the box for me:
Compiling useTetra.java with JOGL and Java3D...
useTetra.java:24: error: incompatible types: BranchGroup cannot be converted to Shape3D
Shape3D tet1 = Simple3D.tetra(1, 1.5, 2, "blue");
useTetra.java:27: error: cannot find symbol
Shape3D tet2 = Simple3D.texTetra(1, 4, 1, "images/marble.jpg");
symbol: method texTetra(int,int,int,String)
location: class Simple3D
I'm just Win10, openJdk 1.7
Well done on this.
At some point in your tutorials you may get to be explaining the fixed function versus programmable pipeline differences (once you've thrashed through texture mapping and line drawing, etc). When I learned shader programming I found that there is absolutely nothing (not anything) on the internet for learning the conceptual mapping between fixed and programmable, the only advice is "start from scratch and start coding in GLSL..."
Java3D 1.7 supports a programmable only pipeline and will actually build shaders for you (by way of the SimpleShaderAppearance), so you can see how a NodeAttribute changes a vertex shader and then passes data onto a fragment shader. That may be useful when explaining how scene graphs drive shaders.
Java3D 1.8 will have multipass rendering as well, it supports a shadow map now.
My attempts to get the GLJPanel created by Simple3D to display in a swing JFrame (as created by a NetBeans form) are not working. The Simple3D constructor was modified to accept a JFrame object as a parameter, rather than creating its own JFrame.
The Simple3D constructor creates the GLJPanel then calls initFrame()