Spine :: Requirements
The following is a possible set of requirements for a platform that enables the creation of immersive applications. spineFORGE is working towards providing as much of this functionality as possible via a set of logically structured programmeable software components.
An platform for building immersive worlds could offer the following functionality:
- Installer
- Operating System Services
- Network Services
- Multimedia Services
- User Interface Services
- Scripting and Behaviour Services
- Common Utilties
- Documentation
For a set of requirements and use cases for immersive application software in general - see Use Cases.
Installer
Simple placement of the software on the users machine
The mechanism by which software is installed on a computer is very important. It is the first interaction the user has with a digital product. Spine will ship via a standardized, familiar installation system that will cleanly place the system on a new computer, and just as cleanly, remove it again if required. The spineFORGE website will provide detailed instructions and extra information about setting up a Spine system for use.
Unified install process
If it is at all possible, when Spine is deployed on multiple platforms, it should provide a similar install procedure on each of these platforms.
Operating System Services
Computer information retrieval and manipulation
Spine must provide access to general computer and operating system information so that it can be exposed to applications or integrated into the digital environment.
Computer name
A Spine-based application must be able to access the name of the computer.
User name
A Spine-based application must be able to access the name of current user of the computer.
Network addresses
A digital environment application must be able to query the local network environment.
Hardware probing
Spine should provide mechanisms for discovering hardware capabilities of the host machine.
File management
Spine should provide access to the operating system file structure as well as cater for commonly used file management functions such as reading, writing and copying files.
Buffers and streams
Spine should offer components that simplify the use of data buffers and streams.
Configuration Management
A Spine-based application should be configurable, and thus should provide a means to read, and manipulate configuration data.
XML Support
XML is the latest open format for data exchange. Spine should support XML for many areas of use, such as message passing, configuration and storage.
Internationalization
Spine should allow applications to be easily ported to languages other than English.
Network Services
Server
Spine, being a distributed system, provides a Server component that can "serve" environment data.
Session management
Spine should manage connections, disconnections and message passing between remote applications.
Connection listener
A server must listen for incoming connection requests from remote client applications.
Resource management
The server-side of a digital environment must provide means to manage and control potentially large amounts of environment data.
Server Tick
An immersive environment - like it's human users, changes through time. The server must provide a means to update itself for each time-frame.
Client
Spine's multimedia and interactivity aspects are controlled through it's Client component.
Session Management
The Spine Client must be able to search for Servers, and connect to one once it is found. It must also be capable of sending and recieving messages or signals to and from the Server.
Resource Management
The Client-side of an immersive environment must control multimedia resources such as graphical images, textures and sounds.
Client Tick
As with the Server, the Spine Client must provide a means to update itself through time.
Peer
If possible, Spine should allow peer-to-peer immersive worlds to be created.
HTTP
Spine clients must be able to connect to HTTP servers and retrieve data and documents as well as perform the standard set of HTTP commands.
Data compression
The key to large scale immersive worlds is allowing large amounts of environment and session data to pass to all computers involved. Compression will help with fitting all that data into the limited bandwidth available to computer networks
Multimedia Services
Graphics (Plug-in renderers)
The pluggable Spine graphics system must provide simple control and creation of a graphical scene.
2D Graphics
In this world of immersive 3D graphics, we cannot overlook the importance of 2D effects:
Vector drawing
Surface management
Blitting
3D Graphics
3D graphics are a primary enabler of immersive digital worlds.
Geometry management
3D graphics is accomplished using complex geometrical systems. Spine must provide ways of loading, manipulating and displaying many kinds of geometrical shape and animation data.
Static meshes
Pre-made 3D objects must be able to be loaded, placed and viewed within an immersive scene.
Morphing meshes
Differing shapes should be able to be blended together over time to provide morphing or shape-shifting effects as well as other kinds of animation.
Skeletally-animated meshes
Geometry must be able to be animated using complex jointed skeleton heirarchies. This will enable realistic character animation. Smooth-weighted surfaces should be supported for believable animation.
Inverse Kinematics
This technology will allow things like complex constraints and animations.
Rasterizing
Spine graphics must be able to draw complex materials and surfaces using the advanced rasterization capabilities of modern graphics systems.
Shading
Spine must support the ultimate in graphics flexibility - shaders.
Textures
Realistic materials are created using a combination or artist-created and procedurally generated texture that is applied to geometry.
Projection
Projection allows textures and images to be placed over geometry in special ways that can simulate complex lighting effects or decals.
Cameras and Viewports
Since Spine enables interactive immersive worlds to be created and controlled, we need a way to view these worlds.
Transformations
All scene aspects: geometry, texture and cameras, must be able to be transformed, or manipulated in position and orientation.
Video
No multimedia experience is complete without video. Spine should allow video streams to be played back in multiple ways - fullscreen, within windows, and placed on geometry.
Overlays
Graphical user interface elements should be able to be placed onscreen alongside the scene itself. These could provide means of controlling as well as analyzing the environment.
Resource Management
2D and 3D graphics are stored in many different formats and data types. Spine should allow the loading of as many formats as possible, to maximize the variety of software that can be used to create content for Spine-based applications.
Alternative Mediums
Spine-based applications should be presentable on multiple formats.
Some possibilities are:
CAVE's
Panoramic displays
TV
Sound
Immersion within a digital environment is maximized with good use of sound. Spine must provide simple access to powerful sound functionality.
Music
Spine should support the loading, playing and filtering of music within an environment. It would be preferable to support a wide array of music formats.
Surround Sound
Surround sound is incredibly effective when it comes to convincing a user they are taking part in a real experience. Spine must allow world-builders to place and control sounds in 3D space.
Streaming and compression
Spine should support streaming audio, as well as various compressed sound and music formats.
User Interface Services
Keyboard
The keyboard is the primary computer input device. Spine must support computer keyboard input with speed and simplicity.
Mouse
Mice are very effective controllers of a 3D scene or user inteface. Spine must provide fast and precise access to the state of mouse controllers.
Joysticks and control wheels
Many kinds of immersive application will benefit from being joystick-controlled, for example flight simulators and driving applications.
Force feedback
Spine should be able to control the force feedback mechanisms of modern controllers, thus maximizing immersiveness.
Datagloves
It would be great to provide support for VR datagloves, for the ultimate in manipulative possiblities within 3D worlds.
Scripting and Behaviour Services
Scripting Language Integration
Spine should support the building of applications with scripting and interpreted languages. It would be ideal to have a plug-in language system.
Common Utilities
Constants
Spine must provide access to a wide set of internationally-recognized constants. These will be of many cateogories, from mathematical contants, to lists of things such as ther days of the week, the names of the months in various cultures. If possible these could be accessed by operating system-hosted API's, otherwise default builtins can be used.Units
Spine should provide information, conversions and display of multiple scientific units, such as the metre and kilogram, newton and kelvin. This capability should possibly be hosted within the default number type, or at least string formatting functions.Rendering systems (DrawModules)
The Spine graphics system should support add-on DrawModules that extend it's functionality and
allow for the presentation of advanced immersive elements such as :
Outdoor rendering system
Indoor rendering system
Space rendering system
Physics system
Spine could provide a physics system that will control objects that should
behave in a real-world manner. The physics system should control things that
are flying, falling, breaking etc.
It could be argued that this should be provided by another seperate library, although such capabilities will soon be provided by add-on hardware or even on the Graphics chip, so core integration might simlpy be more efficient.
Such a system should support:
Constraints
Rigid Bodies
Soft Bodies
Bipeds/Quadropeds
Documentation
The Spine Software Development Kit should ship with a comprehensive documentation set that includes:
Easy to navigate website
Simple, yet complete API documentation
Tutorials
Reference Manuals
Samples
Bibliography
[Prev] [Next]