> For the complete documentation index, see [llms.txt](https://shaheerxansari.gitbook.io/hydroportdoc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shaheerxansari.gitbook.io/hydroportdoc/mrq-and-motion-blur.md).

# MRQ & Motion Blur

HydroPort is built to render baked fluid animation in Sequencer and Movie Render Queue (MRQ), using Alembic velocity data when available.

{% stepper %}
{% step %}

## Prepare the sequence

1. Import the cache with correct **Velocity Units**, **Velocity Scale**, and **Import Velocities** enabled.
2. Add the HydroPort Actor to a Level Sequence.
3. Add the **Fluid Cache** track, set the section range, and check playback settings.
4. Add a **Cine Camera Actor**, set up the shot, and include the relevant camera cut track.

<figure><img src="https://3163553392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWkKBDCamr3MmFrohl56q%2Fuploads%2FHsaqWTQ92Qvb3TRjKpdT%2FSequencer.png?alt=media&amp;token=ffbe09af-ab1c-42e2-9d4a-c7caae0272f3" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

## Configure Movie Render Queue

Open MRQ for your Level Sequence and configure output format, resolution, and desired render quality.

For the developer's tested fluid motion-blur workflow:

| Setting                   | Starting recommendation                                                                                 |
| ------------------------- | ------------------------------------------------------------------------------------------------------- |
| **Spatial Sample Count**  | **1**                                                                                                   |
| **Temporal Sample Count** | Increase above 1 as appropriate for the shot and render cost                                            |
| **Camera shutter timing** | **Frame Close**, rather than Frame Center, to mitigate the ghosting observed in this HydroPort workflow |

{% hint style="warning" %}
**Important distinction:** More **temporal samples** provide denser sampling across the shutter interval; they do not by themselves change the physical motion-blur shutter duration. Your chosen shutter parameters, velocity data, and rendering method affect blur appearance.
{% endhint %}
{% endstep %}

{% step %}

## Recommended Ghosting Fix: Frame Close

In MRQ settings, the **Camera →** **Shutter Timing → Frame Close** instead of **Frame Center** removes motion-blur ghosting in their tested HydroPort scenes.

{% hint style="info" %}
**Use it as the recommended HydroPort starting point**, not as a guarantee that every kind of ghosting is impossible. Unusable Alembic velocities, wrong velocity scales, scene lighting, camera motion, and temporal accumulation can also influence artifacts.
{% endhint %}
{% endstep %}
{% endstepper %}

<figure><img src="https://3163553392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWkKBDCamr3MmFrohl56q%2Fuploads%2F8sHTtDcec5lGoDJJI6EE%2FShutter.png?alt=media&amp;token=383a3adc-ecea-4157-83a9-3286234d4acb" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3163553392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWkKBDCamr3MmFrohl56q%2Fuploads%2FnlWNPiTMDQbv6tliuuF4%2FMRQShutterMotionBlur_00071.png?alt=media&amp;token=daed61c0-2378-4648-a3f8-7f8c38f6bcba" alt=""><figcaption></figcaption></figure>

## How HydroPort motion vectors work

The Alembic cache can provide velocities (motion rate in source units per second). HydroPort converts them to its internal **centimeters per second**, then derives the previous-frame displacement used by Unreal's Geometry Cache vertex factory:

```
MotionVector = -VelocityInCentimetersPerSecond × SecondsPerFrame
SecondsPerFrame = 1 / AlembicFPS
```

This is the convention used in `HydroMeshComponent.cpp`. The custom renderer provides explicit deformation motion vectors instead of relying only on rigid-object motion.

For example, with correctly converted velocity of 240 cm/s at 24 FPS, the nominal displacement magnitude is `240 / 24 = 10 cm` per cache frame; the stored motion-vector direction follows the implementation's negative-sign convention.

## Troubleshooting Blur

* **No visible deformation blur:** confirm the Alembic exported velocity data and the **Import Velocities** flag.
* **Blur too strong or too weak:** verify the source velocity units, **Velocity Scale**, **Alembic FPS**, and shutter configuration.
* **Ghosting:** first try **Frame Close** and compare rendered frames; also check velocity validity and temporal settings.
* **Viewport differs from MRQ:** editor preview and final exact-frame evaluation use different scheduling approaches.

## Final Render Checklist

* [ ] Correct velocity scaling
* [ ] Play Alembic Animation enabled
* [ ] Fluid Cache track added and spanning the desired frames
* [ ] Cine Camera / Camera Cuts configured
* [ ] Spatial samples = 1
* [ ] Temporal sample count selected for the shot
* [ ] Shutter Timing = Frame Close
* [ ] A short test render inspected before the full sequence
