Emma General FAQ

From Emma

Murat Aktihanoglu Chris Marrin Rob Myers

Q. What is Emma?

A. Emma is an open, extensible 3D multimedia runtime for the Web. EMMA stands for Extensible MultiMedia Architecture.

Q. Is it free?

A. Completely. Emma is available under LGPL ( Lesser General Public License). http://www.gnu.org/copyleft/lesser.html

Q. Who is doing this?

A. The individuals above, working at Manyone Networks, Inc. http://www.manyone.net

Q. Why yet another runtime for the web?

A. As principals on SGI's Cosmo team [Cosmo Player, Cosmo Worlds], we were deeply involved in the architecture of VRML and its follow-on, X3D. Evolving interpreted 3D content architectures for interactive television applications at Sony U.S. Research Labs led to an advanced real-time video synthesis engine for the PlayStation2. Given today's advances in industrial-strength open source graphics solutions, we feel it is time to bring broadcast-quality, high-performance interactive media compositing out from its proprietary roots and in to the light of an active open source community.

Q. What does Emma use for its interpretive scripting?

A. Emma integrates a lean, flexible, high-performance lua engine into its core. http://www.lua.org

Q. What does Emma use for its graphics?

A. Emma uses Ogre, an open, state-of-the-art game graphics engine, for its 3D rendering. http://www.ogre3d.org

Q. Does Emma use OpenGL or Direct3D for its rendering?

A. Both. Ogre supports OpenGL, DirectX7 and DirectX9 rendering libraries.

Q. When did you start working on Emma?

A. April 2005.

Q. Which platforms does Emma run on?

A. Emma targets Windows, MacOS, and Linux in its cross-platform strategy. At this early date, we are only building for Windows so far.

Q. Is Emma compatible with XYZ file format?

A. No and yes. Emma's extensible media framework supports both lean runtime and comprehensive authoring modules. At its core, Emma interprets only .lua script files. We have also provided a translator which reads .ema markup files, with an .xml translator slated for development soon. You can readily write a translation module to read in your own favorite markup.

Q. Is Emma compatible with VRML and/or X3D?

A.�Emma is an application engine, intended to be used for many uses. Because of that, it is pretty node set agnostic. The core contains very few node implementations. Most of the functionality comes from node extensions. We have two basic node sets currently: nodecore contains some generally useful nodes, not really tied to a particular rendering style. For instance, it contains Timer, which is similar to TimeSensor, but is much more general purpose. In fact, it would be trivial to create a declarative PROTO for TimeSensor using the implementation of Timer.

We also have node3d, which has specific 3D nodes. For instance, this set has Mesh, which has some slight resemblance to IndexedFaceSet. We chose the specific implementation of this node because it closely matches the capability of modern graphics hardware. The main difference between Mesh and IFS is that Mesh has a single VertexBuffer which contains points, normals, texture coordinates and colors. This is because this maps directly to the highest performance interface to both OpenGL and Direct3D. Because of this we are able to render a 157,000 triangle heart model at 500fps on a moderately powered laptop. I don't think we ever got as much as 10% of this performance out of an IFS implementation in previous engines.

Of course, you can create a declarative PROTO to duplicate the functionality of IFS. In fact, we have one but it is in its infancy. But doing this at runtime has performance penalties, so we also have a VRML2Mesh converter which does the transformation offline. Mesh also takes advantage of Ogre's extremely advanced rendering model. Because of this, we can do very complex multitexturing, multipass rendering using vertex and fragment shaders with fallbacks for older hardware.

Our next step is to work on a high-quality, sub-pixel accurate screen-space 2D renderer. This will render 2D objects, including true-type based text, transformed into 3D space. This will allow great fidelity of even small point size text. It goes far beyond the text capabilty of VRML and is needed for the applications we will be writing.

The point of all this is that these first node sets are designed to serve our needs for rendering in our application area. But Emma is Open Source software. It is ready for anyone in the X3D community to create an X3D node set, along with VRML and X3D file readers and even a Javascript capability, producing a fully compatible X3D browser. Also, Emma already has some VRML import capability and we will be enhancing that in the future. This makes work done in VRML and X3D translatable to Emma, where all the features we have added, such as inline scripting, advanced prototyping and new node sets can be used.

Because of all this, we feel this will be an important project for the X3D community.

Q. Will Emma support javascript, ecmascript, or anything besides LUA?

A. Not in the core. But Emma is completely extensible. It would be very possible to create an extension containing a Script node implementation. This could either have a hard-coded Javascript engine built into it, or could be further extensible to allow other languages to be plugged in.

With that said, let me preview an idea I am working on. Lua is an extremely compact and fast engine. I am looking at writing an extension to Lua or a translator that would allow Javascript syntax to be translated into Lua. Most of the differences are purely syntactic (e.g., Lua uses ~= rather than !=) and would be easily translated. Others would take more work (e.g., switch) but could be translated into equivalent Lua statements. A small number of features (e.g., exceptions, with) would be more difficult and could be left out.

Note that this would not give you a VRML Script node, which has very specific semantics, not supported in the Emma core. The best solution for that is, as mentioned above, a Script node extension. But having Javascript syntactically supported in the core would make it much easier to put Javscript support into such an extension!

Q. What is .lua?

A. Emma's interpreter reads .lua scripts to instantiate a scene full of media objects and the programmatic relationships between them. An extensible suite of smart media objects have been predefined, allowing these scripts to focus on the specifics of the interactive presentation at hand.

Q. What is .ema?

A. The .ema file format provides an uncluttered declarative scene markup format, suitable for use by content artists and other non-programmers.

Q. How can I create content for Emma?

A. Today, you can look at the examples and type in content using a text editor. As Emma's authoring extensions mature, a rich toolchain will evolve.

Q. Does Emma support XYZ rendering capability?

A. Yes! Thanks to Ogre, Emma supports:

   * skinning (skeletal animation with meshes and bones)
   * particle systems (smoke, rain, fireworks, etc.)
   * volumetric textures
   * high dynamic range rendering
   * real-time shadowing
   * shaders

Q. Is Emma fast?

A. Quite. Emma renders a complex surface of 30,000 triangles, where every vertex is being dynamically recomputed every frame using an interpreted lua script, at 60 frames per second on a 3GHz CPU high-end machine. Performance does vary across different machines, but this example is an interesting indicator of Emma's speed potential.

Q. What if I want to try it out?

A. The very early Emma 0.2 version installer is available from http://www.emma3d.org

Q. What if I want the source?

A. Access the Emma source code soon, from http://www.sourceforge.net/projects/emma3d

Q. What if I want to contribute to the development?

A. Welcome. Please start by downloading the source, building and running it. As you make changes to the code, you can submit PATCHES that the Emma team can integrate into the Emma source.

Q. There is a bug! Where do I file it?

A. Please submit bug reports at http://www.sourceforge.net/projects/emma3d

Q. I want to get involved more!

A. Please feel free to email us at emma@emma3D.org

Q. Is there a forum?

A. Yes, at http://www.emma3d.org