One Picture Limited

......................."HyperMatter will bring your objects to life - almost literally!"..................

High quality (soft and rigid) dynamics, motions and effects for use in
games, animation, virtual reality, etc.

Autumn 2023
HyperMatter For Unity 1.5

(For Windows and Mac)

November 2023: release 1.5.0 with full Collision Detection,
Improved Rigd-Body Dynamics, Soft-Transforms and Deformation Layers,
Dynamic Start at Handover, full Import of Global User-Constraint Scripts
+ Extended Documentation and Tutorials
+ New Example Demo Videos (incl: full scripts and notes)

 Available in the Unity Asset Store.


HyperMatter is physically based software for modelling the real-time dynamics of rigid, quasi-rigid and soft, highly deformable objects and materials. At the core of HyperMatter is a very accurate and stable elasticity model derived from the classical theories of continua and elasticity.

Our HyperMatter For Unity plugin provides a high-quality and stable physically-based foundation for Unity users, incorporating all the essential, most general and commonly used features of HyperMatter into their games, animations, VR, etc. Its accuracy and 'dynamic correctness' mean that the motion it produces is realistic and natural and visually appealing. Stability means that objects can suffer large deformations and violent impacts without becoming chaotic or wildly inaccurate. Even smaller, more subtle deformations can be very revealing about an object, and greatly enhance the sense of materiality and realism. The eye can easily discern the difference between realistic motion and motion that merely purports to be realistic. Much of its design effort has been to ensure the plugin is as simple and easy to use as possible. It has a very compact user interface, consisting of only a small number of editors and controls. Even users who have little (or no) knowledge of dynamics, or experience writing scripts, will be able to benefit from most of the features the plugin offers. You will probably understand the main aspects of the plugin in just a few minutes.

Main Control Panels/Sections

HMUniverse : Manages Hyp objects and displays global settings/info (e.g. number of Hyp objects and vertex points, internal HM frame-rate, etc) and global Walls settings

Hyp Object Creation and Removal Tools : Enables quick and easy creation of controlling Hyp object tailored to (roughly) fit around selected Unity object(s) or hierarchy.

Hyp Object Initial State Editor : For manually setting/displaying Initial state of Hyp objects: Initial position, velocity and Angular Velocity of Hyp object (X,Y,Z-components), Put on Floor, Restore (back to its original shape/configuration), Set Initial State (from current state when playback paused), ReAlign (to match arbitrary transformed configuration of associated Unity object(s)),. Also: Deformer Mode button (ON/OFF) to temporarily suspend effect of Hyp object, and AutoReset (ON/OFF) to either manually set Initial state or calculate on-the-fly, at handover frame during playback, for seamless continuity of motion.

Hyp Object Material Properties Editor : UI-slider controls to edit/display: frame-ratio, space/time-scale factors, density, elasticity, damping, friction, 2D-stiffness., and gravity (X,Y,Z).

Hyp Object Part Editor : Enable parts to be created/edited using mouse-drag selection rectangle in the Scene-View.

Hyp Object Constraints : Constraint components for each type of constraint: including: Position, Velocity, Angular velocity, Expansion, Viscosity, Wind, Rigidification, Fix, FixPos, FixOri, Infinite-Plane, Self-Collisions. Similar UI-format for all constraints, enabling Target Part, Start and End Modes (On Start, At Frame/Eternal, On Event), Start and End Frames (if relevant), constraint Target Value(s), etc, to be specified, as appropriate. In addition, 'On Event' start and end modes enable the instants at which a constraint starts and/or ends to be triggered in response to Unity conditions or events (in scripts).

Our introductory HyperMatter For Unity plugin provides a high-quality and stable physically-based foundation for Unity users, incorporating all the essential, most general and commonly used features of HyperMatter into their games, animations, VR, etc.


Similar UI-format for all constraints. Parameters include: Part ID-Number, Start and End Modes, Start and End Frames (if relevant), Constraint Target Value(s), etc, to be specified, as appropriate. Special constraint Start and End modes enable constraint to be triggered in response to Unity conditions or events.

HyperMatter constraints can be set up either using Constraint components, or else they can be scripted, allowing almost complete control of objects during playback

Notes for HMUBearHead_112023 :-

The BearHead and UnderWater demo videos illustrate the power and simplicity of using HyperMatter scripts in Unity to control the real-time motion of deformable objects. The videos show the scripts used to control the respective Hyp deformer objects and the resultant motions, illustrating how just a small number of carefully selected constraints can produce very natural looking and visually complex motions.

The motion of the 'talking' BearHead is produced, essentially, by just two applications of the HyperMatter 'Fix' constraint. The first to simply hold the Hyp BearHead object in place, by Fixing a part consisting of the base layer of Hyp vertex points and a few other points along a short vertical column roughly through its centre. Otherwise the Hyp object would waft around in response to the second Fix constraint.

The second application of the Fix constraint attaches a part of the Hyp object in the mouth region to a target Cube control object whose X and Y scale values have been scripted (or keyframed, possibly) to vary periodically, to produce 'talking' type motions/deformations of the Hyp BearHead.

The video also illustrates a wider range of expressions and contortions that are possible by also varying either the position or the rotation of the Cube control object, or by using more extreme scaling values. In a more complex example, other control objects could be attached to, or Fixed to, other parts of the Hyp object, to produce particular expressions and effects (e.g. to raise or lower eyebrows).

A more robust approach altogether could use 'two' deforming Hyp Head objects, one to model talking motions, and the other to model more general expressions and contortions, independently, with the deformations produced by the one Hyp object superimposed or layered onto those produced by the other - using HyperMatter's 'Dynamic' Deformer Style (also called a 'soft-transform')..This approach would enable completely independent control of the two types of deformation

