To conserve memory and minimize processor cache misses and GPU state changes, we need reasonable ways of "instancing" scene graph elements, meaning reusing the same objects in cases where the same element conceptually appears multiple times in the same scene.
It's possible to implement a transform and bounding volume hierarchy which supports instancing, however the overhead is significant, both in terms of its impact on processing costs and memory-use, as well as on ease-of-use for many use cases.
Read more ...
Functional programming techniques can be used in conjunction with lazy binding to rather easily and compactly express the complex multi-valued dependencies we require.
Read more ...
Here's my attempt to write up a description of the benefits of lazy binding with respect to the construction and composition of 2d shapes. Don't be too surprised by the naming discrepancies compared to analagous classes from javafx 1.x. For the record, this project was no fork, rather its original version predated the release of javafx 1.0 by over a year, in fact it began prior to the start of any actual development of the javafx 1.0 runtime, aka "Reprise" - but that's another story.
Read more ...
Although I wasn't able to create enough momentum to keep this particular project going, if you agree with our assessments, namely observing on the one hand the objective reality of today's hardware (you can't actually buy a pc without a GPU - yet if you install a GPU monitor you'll see that it remains pretty much !00% idle unless you scroll a window or play a 3D video game), and on the other hand the reality of how designers and technical artists work (the people who make the multimedia content we see every day in movies, tv, video games), and
Read more ...
Although I'm not a world class 3d animation expert, the artist member of our little team was. His name is John Yoon, and he's an amazing guy. He went to MIT with Ken and received a degree in computer science, then worked for a number of years at Alias/Wavefront as an engineer on Maya.
Read more ...
We require a high quality engine for both collision detection and dynamics animation. In the current version we utilized the open source Bullet engine which is quite good. It should be straightfoward to plug in alternate engines, although we haven't done so. The input to the engine is the initial world transform of the body, its collision geometry, mass, friction, restitution, initial velocity, initial spin, initial orientation, initial position, and center of mass.
Read more ...
Although our long term objective with this project included incorporating Anthony's tool design, given our available resources (1 artist, 2 programmers), our short term objective beginning last December was to create a multimedia production system consisting of just Maya + Photoshop + Illustrator + Scripting, with the intent of eventually sticking Anthony's tool in the middle, and have it incrementally assume some of the work performed in Maya/Photoshop/Illustrator and some of that performed by scripting.
2D Usability
As mentioned, due tp per
Read more ...
Rendering
Triangle mesh geometry and texture mapping
The system under discussion here is fundamentally a 3d system. To get high performance, we must design our software systems in such a way as to be able to efficiently leverage the 3d graphics hardware. At the end of the day this boils down to constructing and populating sequences of vertex attributes and textures and making them available to the graphics driver.
The rendering system has several layers.
Read more ...
Round 1
Scene graph design
The system mentioned in my previous post utilizes JavaFX script language features to construct a lazy dependency graph, part of which is the scene graph that provides the infrastructure for rendering, picking, and collision detection. This scene graph does not use the trigger feature of JavaFX script, but rather relies on its lazy binding feature.
Thus, when you modify the scene, nothing happens other than that things that depend on your modifications are (implicitly) marked invalid.
Read more ...
The below are a few examples from a project I've worked on for the past 1+ years - all written in javafx script with a modified compiler and from the ground up custom runtime written by me and a few others - one of them Ken Russell - who sadly just left Sun. We weren't able to obtain the support we needed for this project to continue, which took its toll.
Read more ...
Although you probably didn't see me, I was at JavaOne, where they unveiled the JavaFX design tool. Although the demos were fairly minimal, the elegance, beauty, and genius of Anthony's design showed through to me.
TIMELINE DESIGN
Collada MoonBuggy with skin animation in JavaFX.
In the scripting API for this scene graph, animated Collada models are Nodes which are also polymorphic with Timelines. You can "play" them.
Read more ...
It's very easy to create simple yet elegant custom vector user interface elements in JavaFX 1.0 by means of simple compositions of basic shapes. The above example consists entirely of compositions of simple triangles and (rounded) rectangles, together with some text.
The outer shell is a round rectangle from which two other round rectangles have been "subtracted", one for the control area, and one for the track of the slider.
Read more ...