Head Avatars with Dynamic Explicit Hair¶
Conference: ECCV 2026
Paper: ECCV 2026 Poster
Code: https://dynhair.is.tue.mpg.de/
Area: 3D Vision
Keywords: dynamic hair modeling, digital humans, 3D Gaussian splatting, strand dynamics, multi-view video
TL;DR¶
DynHair presents an animatable head avatar combining explicit strand geometry with 3D Gaussian Splatting, using a temporal LSTM-FiLM network conditioned on head angular velocity, acceleration, and relative gravity alongside physical elastic regularization to generate realistic, temporally coherent hair dynamics from multi-view videos.
Background & Motivation¶
Recent breakthroughs in Neural Radiance Fields (NeRF) and 3D Gaussian Splatting (3DGS) have brought remarkable photorealism and real-time rendering speeds to digital head avatars. However, the vast majority of existing avatar pipelines focus almost exclusively on the facial region, tying facial deformations to parametric morphable head models (such as 3DMM or FLAME) while treating hair implicitly as an unstructured extension of the head mesh. While this simplification yields acceptable visuals during static or gentle head movements, it fundamentally fails when the subject engages in rapid motion: real hair swings with inertia, lags behind sudden rotations, aligns with gravity during head tilts, and demonstrates gentle settling oscillations, whereas conventional avatars produce stiff, scalp-glued hair or blurry, flickering artifacts.
Simulating dynamic hair using standard physics engines (such as Maya or Houdini numerical solvers) demands high-fidelity strand geometry reconstruction alongside manually tuned physical coefficients (mass, stiffness, damping, friction). Recovering such differential parameters automatically from video remains an open inverse problem. Conversely, recent capture-based neural approaches that directly predict displacements over unstructured Gaussian clouds or implicit volumes lack geometric strand topology constraints, frequently suffering from non-physical strand stretching, mesh penetrations, and temporal jitter caused by over-fitting to high-frequency image textures.
DynHair addresses this dilemma by marrying explicit deformable strand polylines with differentiable 3D Gaussian Splatting, learning hair dynamics directly from multi-view video sequences under physics-based and geometric guidance. Core idea: disentangle the avatar into unstructured facial Gaussians and explicit strand-aligned Gaussians, extract head-local angular velocity, acceleration, and relative gravity as temporal conditioning for an LSTM-FiLM deformation network, and jointly supervise appearance, penetration, and segment elasticity to achieve physically plausible, temporally consistent dynamic hair.
Method¶
Overall Architecture¶
DynHair operates via a multi-stage decoupled pipeline taking multi-view video as input and producing an animatable 3D head avatar. In the static initialization stage, a canonical hairstyle is reconstructed as explicit polyline strands using a geometric hair prior (Im2Haircut), while the face and upper body are initialized with unstructured 3D Gaussians. In the dynamic training stage, the head's rigid motion is tracked via a parametric face model to compute angular velocity, acceleration, and local gravity over a sliding temporal window. These dynamics are encoded by an LSTM whose output modulates per-point strand features via FiLM layers. A lightweight MLP equipped with a learnable root attenuation factor then predicts per-point non-rigid displacements. Finally, strand-aligned Gaussians are composited with facial Gaussians and rendered via differentiable splatting under photometric, geometric, physics-based elastic, and color-smoothness losses.
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["Multi-View Video Input<br/>Synchronized multi-view video streams"] --> B["Local Dynamics Extraction & LSTM Encoding<br/>Central difference velocity/acceleration/gravity"]
A --> C["Canonical Hairstyle Prior Initialization<br/>Im2Haircut PCA-based strand reconstruction"]
B --> D["FiLM Modulation & Root Attenuation<br/>Modulate strand features and predict displacements"]
C --> D
D --> E["Strand-Aligned 3DGS & Disentangled Rendering<br/>Merge hair and upper-body Gaussian primitives"]
E --> F["Elastic Preservation & Multi-Loss Regularization<br/>End-to-end optimization of dynamics and appearance"]
Key Designs¶
1. Local Dynamics Extraction & LSTM Encoding: Decoupling rigid pose to capture inertial lag Hair dynamics are fundamentally governed by inertial forces and gravity rather than absolute head orientation. Conditioning a deformation network directly on absolute head pose causes the model to memorize specific viewpoints rather than learning true velocity-dependent lag and swing. DynHair tracks the rigid head rotation \(R_t\) and computes world-frame angular velocity \(\omega_t^\text{world}\) and acceleration \(\alpha_t^\text{world}\) via central finite differences, rotating them into the head-local frame: $\(\omega_t = R_t^\top \omega_t^\text{world}, \quad \alpha_t = R_t^\top \alpha_t^\text{world}\)$ Similarly, canonical gravity is rotated into the local frame as \(g_t = \mathrm{normalize}(R_t^\top [0, -1, 0]^\top)\). For each time step, a sliding window of historical frames \(\{t-T, \dots, t\}\) forms 9D conditioning vectors \(c_\tau = [\omega_\tau, \alpha_\tau, g_\tau]\). After positional encoding, these vectors pass through an LSTM with learnable initial hidden states to produce a compact temporal motion embedding \(z_t\). This captures the historical momentum necessary for inertia, lag, and settling behaviors.
2. FiLM Modulation & Root Attenuation: Enforcing strand-level physical hierarchy Hair deformation varies drastically along the strand: roots firmly anchored to the scalp barely move relative to the head, whereas free-hanging tips swing with large amplitudes. To adaptively guide each strand point, DynHair linearly projects the motion embedding \(z_t\) into scale and shift parameters \((\boldsymbol{\gamma}_\text{film}, \boldsymbol{\beta}_\text{film})\) to modulate the positional encoding of each strand vertex \(p_{ij}\): $\(\mathrm{FiLM}(p_{ij}) = \gamma(p_{ij}) \odot (1 + \boldsymbol{\gamma}_\text{film}) + \boldsymbol{\beta}_\text{film}\)$ The modulated feature is concatenated with the normalized arc-length index \(j/L \in [0, 1]\) and passed through a strand MLP. The output is scaled by a learnable root attenuation factor \(\rho_j\): $\(\Delta p_{ij} = \mathrm{MLP}\Big(\mathrm{FiLM}(p_{ij}),\, j/L\Big) \cdot \rho_j\)$ Initializing \(\rho_j\) as a linear ramp from small values near the scalp to 1.0 at the tip, paired with near-zero initialization of the MLP's final layer, guarantees stable early optimization where strand roots remain attached while tips move freely.
3. Strand-Aligned 3DGS & Disentangled Rendering: Coupling explicit polylines with Gaussian rendering Unconstrained Gaussians tend to drift and tear under rapid motion, breaking the continuous filament-like appearance of hair. DynHair models the hairstyle as \(N \approx 11,000\) polylines with \(L=40\) points per strand, placing 3D Gaussian primitives directly on each segment. The Gaussian center sits at the segment midpoint, its major scale axis aligns with the strand tangent with magnitude proportional to segment length, and the transverse scale axes are fixed to the physical strand width. Orientation quaternions are propagated continuously along the strand via parallel transport. By combining these strand-aligned Gaussians with the facial Gaussians driven by expression deformation MLPs, the combined model is rendered end-to-end with differentiable splatting into RGB, segmentation masks, and 2D strand orientation fields.
4. Elastic Preservation & Multi-Loss Regularization: Eliminating rubber-band stretching and temporal flicker Photometric supervision alone cannot prevent hair strands from artificially stretching and compressing to fit 2D silhouettes. To enforce physical inextensibility, DynHair introduces an elastic regularization term penalizing segment length deviations from the rest geometry: $\(\mathcal{L}_\text{elastic} = \frac{1}{NL} \sum_{i=1}^{N}\sum_{j=1}^{L-1} \Big| \|p_{t, ij+1} - p_{t, ij}\| - \|p_{0, ij+1} - p_{0, ij}\| \Big|\)$ To eliminate head penetration, points falling inside the head mesh incur a squared point-to-mesh penalty \(\mathcal{L}_\text{penetr}\). In the 2D image domain, an asymmetric recall loss \(\mathcal{L}_\text{seg}\) strictly penalizes missed hair coverage, while a wrap-aware loss \(\mathcal{L}_\text{orient}\) aligns rendered orientations with ground-truth orientation fields modulo \(\pi\). Finally, color gradient along strands \(\mathcal{L}_\text{cg}\), spatial KNN smoothness \(\mathcal{L}_\text{cs}\), and per-strand color consistency \(\mathcal{L}_\text{cc}\) guarantee temporal and spatial appearance coherence.
Loss & Training¶
The pipeline trains in two stages: 1. Static Initialization Stage: Optimizes canonical hair geometry \(\mathcal{H}_0\) at \(t=0\) using multi-view images under Im2Haircut reconstruction, PCA regularization, and smoothness constraints. 2. Dynamic Training Stage: Jointly optimizes the hair deformation network \(D_\text{hair}\), canonical geometry (with small learning rate), facial deformation MLPs, and Gaussian appearance attributes under the combined objective: $\(\mathcal{L}_\text{dynamic} = \mathcal{L}_\text{photo} + \mathcal{L}_\text{hair} + \mathcal{L}_\text{color\_reg}\)$ Training runs for 320,000 iterations on a single NVIDIA A100 GPU at 1024x1024 resolution, with the VGG perceptual loss weight increased for the final 80,000 steps to sharpen fine strand appearance.
Key Experimental Results¶
Main Results¶
DynHair was evaluated on multi-view head sequences against state-of-the-art head avatar baselines GaussianAvatars (GA) and Gaussian Head Avatar (GHA), as well as a physics-based simulator (Maya) driven by numerical solvers. Evaluations assess full-image and hair-region image metrics alongside dedicated temporal dynamics metrics (\(\text{tLPIPS}_\text{ex}\), non-rigid velocity, and acceleration).
Table 1: Self-reenactment quantitative comparison averaged across 3 test subjects (reproduced from original paper Table 1)
| Method | Full PSNR↑ | Full SSIM↑ | Full LPIPS↓ | Full FID↓ | Hair PSNR↑ | Hair SSIM↑ | Hair LPIPS↓ | Hair IoU↑ | Hair tIoU↑ | Hair FID↓ | \(\text{tLPIPS}_\text{ex}\) | Velocity(×\(10^{-3}\))↑ | Acceleration(×\(10^{-3}\))↓ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GA [45] | 20.17 | 0.7787 | 0.2536 | 45.73 | 19.94 | 0.7335 | 0.1362 | – | – | 126.93 | -0.0230 | 0.40 | 0.08 |
| GHA [62] | 22.33 | 0.7925 | 0.2056 | 36.25 | 22.15 | 0.7446 | 0.1086 | – | – | 81.07 | -0.0127 | 2.17 | 0.24 |
| Maya* | 19.39 | 0.6610 | 0.2465 | 62.64 | 17.89 | 0.5182 | 0.1484 | 0.776 | 0.925 | 121.97 | 0.0183 | 2.38 | 0.11 |
| DynHair (Ours) | 21.60 | 0.7638 | 0.2010 | 30.06 | 21.01 | 0.6885 | 0.1101 | 0.878 | 0.936 | 37.51 | 0.0045 | 2.41 | 0.19 |
*Note: \(\text{tLPIPS}_\text{ex}\) measures excess temporal variance relative to ground truth; values close to 0 represent natural motion, whereas negative values signify temporal over-smoothing and stiffness. Ground-truth \(\text{tIoU}_\text{hair}\) is approximately 0.946.
Ablation Study¶
The ablation evaluates physical realism across 2 scenes and 3 motion types (nodding, left-right motion, rotation) at 240k iterations using Velocity Explosion Ratio (VER), Displacement Spike (P95-Disp), Curvature Temporal Smoothness (CTS), and Angular Momentum Drift (AMD).
Table 2: Ablation study on physical realism of hair motion (reproduced from original paper Table 2)
| Config | \(\text{IoU}_\text{hair}\)↑ | \(\text{tIoU}_\text{hair}\)↑ | \(\text{LPIPS}_\text{hair}\)↓ | \(\text{tLPIPS}_\text{ex}\) | VER↓ | P95-Disp↓ | CTS (×\(10^{-4}\))↓ | AMD↓ | Note |
|---|---|---|---|---|---|---|---|---|---|
| Ours (Full Model) | 0.883 | 0.945 | 0.101 | 0.0024 | 26.88 | 0.071 | 2.2 | 7787 | Optimal balance of visual quality and physics |
| Maya (Reference) | 0.789 | 0.941 | 0.131 | 0.0080 | 33.73 | 0.057 | 1.0 | 7120 | Simulator reference; suffers from coverage errors |
| w/ absolute pose | 0.885 | 0.945 | 0.101 | 0.0028 | 36.27 | 0.071 | 1.9 | 7816 | Degrades generalization and increases velocity spikes |
| w/o acceleration \(\alpha_t\) | 0.878 | 0.944 | 0.101 | 0.0026 | 29.05 | 0.077 | 2.1 | 8332 | Loss of inertial cues impairs expressiveness |
| w/o gravity \(g_t\) | 0.852 | 0.932 | 0.104 | 0.0058 | 23.13 | 0.070 | 2.2 | 8159 | Strands fail to fall naturally during head tilts |
| w/o elastic loss \(\mathcal{L}_\text{elastic}\) | 0.873 | 0.943 | 0.103 | 0.0047 | 283.75 | 1.159 | 15.6 | 196993 | Catastrophic stretching and non-physical deformation |
| w/o FiLM modulation | 0.877 | 0.945 | 0.102 | 0.0009 | 40.46 | 0.104 | 3.8 | 8277 | Suboptimal feature modulation degrades precision |
| w/ MLP encoder | 0.879 | 0.949 | 0.102 | -0.0010 | 32.18 | 0.065 | 2.0 | 7377 | Negative \(\text{tLPIPS}_\text{ex}\) indicates stiff, over-smoothed hair |
Key Findings¶
- Structured geometry versus pixel metrics trade-off: While GHA achieves slightly higher pixel-aligned PSNR/SSIM, its negative \(\text{tLPIPS}_\text{ex}\) (-0.0127) and high hair FID (81.07) reveal that it over-smooths high-frequency hair fibers to fit average pixel values. DynHair achieves a drastically superior hair FID of 37.51 and \(\text{tLPIPS}_\text{ex}\) near zero (0.0045), generating sharp, natural strand dynamics.
- Critical role of elastic regularization: Removing \(\mathcal{L}_\text{elastic}\) causes VER to explode by over \(10\times\) (from 26.88 to 283.75), P95-Disp to surge from 0.071 to 1.159, and AMD to reach 196,993. Explicit segment length constraints are essential to prevent unconstrained neural networks from taking degenerate rubber-band shortcuts.
- Necessity of temporal conditioning and LSTM: Disabling acceleration or gravity degrades coverage and increases angular momentum drift, while replacing the LSTM with an MLP produces negative \(\text{tLPIPS}_\text{ex}\) (-0.0010), demonstrating that recurrent historical memory is vital for capturing follow-through motion and settling.
Highlights & Insights¶
- Pose-invariant local dynamics encoding: Transforming velocity, acceleration, and gravity into the head-local reference frame effectively disentangles rigid motion from dynamic non-rigid hair behavior, allowing motion learned on specific actions to generalize smoothly to novel driving trajectories.
- Strand-aligned 3DGS bridging physics and rendering: By constraining 3D Gaussians to explicit polyline segments with parallel transport quaternions, the system maintains continuous geometric strand topology while retaining the full differentiability and rendering speed of 3DGS.
- Downstream editability from explicit representation: Because hair is modeled as discrete 3D strands rather than an entangled radiance volume, the avatar naturally supports intuitive post-reconstruction manipulations such as trimming hair length or modifying hair color without retraining.
Limitations & Future Work¶
- Collision modeling limited to the head mesh: The current penetration loss only accounts for the parametric head mesh, omitting explicit collision handling with the neck, shoulders, and clothing during extreme poses.
- Dependence on 2D segmentation and landmark tracking: The method relies on pre-trained segmentation networks for hair masks and orientation fields; extreme hair occlusions or tracking drift can compromise strand reconstruction.
- Discrete transition at the scalp boundary: The interface between strand-aligned Gaussians and unstructured facial Gaussians can exhibit subtle boundary artifacts in extreme close-ups, despite root tapering heuristics.
Related Work & Insights¶
- vs GHA [62] & GaussianAvatars [45]: GHA models hair and face together with unstructured Gaussians, resulting in rigid, over-smoothed hair lacking inertial dynamics; DynHair explicitly decouples hair as dynamic strand-aligned Gaussians conditioned on local physical accelerations.
- vs PhysHead [28] & Maya Simulation [1]: PhysHead reconstructs static hair and drives it with an offline, non-differentiable physics simulator where physical parameters are hard to tune; DynHair learns motion end-to-end from multi-view video, yielding superior perceptual realism (hair FID 37.51 vs 121.97).
- vs HHAvatar [35] & HADES [34]: HHAvatar uses unstructured Gaussians that lack strand coherence, while HADES models only sparse guide strands and interpolates others; DynHair directly optimizes a dense set of ~11,000 explicit strand polylines under global physical constraints.
Rating¶
- Novelty: ⭐⭐⭐⭐☆ [Pioneering integration of explicit strand-aligned 3DGS with head-local dynamic temporal conditioning learned directly from video]
- Experimental Thoroughness: ⭐⭐⭐⭐⭐ [Extensive comparisons against state-of-the-art avatars and physical simulators, introducing dedicated physical realism metrics and comprehensive ablations]
- Writing Quality: ⭐⭐⭐⭐⭐ [Clear mathematical formulations, coherent structure, and transparent analysis of the trade-off between pixel alignment and physical dynamics]
- Value: ⭐⭐⭐⭐☆ [Offers an actionable paradigm for high-fidelity, controllable hair dynamics in digital human avatars, virtual production, and real-time telepresence]