The video also shows the script used for constraining the motion of the Hyp BearHead - and the use of the Dynamic Deformer Style used for the modelling the movement of eyes and eyelids, which all move relative to the main Hyp BearHead deformer object. It also demonstrates the role of certain material properties of the Hyp object, and the effects that these have on the overall motion of the Head. In particular, how slow and lethargic motions, or fast and wobbly motions, can be produced by changing the elasticity and damping parameters of the material.

Notes for HMUUnderWater_112023 :-

A:. The Fish:

The BearHead and UnderWater demo videos illustrate the power and simplicity of using HyperMatter scripts in Unity to control the real-time motion of deformable objects.

The actions we apply to the Hyp fish fall under three main types: Fistly, a mechanism to produce the fish's 'flapping' motion. Secondly, a mechanism to propel the fish through its enveloping medium - derived from or based on its flapping motion. And thirdly, various supplementary methods to steer and stabilse the Hyp fish. For example, to turn it left or right, or up or down, or to just simply stay more or less 'upright'.

To create a flapping motion we repeatedly expand and contract the left and right sides of the Hyp Fish. To acheive this, we use the HyperMatter SetDistance() constraint function, which, each instant it's called, separates two parts of a Hyp object by a specified distance, which we derive from a sine function that we compose with a semi-random 'saw-tooth'-shaped function to generate more natural looking flapping sequences.The constraint is dynamically balanced, so that, like any internal physical force system, its effect will not change or interfere with the object's momentum.

Having derived a flapping motion we can then compute a rough 'thrust factor' based on the tail region's current 'flap angle' and velocity, which we can then use to accelerate the fish forwards, using either the setHypForce() or SetHypVel() constraint functions, for example.

To dampen its motion through the water, and to prevent it acquiring ever increasing speeds, we couple the thrust with a constant viscous reaction force applied to a front-facing part in the Hyp Fish's head region, using the ImposeViscosity() constraint function.

To keep the Fish more or less 'upright' we simply apply equal and opposite constant Y-forces (like gravity) to the top and bottom regions of the Hyp Fish.

And then, finally, to occasionally steer the Hyp Fish, either left or right, or up or down, we can then every so often simply apply the SetHypAngVel() constraint function over a few frames.

The careful organisation of small number of HyperMatter constraints can produce quite complex natural motions and behaviours, with many of the same nuances and details familiar from real life.

B. The Jelly Fish:

Again, we use the same HyperMatter SetDistance() constraint function on the Hyp JellyFish that we used in our Fish example, but this time over two (top and base) parts to create the characteristic pulsating motion (contracting and expanding) of the JellyFish.

As mentioned, the SetDistance() constraint is dynamically balanced (cf. Newton's 3rd Law) over the two parts it operates on and so will not effect the object's momentum. It can therefore be interpreted as an 'internal' mechanism created by the creature itself, again adding to its natural behaviour and realism. Having created the pulsating motion, in order to actually propel the Hyp JellyFish through the viscous medium (water) we then apply the HyperMatter ImposeViscosity() constraint over a base region of the Hyp JellyFish, causing it, in response, to effectively push upwards against the water.

Finally, despite the lateral (X and z) symmetry of the Hyp JellyFish itself, and the parts used to propel it, even the smallest numerical rounding errors will very gradually cause its otherwise vertical trajectory to drift to one side. To counter this, we apply the HyperMatter ImposeFixOri() constraint to the Hyp JellyFish object to hold its orientation constant. (The same constraint could also be used to 'steer' the JellyFish, if desired).

Again, this example demonstrates how the application of a very small number of constraints can produce highly complex and natural looking motions - including the complex secondary motion of its tentacles.

Finally, to move the Coral, we simply apply the SetHypPosition() constraint over two or three horizontal parts, using combinations of two out-of-phase sine functions to add a little bit of irregularity.


Core Features and Highlights

  • Accurate, dynamically correct, natural real-time motion
  • Stability (large deformations and violent impacts)
  • Hyp object creation routines with automatic shaping
  • Full set of classical material properties
  • Seamless continuity of motion at handover from keyframed motion
  • Secondary/inertial motions (to add inertial effects to keyframed objects)
  • Powerful constraint system - operating over parts of Hyp objects
  • Soft and rigid collision detection
  • Compact UI controls
  • Extra control through Unity scripts
  • Comprehensive documentation, examples and tutorials
  • Easy to learn

    Basic methodology:

    To create a HyperMatter object ('Hyp object', for short) from a selected Unity object (or hierarchy) you just need to set 2 or 3 parameters specifying its desired shape and resolution, and click of a button. The new Hyp object will appear in your scene, with a default set of material properties (including, elasticity, damping, bulginess, friction, etc), which you can later reset as desired.

    Once you've created your controlling Hyp deformer object, you can reposition it anywhere you want, and specify when you want it to start. This might be at the beginning of the scene, or you might, for example, want it to take control of its associated Unity object halfway through its keyframed motion, either at a pre-defined 'handover' frame, or perhaps in response to some condition or trigger event. For this, you'll just need to switch ON its 'AutoReset' property and call a special Hyp object function from a script during play (time stepping) at the instant of handover. It's that simple.

    To control the otherwise natural motion of a Hyp object you apply HyperMatter constraints, which operate over pre-defined 'parts' of Hyp objects. A relatively small number of basic/primitive HyperMatter constraints are supplied, from which you can build more complex control mechanisms to customise the exact effect or behaviour you want.

    As soon as you start playing with HyperMatter you will see how Hyp objects really do bring your objects to life - almost literally! Hyp objects can do many of the things that real objects can do, and much more besides. They can squash and stretch, wobble, twist, bend, they can be picked up, hung by their corners, swung, dropped, bounced off walls or the floor, made to jump or fall over, etc, etc