Untold Engine 0.18.0: Height-Map Materials, Physics Raycasts, Foot IK, and Motion Matching #1165
untoldengine
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Untold Engine 0.18.0 is now available, bringing height-map Parallax Occlusion Mapping to the material system, a physics raycast facade with an octree fallback, foot IK, and motion matching for animation-driven locomotion.
This release leans into two things at once: richer surface detail for static scenes, and more capable, less hand-authored character movement.
Height-Map Materials & Parallax Occlusion Mapping
Materials can now carry a
.heighttexture that drives Parallax Occlusion Mapping (POM) — a shading-time technique that displaces the sampled UV based on a height field, so surfaces like brick or stone read as having real depth without adding any geometry.The Blender exporter bakes displacement/height maps into this new channel, and the height remap ceiling is derived directly from Blender's Displacement Midlevel so authored values translate predictably into the engine. Landing this cleanly took a handful of follow-up fixes: correcting the TBN calculation POM depends on, fixing the batching system so it no longer drops the displacement material on batched meshes, detecting 16-bit/grayscale texture sources from the file header instead of trusting Blender metadata, and a precision fix in the exporter itself.
Docs: Materials, Textures, and Color Management, Asset Format
Physics Raycast Facade
PhysicsQuery.raycast(_:filter:)gives engine code a single, backend-agnostic way to ask "what does this ray hit?" — it routes to the active physics backend when one reports raycast support, and falls back to a documented best-effort query against the engine's own octree of entity bounds when there is no backend, or the backend doesn't support it yet.The fallback handles excluded entities, layer masking, max distance, and the trickier edge case of rays that originate inside a target's bounding box (reporting a hit at distance 0, as documented, rather than silently missing). This is phase 1 of the physics plugin readiness work tracked in discussion #1116, and also ships the backend-author guide for building a physics plugin against the engine.
Docs: Creating a Physics Backend Plugin
Foot IK
Animation clips are authored against a flat ground plane, so on real terrain feet tend to float or sink. Foot IK is a new opt-in (default off) system that samples the ground beneath each configured ankle every frame and adjusts the hip and knee with a closed-form two-bone solver so the foot actually lands on it.
Ground sampling defaults to a downward scene raycast (built on the new octree picking), and games can override it per entity to use a heightfield, navmesh, or physics query instead.
Docs: Using Foot IK
Motion Matching
Motion matching animates characters without a hand-authored animation state machine. Gameplay supplies a goal — desired velocity, facing, typically the output of steering — and the controller searches a runtime motion database for the clip frame that best matches the current pose and predicted future trajectory, then jumps there through an inertialized transition.
Clips become vocabulary and the search becomes the state machine, which removes a lot of the blend-tree bookkeeping that locomotion normally requires.
Docs: Using Motion Matching
Other Fixes & Improvements
Closing
Untold Engine 0.18.0 pushes surface detail forward with height-map POM materials, gives physics-driven code a real raycast API to build against, and gives characters two new ways to move convincingly — planted feet on uneven ground, and animation driven by matching rather than manually wired transitions.
Thanks to everyone testing the demos, filing issues, and following along in Discussions. As always, feedback on any of these systems — especially the new physics facade and motion matching — is welcome.
All reactions