Matali Physics is multi-threaded, multi-platform, fully featured solution providing comprehensive support for the following areas:
The engine enables:
- Creating shapes and continuous collision detection between them.
- Each shape can contain:
- Shape primitives like sphere, hemisphere, cube, cuboid, cylinder, two radius cylinder (truncated cone), cone, capsule, tetrahedron, convex hull, convex triangle mesh, non-convex triangle mesh, heightmap, fluid, triangle, point, segment, plain.
- Additional shapes between which there are operations: Minkowski sum and convex hull.
- Each shape can be:
- Moved
- Rotated
- Scaled independently on the X, Y, Z axes (geometric scaling of the shape changes its physical properties such as mass and moments of inertia).
- For each shape can be obtained a convex set of triangles.
- Handling simple concave triangle meshes as non-static objects through the convex decomposition. The engine has a built-in functions to transform such meshes into a set of convex objects (physics objects and/or shapes and/or shape primitives).
- Handling complex concave triangle meshes directly for both static, non-moving and dynamic, moving objects.
- Performing advanced operations on arbitrary set of triangles through the triangle mesh controller.
- Creating triangle meshes.
- Meshes can be created for:
- Predefined shapes like sphere, hemisphere, cube, cuboid, cylinder, two radius cylinder (truncated cone), cone, capsule, torus, tube, triangle, plain.
- Any user shapes.
- Meshes are built by managers: the regions, vertices and triangles.
- Meshes of predefined shapes have an adjustable number of stacks and slices.
- Meshes can be read as arrays of indexed or non-indexed polygons.
- Loading arbitrary sets of triangles and using them as a convex shapes.
The engine enables:
- Continuous collision detection between different types of shapes.
The engine enables:
- Creating materials. Any material defines (among others):
- Static and dynamic friction and coefficient of restitution between objects.
- Parameters determining appearance of objects (color and transparency).
- Parameters determining destruction of objects.
The engine enables:
- Creating constraints. Any constraint contain (among others):
- Distance limits for X, Y, Z axes.
- Angle limits for X, Y, Z axes, defined as Euler angles or quaternions.
- Spring mode for distance and angle limits.
- Parameters determining the destruction of the constraint.
- Modeling constraints through the additional deformation mode. Possible applications include special effects, keyframes modeling for animation, etc.
- Creating animations through the constraints control (distance and angles).
The engine enables:
- Creating fully dynamic scenes. All scenes can be constructed from a composite of destructible objects.
- Each scene object can include (among others):
- Shape
- Constraints
- Material
- Sound
- Light
- Camera
- Controllers
- Each scene object has the following collision detection functions:
- Object-object
- Object-ray
- Object-segment
- Each scene object in conjunction with other scene objects can create a group of objects.
- Each scene object or groups of objects with constraints can be during initialization, rotated, moved and scaled.
- Each scene is processed in multiple threads.
- Concurrent sequential processing of multiple scenes. Possible applications include physical controls, menus and special effects.
- Establishing the order and the way of drawing objects.
- Supporting for transparent objects (including supporting for variable transparency objects).
- Managing of the objects through the object managers. Object managers allows (among others):
- Reading object
- Adding object
- Removing object
- Searching object
- Checking the count of objects
- Using the many cores of multi-core processors through the multi-threaded core of the engine.
The engine enables:
- Creating cameras. Any camera contain (among others):
- Frustum
- View matrix
- Projection matrix
- Creating own controllers. The controllers allows (among others):
- Changing parameters of objects
- Animating objects
- Collision reaction
- Drawing objects
- Using internal controllers such as:
- Cursor controller (provides functions to handle the cursor)
- ScreenToRay controller (allows to throw the ray in 3D space for given screen coordinates)
- Fluid surface controller (allows to create sinusoidal or cosinusoidal fluid surface perturbation in real-time)
- Heightmap controller (allows to deform the heightmap in real-time)
- Triangle mesh controller (allows to add triangles to the arbitrary set of triangles)
- Destruction controller of complex objects (allows the destruction of group of objects unconnected constraints)
- Establishing priorities for the simulation to determining the order of user controllers.
- Supporting for force-feedback.
- Supporting for local and global gravity.
- Supporting for switches.
- Supporting for lifetime physical objects through the counters of frames.
The engine enables:
- Creating character controller. The character controller is provided in source code.
The engine enables:
- Simulating imaginary or real-life vehicles. Simulated vehicles may have a steering (through the controllers and/or the switches) and are created as a complex group of objects connected constraints. All sample objects are provided in source code.
The engine enables:
- Handling symmetrical and asymmetrical heightmap both static and non-static.
- Each heightmap can be modified in real-time through the heightmap controller. The heightmap controller also allows copying data blocks to the heightmap.
- Value of friction and coefficient of restitution for any heightmap point can be changed in real-time.
- Each static heightmap shape can be subject to transformations such as rotation, translation and scaling.
- Values of height, friction and coefficient of restitution for heightmap are fully interpolated.
- Heightmap normalization can be turned on or off.
- Single physics scene can contain multiple heightmaps (static and/or non-static).
- Handling fluid surface. Fluid surface is a surface of fluid shape both static and non-static.
- Each fluid surface can be modified in real-time through the fluid surface controller.
- Each static fluid shape can be subject to transformations such as rotation, translation and scaling.
- Single physics scene can contain multiple fluid shapes (static and/or non-static) with different fluid surface controllers.
- Scalling buoyancy for each physics object.
The engine enables:
- Supporting for force fields. The force field range can be defined by any shape primitive.
The engine enables:
- Supporting for point clothes. The point cloth is fully destructible.