// undine docs
Scale & Resolution
Make fluid behavior predictable across vastly different scene sizes — from droplets to waterfalls.
The Scale & Resolution system separates voxel size from domain size and lets you choose whether scaling a domain means more detail or the same visual motion in a smaller space.
Overview
Undine's scale-aware resolution system is designed to make fluid behavior predictable across very different scene sizes: small containers, facial droplets, character splashes, waterfalls, rivers, and large exterior bodies of water.
The system separates two concepts that are often confused in fluid simulation workflows:
- Resolution — how large each simulation voxel is in world space.
- Scale behavior — whether physical parameters are interpreted as real-world values or artistically rescaled to preserve the same visual motion after scaling the domain.
This makes it possible to choose whether a smaller domain should mean more physical detail at a smaller scale, or the same visual simulation inside a smaller working area.
The main controls are located on the Domain object under Undine Domain > Scale & Resolution.
Why Scale Matters
A fluid solver is sensitive to the relationship between voxel size, velocity, time step, surface tension, viscosity, collision margins, and particle spacing.
If the domain is scaled down while grid resolution is kept constant, the voxel size becomes smaller. This can lead to:
- Lower FPS and higher computational cost
- Noisier motion and CFL capping
- Surface-tension jitter
- Unstable small-scale droplets
- Unexpectedly expensive small domains
The Scale & Resolution system gives explicit control over this behavior.
Example: Voxel Size Changes
| Domain Size | Grid Resolution | Voxel Size |
|---|---|---|
| 1.0 m | 100 | 0.01 m (1 cm) |
| 0.5 m | 100 | 0.005 m (5 mm) |
| 0.25 m | 100 | 0.0025 m (2.5 mm) |
A smaller voxel can be useful when more detail is desired, but it also makes the simulation more demanding. CFL, surface tension, and viscosity constraints may require more substeps.
Resolution Mode
Undine supports two main resolution modes that control how voxel size is determined.
Relative Grid Resolution
This is the legacy/default resolution behavior where voxel_size = domain_max_extent / grid_resolution.
If the domain becomes smaller, the voxel size becomes smaller too, giving you more detail but higher cost.
Use Relative Grid Resolution when:
- You want the same number of grid cells regardless of domain size
- Reducing the domain should increase physical detail
- You are intentionally increasing simulation resolution by scaling the domain down
- You are working with legacy scenes that already rely on this behavior
Fixed Voxels Per Meter (VPM)
This mode keeps the physical voxel size constant: voxel_size = 1 / voxels_per_meter.
If the domain becomes smaller, the grid has fewer cells, making small domains cheaper instead of accidentally more expensive.
Use Fixed Voxels Per Meter when:
- You want stable physical resolution
- You want a specific voxel size (1 cm, 4 mm, 2 mm, 1 mm) regardless of domain size
- You are simulating real-world sized objects
- You want predictable scaling from glass-sized scenes to larger domains
Recommended VPM Values
These values are starting points. Production scenes may require higher or lower values depending on camera distance, particle count, meshing settings, and desired surface detail.
| Use Case | Suggested VPM | Approx. Voxel Size | Notes |
|---|---|---|---|
| Large rivers, oceans, distant waterfalls | 10–50 | 10–2 cm | Use foam/whitewater for detail. Surface tension usually not important. |
| Medium waterfalls, character-scale water | 50–150 | 2–0.67 cm | Good for previews and broad motion. |
| Buckets, splashes, props | 100–250 | 1 cm–4 mm | Balanced production range. |
| Glasses, cups, small containers | 250–500 | 4–2 mm | Better free-surface definition. |
| Drops, skin droplets, close-up details | 500–1000 | 2–1 mm | Higher cost; use only when needed. |
| Macro liquid detail | 1000+ | <1 mm | Expensive; requires careful substeps and meshing. |
Auto Scale Mode
Auto is available in the Scale Behavior dropdown. It keeps preview and final output aligned without forcing the artist to micromanage resolution strategy. During interactive preview in Streamflow, Undine uses Relative Grid Resolution so cell count stays stable and iteration remains responsive.
During final baking and Meshify, the pipeline switches internally to Fixed Voxels Per Meter so voxel size stays tied to world-space units and fluid behavior remains physically coherent across scale. This transition happens inside the pipeline and does not alter the user workflow.
Uniform domain scaling therefore produces a proportional simulation instead of silently changing the apparent fluid type. Non-uniform scaling is constrained to avoid undefined behavior.
Scale Behavior
Resolution controls the grid. Scale Behavior controls how physical parameters are interpreted when the domain is scaled. The dropdown exposes three modes: Auto, Physical Scale, and Cinematic Scale Lock.
Auto
Auto is the recommended starting point. Undine chooses the scale policy needed for the current pipeline stage while preserving a world-space scale contract between the domain, solver cache, and Meshify output.
Use Auto when:
- You want Undine to keep interactive preview responsive without changing the final scale interpretation
- You want final bakes and Meshify output to stay tied to world-space units
- You do not need to force a fully physical or fully cinematic scale policy manually
Physical Scale
Physical Scale is the explicit real-world mode. In this mode, physical values remain real-world values — water remains water, surface tension remains physical, gravity remains physical.
Use Physical Scale when:
- A glass is actually glass-sized
- A tear is actually tear-sized
- The simulation should respond according to real-world dimensions
- Physical interpretation is more important than visual scale matching
A 0.3 m glass domain with water should behave differently from a 30 m waterfall domain. This is correct: small-scale water is more affected by surface tension, while large-scale water is dominated by gravity and inertia.
Cinematic Scale Lock
Cinematic Scale Lock is used when the artist wants the simulation to preserve the same visual behavior after scaling the domain. This is useful when the domain is scaled for composition, camera framing, preview speed, or production convenience, but the desired motion should remain visually similar.
Use Cinematic Scale Lock when:
- The scene is artistically scaled rather than physically scaled
- The fluid should keep the same look after changing the domain size
- A simulation is authored at one scale and reused at another
- Shots require visual continuity rather than strict physical interpretation
Reference Scale
Cinematic Scale Lock uses a captured reference extent. Press Capture Reference Scale to store the current domain size as the reference.
The solver then applies scale-aware parameter mapping so that the visual character of the fluid remains closer to the reference simulation.
Parameter Scaling
When Cinematic Scale Lock is active, Undine computes effective solver values from the artist-authored values. For s = scale_factor = current_extent / reference_extent:
| Parameter Type | Effective Scaling | Reason |
|---|---|---|
| Lengths, radii, distances | × s | Preserves geometric proportions |
| Emitter velocities | × s | Keeps motion visually proportional |
| Gravity / accelerations | × s | Preserves visual trajectory timing |
| Kinematic viscosity | × s² | Preserves diffusion behavior |
| Surface tension | × s³ | Keeps capillary behavior consistent |
| Density | unchanged | Mass density remains material-like |
Warnings and Diagnostics
Undine displays scale-related diagnostics to help prevent unstable or inefficient setups:
- Low Axis Resolution Warning — When one domain axis has too few cells (typically <16), which can cause poor pressure solve behavior and unstable collision response.
- High Cell Count Warning — When estimated cell count becomes expensive, increasing pressure solve cost, memory use, and meshing cost.
- CFL Warning — When estimated or runtime CFL pressure approaches the configured substep cap. The fluid may be moving too fast for the current voxel size.
- Capillary Warning — When surface tension requires many substeps. Consider using a larger voxel size or reducing surface tension.
- Viscosity Stiffness Warning — When viscosity becomes numerically stiff for the current voxel size and timestep.
- Extreme Scale Factor Warning — When Cinematic Scale Lock has a very large or very small scale factor (<0.1 or >10.0).
Artistic Workflows
Glass or Cup of Water
Recommended starting point:
- Resolution Mode:
Fixed Voxels Per Meter - Scale Behavior:
Physical Scale - VPM:
250–500
For close-up glass simulations, increase VPM. For preview, use lower VPM and increase later.
Tears or Drops on a Face
Recommended starting point:
- Resolution Mode:
Fixed Voxels Per Meter - Scale Behavior:
Physical Scale - VPM:
500–1000
Surface tension becomes visually important at this scale. For drops to remain attached to skin, use a collider wetting/contact material.
Character Splash
Recommended starting point:
- Resolution Mode:
Fixed Voxels Per Meter - Scale Behavior:
Physical Scale - VPM:
100–250
This keeps resolution stable while the domain is adjusted around the character.
River or Waterfall
Recommended starting point:
- Resolution Mode:
Fixed Voxels Per Meter - Scale Behavior:
Physical Scale - VPM:
10–100
For large water, use whitewater, foam, bubbles, and meshing detail rather than extreme grid resolution. Surface tension is usually negligible at large scale.
Reusing a Simulation at a Different Size
Recommended starting point:
- Resolution Mode:
Fixed Voxels Per MeterorRelative Grid Resolution - Scale Behavior:
Cinematic Scale Lock
Workflow:
- Set the domain to the original/reference size
- Tune the simulation look
- Press
Capture Reference Scale - Scale the domain for the shot
- Keep Cinematic Scale Lock enabled
- Review diagnostics and adjust VPM if needed
Mode Combinations: Numerical Behavior
The interaction between Resolution Mode and Scale Behavior determines the numerical properties of the simulation when the domain is scaled. Understanding these combinations helps choose the right mode for your workflow.
Relative Grid Resolution + Cinematic Scale Lock
This combination preserves numerical invariants perfectly when scaling the domain. As the scale factor s changes, both the voxel size and the physical parameters scale proportionally:
h → s·h(voxel size scales with domain)v → s·v(velocity scales)gravity → s·gravity(gravity scales)ν → s²·ν(kinematic viscosity scales)σ → s³·σ(surface tension scales)
This scaling preserves the key numerical constraints:
- CFL ≈ constant — The Courant number stays stable because velocity and voxel size scale together
- viscosity alpha ≈ constant — Viscous diffusion timescale remains proportional
- capillary constraint ≈ constant — Surface tension timestep restriction stays stable
Use this combination when:
- You want perfect numerical invariance across domain sizes
- The simulation must behave identically at different scales
- You're debugging numerical stability issues
- Legacy compatibility is required
The grid cell count remains approximately constant, so cost stays similar regardless of domain size.
Fixed Voxels Per Meter + Cinematic Scale Lock
This combination keeps voxel size h constant while scaling velocity, gravity, surface tension, and viscosity. The numerical behavior is different:
h → constant(voxel size stays fixed)v → s·v(velocity scales)gravity → s·gravity(gravity scales)ν → s²·ν(kinematic viscosity scales)σ → s³·σ(surface tension scales)
This results in:
- Smaller physical domain at smaller scales
- Constant voxel size in world units
- Fewer grid cells for smaller domains
- Proportional visual motion preserved
- Relaxed CFL typically, since
hdoesn't shrink with the domain - Lower computational cost for smaller domains
Use this combination when:
- You want smaller domains to be computationally cheaper
- Production cost matters more than perfect numerical invariance
- You need to scale a simulation down for preview and up for final
- You're working with multiple shots at different scales from the same simulation asset
Choosing the Right Combination
| Combination | Numerical Invariance | Cost Scaling | Primary Use Case |
|---|---|---|---|
| Relative Grid + Cinematic Lock | Perfect (CFL, visc, capillary constant) | Constant (same cell count) | Exact numerical matching, debugging |
| VPM + Cinematic Lock | Visual motion preserved, CFL relaxed | Scales down with domain | Production preview/final scaling |
| VPM + Physical Scale | Real-world physical behavior | Scales down with domain | Physical accuracy (glasses, tears, rivers) |
| Relative Grid + Physical Scale | Legacy behavior | Constant (same cell count) | Legacy scenes, intentional detail increase |
Quick Reference Guide
This section provides quick recommendations for common scenarios. These are starting points based on beta testing; adjust based on your scene requirements.
Recommended Default for Most Scenes
Use Fixed Voxels Per Meter + Physical Scale for most real-world scenes.
- Voxel size stays tied to physical units (1 cm, 4 mm, 2 mm, etc.)
- Gravity, viscosity, surface tension remain unchanged
- Scaling the domain changes grid dimensions and cell count instead of silently shrinking the voxel
- Small domains become cheaper, not accidentally expensive
Legacy Compatibility
Use Relative Grid Resolution + Physical Scale to preserve legacy behavior from earlier Undine versions.
- Grid dimensions stay close to the selected grid resolution
- Shrinking the domain also shrinks voxel size
- Small domains can require more CFL, viscosity, or capillary substeps
Cinematic Modes
Relative Grid Resolution + Cinematic Scale Lock — Use when the goal is a matched visual retime/rescale around a captured reference.
- Voxel size and physical parameters scale together
- Perfect numerical invariance (CFL, viscosity alpha, capillary constraint all constant)
- Same computational cost regardless of domain size
Fixed Voxels Per Meter + Cinematic Scale Lock — Use as a low-cost artistic mode.
- Makes small domains cheaper while preserving visual motion proportionally
- Does not guarantee CFL, viscosity, or capillary invariance
- Best for production preview/final scaling workflows
VPM Quick Guide
| VPM Range | Purpose | Notes |
|---|---|---|
| 32–64 | Preview | Fast iteration, broad motion only |
| 64–120 | General use | Balanced quality and performance |
| 120–240 | Detail | Good surface definition |
| 240+ | High detail | Check Estimated Cell Count before running |
Manual Validation for Scale-Sensitive Shots
When working with scale-sensitive shots, always validate before running:
- Scale the domain to the intended size
- Check Voxel Size in the Scale & Resolution panel
- Review Estimated Grid Dims (avoid very low axis resolution)
- Verify Estimated Cell Count is manageable
- Run a short test and monitor runtime CFL and substep metrics in the Debug panel
- Adjust VPM or mode combination if warnings appear
Best Practices
- Use Fixed Voxels Per Meter for physically sized scenes.
- Use Relative Grid Resolution for legacy scenes or intentional resolution scaling.
- Use Auto when you want Undine to manage the scale policy across preview, bake, and Meshify.
- Use Physical Scale for real-world behavior.
- Use Cinematic Scale Lock for visual scale matching.
- Choose VPM based on desired physical detail, not just domain size.
- Watch estimated grid dimensions and cell count before running.
- Avoid very low cell counts on any axis (minimum 16–32 cells).
- Treat surface tension carefully in small-scale scenes.
- Use wetting/contact controls for droplets sticking to colliders.
- Increase VPM for final close-ups; lower it for preview.