使用四面体笼对海量动画几何体进行光线追踪
Ray tracing massive amounts of animated geometry using tetrahedral cages

原始链接: https://gpuopen.com/learn/ray-tracing-massive-amounts-animated-geometry/

Gruen 等人荣获大奖的论文《Ray Tracing Massive Amounts of Animated Geometry》提出了一种新颖的解决方案,旨在解决复杂动画场景中实时光线追踪的性能瓶颈。 在传统的渲染流程中,对密集网格进行动画处理需要频繁且昂贵地更新加速结构(BVH),这往往会超出 GPU 的帧时间预算。作者提出通过使用低分辨率四面体笼(tetrahedral cages)将动画与三角形数量解耦。这些笼子充当代理:在运行时,仅对笼子进行动画处理,而复杂的几何体则保持在静态的、预计算的“静止姿态”。进入四面体的射线会被变换到该静止姿态空间,从而无需更新底层 BVH 即可高效进行求交计算。 这种方法显著降低了内存占用和计算开销,使得以 60 FPS 渲染拥有数亿个动画三角形的场景成为可能。虽然该技术最适用于植被摇曳或人群等保持连接性的动画,但它为传统的顶点动画提供了一种可扩展的替代方案。目前的研究正致力于提升笼子的质量,并提供 C++ 库以便将此方法集成到现代光线追踪流程中,帮助开发者克服当前动画几何体在扩展性上的限制。

光线追踪海量动画几何体计算成本高昂,因为每当顶点移动时,空间索引(包围盒层次结构,即 BVH)都必须更新。虽然对 BVH 进行简单的“重拟合”(refitting)适用于轻微形变,但往往会导致树结构效率低下,从而降低光线追踪性能。而从头开始重建树又非常缓慢。 GPUOpen 的一篇新论文提出了一种处理复杂场景(例如包含 5.8 亿个三角形的场景)的解决方案,即使用粗略的四面体网格。系统不再更新海量的三角形,而是对数量少得多的四面体单元(例如 200 万个)进行动画处理,并更新其对应的 BVH。 当光线与动画四面体相交时,它会被“扭曲”回静止姿态,从而允许系统为其中包含的三角形使用静态的高性能微型 BVH。该技术将 BVH 更新成本与三角形总数解耦,为在光线追踪环境中管理高保真动画几何体提供了一种更有效的方法。这种方法借鉴了软体模拟中使用的技术,即通过底层的简单变形格点来驱动复杂几何体。
相关文章

原文

The animation scaling problem

Ray tracing has become a practical part of real-time graphics, but animated geometry still presents a difficult scaling problem. The paper Ray Tracing Massive Amounts of Animated Geometry by Gruen et al., winner of the third-place Wolfgang Straßer Award (Best Paper) at High-Performance Graphics 2026, tackles a common production case: scenes with many complex objects that all deform differently. In a conventional ray-tracing pipeline, every uniquely animated mesh may require both its vertices and its acceleration structure to be updated each frame. That computational cost grows with triangle density, so geometrically dense foliage, grass, crowds, or creatures can quickly consume the frame budget. As each unique animated object may need to store its own set of bounding volume hierarchy, memory consumption may become prohibitively high.

Ray Tracing Massive Amounts Animated Geometry 01Figure 1. Animated scene with roughly 585 million animated triangles @ 60 frames per second (AMD Radeon™ RX 9070 XT GPU at 1080p)

Decoupling animation and triangles

The central idea of the paper is to decouple animation cost from triangle count. Instead of applying animation directly to every triangle, the method builds a low-resolution tetrahedral cage around the original, non-animated mesh. During preprocessing, the mesh is split into small, disjoint pieces associated with the tetrahedra. Static mini-BLASes are then built for these pieces once and reused. At runtime, only the cage is animated. Rays that enter an animated tetrahedron are transformed into the corresponding rest-pose space, where they can intersect the static geometry. The resulting motion is an approximation: vertex movement is represented by a piecewise-linear deformation induced by the cage, rather than by a smooth global bend or by full per-vertex animation.

This makes the approach especially attractive for massive scenes where many copies of the same asset are animated in unique ways. Each unique deformation needs its own animated cage, but it can share the same rest-pose mini-meshes and mini-BLASes. The paper demonstrates this with trees, grass patches, and frogs, and shows a combined scene of roughly 585 million animated triangles rendered at 60 frames per second on an AMD Radeon RX 9070 XT graphics card at 1080p. The key message is not that tetrahedral cages replace every animation technique, but that they provide an additional new low-cost option when acceleration-structure updates, animation time, or memory footprint become the bottleneck. The paper also sits alongside similar independent work by Luton and Tricard (2026), which explores tetrahedral indirection but uses multiple hardware rays and no clipping step. Please note that tetrahedron-cage driven animations can be combined with the Microsoft DirectX® Raytracing (DXR) Functional Spec, Part 2 – e.g. partitioned top-level acceleration structures – and can also coexist with cluster level acceleration structures.

Ray Tracing Massive Amounts Animated Geometry 02Figure 2. High-level workflow.

The trade-off is control over quality versus performance. A coarser cage is cheaper and smaller, while a finer cage can follow the original animation more closely. The method is best suited to connectivity-preserving animation, such as swaying vegetation, grass, crowds, distant characters, or animation level of detail. It is less appropriate for cases where topology changes, very small-scale motion, or sharp character deformations are the visual focus. Please note though that tetrahedron-cage driven animations can also be used in the context of partitioned top-level structures and can also coexist with cluster level acceleration structures.

What’s next for tetrahedral cages

Overall, the paper presents tetrahedral cages as a practical bridge between rich animated content and hardware-accelerated ray tracing. By animating a compact proxy and reusing static rest-pose geometry, it opens the door to scenes that would otherwise be too expensive to update every frame. Future work will focus on improving cage generation and animation quality, as well as integration with modern ray-tracing pipelines. Please note that we are hard at work to create DXR samples and a header-only C++ library that allows building high-quality tetrahedral cages for skinned objects, keyframe-animated objects, and static objects. If you’re working on animated geometry at scale, we encourage you to dive into the full paper below, and stay tuned to GPUOpen as this research continues to evolve.

Links to third party sites are provided for convenience and unless explicitly stated, AMD is not responsible for the contents of such linked sites and no endorsement is implied. GD-97.

DirectX is a trademark of the Microsoft group of companies.

联系我们 contact @ memedata.com