IMML
IMML (Interactive Media Markup Language) is a markup language designed to transport and store 3D vitual world descriptions and multimedia experiences in a XML format. IMML supports spatial parent-child hirarchies, worlds with worlds using the Widget type, timeline events, triggers, physics, networked elements and much more.
XML formats are not generally thought of as appropriate for real time data transport formats for multiuser experiences but that is exactly how VastPark implements IMML in it's platform and based on the results we've blogged about, our recent optimizations and results you can quickly discover for yourself, IMML is a real time file format.
When used in combination with MetaWSS, IMML files can refer to all kinds of content as web services. This means you can sidestep the traditional issues of proprietary file formats in the game technology industry. IMML aims to be a write once - deploy everywhere specification. Other developers can create new immersive media players, augmented reality applications and virtual world data importers which implement the IMML specification.
Effort has gone into IMML to ensure it is readable. The Creator software features an IMML view which offers code auto-completion which makes coding in IMML intuitive for developers who have not touched it before. IMML is an open format and our long term aim is to see it used as widely as possible for a range of purposes such as an interoperable virtual worlds document format and a powerful well thought-out schema-based XML scripting format for multimedia especially where multimedia events must be time-based, trigger-based and/or spatially aware. This means IMML is well suited to augmented reality uses.
[IMML masterclass video will be included here]
IMML's main functions include:
- Camera - Define and control multiple cameras in the 3D scene
- Dock - Add GUI elements to the screen
- Element - Main element type are models and primitives
- Light - Define and control lights in the 3D scene
- Material group - Control appearance of elements
- Material - Control appearance of elements
- Model - Define and control 3D models
- Network - Set whether or not changes are networked and who controls that element
- Physics - Define physics properties on each element. Example: Create collisions
- Plugin - Supports easy extension through an unlimited plugin system. Example: Character Plugin
- Primitive - Create primitives inworld or in the Creator to more quickly try out your ideas. Example: Build a maze
- Script - Gives you the power of Lua scripting in a safe sandboxed environment
- Shader - Supports shaders
- Sky - Set the sky. Supports skyboxes.
- Sound - Supports sound effects
- Text - Supports text onscreen and inworld
- Texture - Add textures to your primitives
- Timeline - Enables unlimited timeline events.
- Trigger - On various events, trigger anything you like
- Video - Add video inworld
- Web - Create 2D web elements
- Widget - Embed IMML documents inside other IMML documents via reference using the Widget function
For a full description, see the IMML specification documentation in our Developer Documents.