The most common uses for HyperMatter include general squash-and-stretch effects and adding secondary, inertial deformations to otherwise rigidly moving objects. These effects are particularly simple to implement, and can greatly increase an object’s realism and visual appeal.Other areas where HyperMatter can play a substantial role include skinning of simple skeletal structures, facial animation, slipping, sliding and rolling effects, and contacts, impacts and collisions. The range of possible uses and effects are endless.The strength of HyperMatter derives from its very accurate and stable elasticity model. Unlike most other approaches, it does not use linear springs. Instead it is derived from (a unique 6D-variant of) the equations governing the classical theories of elasticity and continua.Linear spring approaches (which avoid solving the classical 3D elasticity equations altogether) are necessarily very crude and the motions they produce are therefore artificial looking and often unpleasant. They also suffer severe stability problems, especially when large deformations are involved.Another approach are finite element methods, which can usually only handle small deformations also, and, in any case, are designed to enable very accurate calculation of the stresses and strains that arise in particular regions of irregularly shaped materials (e.g. triangular sheets of metal with holes cut in them). They are not normally designed for animation or real-time contexts, where such detailed analysis is not needed.
HyperMatter Physical Components
A recent extension of the core HyperMatter system are ‘physical components’. These are dynamically-closed composite objects (built from simple Hyp objects and other lower-order components) that manage or control their constituent objects to fulfil a specific role or function. Higher-order components can be created by attaching together other lower-order components and regular Hyp objects.Two examples of first-order components are ‘rotorunits’ and ‘motorunits’, from which simple, higher-order machines, contraptions and vehicles can be built. HyperMatter vehicles can be driven in various different driving and braking modes, they have forward, neutral and reverse gears, they can be steered, and they have accelerator and brake pedal-type control mechanisms, and many other features that real cars have. They can be driven over flat or hilly terrains, and can be made to skid and do wheelies and other stunts, and to crash, etc…etc.Because they are physically based in the true sense, HyperMatter vehicles are remarkably realistic, and exhibit many of the same nuances and characteristic movements and responses that real and toy cars do.NOTE: We are currently creating a special version of the HyperMatter Demo application specifically to demonstrate HyperMatter vehicles. This will be available to download very soon. Please contact us if you are a developer of car games, or similar technologies, and would like more information about HyperMatter vehicles and the underlying physical component technology.
Basic HyperMatter Scenario
Physically based animation of a user geometry object is achieved by first creating a controlling Hyp object that roughly matches the shape of the geometry object (either automatically, or manually). The shape of the Hyp object can then be edited, if necessary, to achieve a better fit with its associated geometry. An appropriate set of material attributes is ascribed to the object, and an Initial state is defined.HyperMatter performs physically based animation through an internal ‘time-stepping' function, which, each time it is called, progresses the current state of the Hyp object from one instant to the next, according to Newton’s laws and its physical and material properties. This process determines the ‘natural' motion of a Hyp object.The natural motion of Hyp objects can be ‘constrained', using built-in constraint functions, to control its motion or behaviour. HyperMatter constraint functions can act on either individual (nodal) points of a Hyp object or on ‘parts' of Hyp objects (sets of Hyp object points, either default or defined by the user).For example, parts of Hyp objects can be temporarily or permanently ‘rigidified’, or ‘fixed in space’, or `attached’, by various means, to moving (e.g. key framed) geometry objects (cf. animatronic type control methods used in real life), or, for example, to the moving `bones’ of a skeleton. Other constraints enable contacts and collisions to take place between Hyp objects, or between Hyp objects and any user-geometry (surface), or against fixed walls or planes.More generally, any position, velocity or angular velocity can be ascribed to any part or point of a Hyp object at any time. The programmer, therefore, has complete control of Hyp objects at all times. Points of Hyp objects can also be glued together, or unglued. The glue constraint is used internally by HyperMatter vehicles, for example, to attach together its constituent components and its Hyp object `chassis/body’.Using the supplied HyperMatter constraints, more complex, customised, constraints can be constructed. The fact that HyperMatter is physically based means that the task of designing efficient constraint mechanisms is intuitive…usually, you just need to imagine how you would contrive the same sort of effects in real life, and then figure the best way to implement them using the HyperMatter constraints.Finally, after each frame of physically based animation, the new shape/state of geometry objects is interpolated from the current state of their associated Hyp objects, thus resulting in physically based animation of the geometry.
HyperMatter API
The class-based HyperMatter software library has been developed, tested and fine-tuned over many years, and numerous, custom-designed extensions and additions have also been developed, including interpolation methods for enabling HyperMatter to operate on arbitrary user-geometry (via its own HyperMatter objects), and a compact but powerful set of constraint functions.HyperMatter relieves the programmer of the difficult and time consuming task of modelling and programming the low-level material structure and behaviour of physically based objects, allowing the programmer, instead, to attend to higher level issues involving object set-ups and initialisations and the means of controlling Hyp objects. Many different object set-ups are possible, and the programmer has `complete’ control of all objects at all times.The HyperMatter API is designed to be the simplest solution that is sufficient to address the wide range of possible physically based scenarios that a programmer is likely to encounter. Many different object set-ups are possible, and the programmer has `complete’ control of all objects at all times.The HyperMatter API includes the following five main classes:
1.An instance of the HypObject class contains the data and functionality of an individual Hyp object, including its constraint functions and functions for getting and setting its many features and properties.
2. An instance of the HypObject class contains the data and functionality of an individual Hyp object, including its constraint functions and functions for getting or setting its many features and properties.
3.An instance of the GeoObject class contains vertex, face, and transform data representing user-geometry, and interfaces between user-geometry and Hyp objects. A special GeoObject member function enables a Hyp object to be created from it automatically, which roughly matches its shape and configuration. Another can be used to interpolate new vertex positions from the current state of its associated Hyp object (if any).
4. An instance of the HypGroup class can be used for managing groups of Hyp objects.
5. An instance of the GeoGroup class can be used for managing groups of Geo objects.
HyperMatter Demo Application
The HyperMatter Demo Application enables you to load a selection of example scene files (demonstrating some of the many uses for HyperMatter, and the different effects and styles of motion that it can produce), and to experiment with its many features.The functionality of the Demo Application closely matches the functionality of the HyperMatter API on which it is based. For example, the HyperMatter Constraint Editor enables you to easily and quickly set up sequences of HyperMatter constraints (with full use of variables and logical flow of control) that correspond directly to the constraint sequences that the API programmer would otherwise need to encode manually.The Demo UI controls allow you to create simple ‘Geo’ objects (representing your own geometry objects), and to key frame them, if necessary. Hyp objects can be created, either automatically from Geo objects, or on their own and then later ‘materially associated’ with arbitrary Geo objects. Controls are included for editing the structure/shape of Hyp objects, editing `parts’ and ‘groups’ of Hyp objects, and for editing their Initial states and material properties. After each frame of animation, the new state of each Geo object is then automatically interpolated from that of their associated Hyp objects.Another feature of the Demo lets you ‘pick up’ Hyp objects up and ‘throw’ them about, interactively, using the mouse-pointer. This is a particularly simple way to appreciate their remarkable stability and quality of motion.Download the HyperMatter Demo from this site, and explore the many possible uses, effects and behaviours that can be achieved with HyperMatter.
Download HyperMatter Demo (approx 1MB) :-
PLEASE NOTE: The HyperMatter folder must be extracted from the download (.rar) file on your computer. The HyperMatter folder contains the HyperMatter Demo executable, and folders containing help notes and example scene files. Please do not remove the executable from this folder.