# Example Pipeline

{% hint style="info" %}
Please keep that in mind, the example you are going to proceed with is based on our R\&D studio. Various aspects might differ from your setup. If you have any further questions, do not hesitate to contact our Support Department.
{% endhint %}

### Preliminary Preparation

<figure><img src="/files/Pasr2lzBmZu7N147wvX5" alt=""><figcaption><p>Example Node Network</p></figcaption></figure>

* Prepare your scene, launch it via Reality Hub [Launcher](/docs/reality-5.3-sp3/reality-5.3-sp3/user-guide/launcher.md) module.
* Drag & drop the <mark style="color:yellow;">**`UE5`**</mark> processing node into Nodegraph canvas.
* Create two Reality Cameras. See [Actor Spawning](/docs/reality-5.3-sp3/reality-5.3-sp3/tutorials/reality-actor-spawning.md).
* Add <mark style="color:yellow;">**`AJAIn`**</mark> and <mark style="color:yellow;">**`AJAOut`**</mark> nodes, select your devices and outputs based on your setup.
* Create your Track node. (In our example it will be the <mark style="color:yellow;">**`Xync`**</mark> Node)

### Modifying Curve XR Node

<figure><img src="/files/H802koDY9pBg3JodUOAz" alt=""><figcaption><p>Camera Connections</p></figcaption></figure>

* Add <mark style="color:yellow;">**`Curve XR`**</mark> node to the canvas.
* Change the following properties based on your measurements: Pitch Angle, Cell Width, Cell Height, Columns Count, Rows Count, Left Tilt/Roll and Right Tilt/Roll, Height Offset, Left Point and Right Point, Cell Resolution, Canvas Resolution.
* Duplicate the modified <mark style="color:yellow;">**`Curve XR`**</mark> node.
* Connect the <mark style="color:green;">**`RealityCamera0.Scene`**</mark> output of the <mark style="color:yellow;">**`UE5`**</mark> node to <mark style="color:green;">**`Inner Frustum View`**</mark> of the <mark style="color:yellow;">**`Curve XR`**</mark> node.
* Connect the <mark style="color:green;">**`RealityCamera1.Scene`**</mark> output of the <mark style="color:yellow;">**`UE5`**</mark> node to <mark style="color:green;">**`Outer Frustum View`**</mark> of the <mark style="color:yellow;">**`Curve XR`**</mark> node.&#x20;

### Preparing Inner Frustum Track

* Create <mark style="color:yellow;">**`Add Track`**</mark> node.
* Connect the <mark style="color:green;">**`Track`**</mark> output of <mark style="color:yellow;">**`Xync`**</mark> node to the <mark style="color:green;">**`X`**</mark> input of the <mark style="color:yellow;">**`Add Track`**</mark> node.

{% hint style="info" %}
To address a delay in the Inner Frustum at certain zoom levels, which causes a collision with the outer frustum, we must provide additional FOV input for tracking. Our example requires an additional 10-degree field of view (FOV).&#x20;
{% endhint %}

{% hint style="info" %}
This delay is inherent to the tracking process and rendering of the inner frustum.
{% endhint %}

<figure><img src="/files/IccwAK96yi9nsa3Zejbo" alt=""><figcaption><p>Additional FOV for Inner Frustum Track</p></figcaption></figure>

* Expand the <mark style="color:red;">**`Y`**</mark> property and change the <mark style="color:red;">**`FOV`**</mark> property to 10.
* Connect the <mark style="color:green;">**`Z`**</mark> output of the <mark style="color:yellow;">**`Add Track`**</mark> node into <mark style="color:green;">**`Inner Frustum Track`**</mark> input pin of the <mark style="color:yellow;">**`Curve XR`**</mark> node.

Pan, tilt, and roll can now be performed independent of zoom level without causing collisions.

### Preparing Outer Frustum Track

<figure><img src="/files/brDcfpEsgxjYzS4vAz8n" alt=""><figcaption><p>Preparing Outer Frustum Track</p></figcaption></figure>

* Create a <mark style="color:yellow;">**`Break`**</mark> node.
* Connect the <mark style="color:green;">**`Track`**</mark> output of <mark style="color:yellow;">**`Xync`**</mark> node into <mark style="color:yellow;">**`Break`**</mark> node’s <mark style="color:green;">**`Input`**</mark> pin. Now we have access to Track data. For more details, see [Dynamic Nodes](/docs/reality-5.3-sp3/reality-5.3-sp3/user-guide/nodegraph-actions/nodegraph/operating-nodegraph/dynamic-nodes.md).
* Create a <mark style="color:yellow;">**`Make Track`**</mark> node.
* Connect every <mark style="color:yellow;">**`Break Track`**</mark> node’s output to the matching inputs of the <mark style="color:yellow;">**`Make Track`**</mark> node, except for <mark style="color:green;">**`Rotation`**</mark> and <mark style="color:green;">**`fov`**</mark> pins.

{% hint style="info" %}
Inner Frustum rendered based on where the camera is looking and what is its resolution. On the other hand, the Outer Frustum render continues even if the camera is looking towards a different direction than the LED Screen, because the main purpose of it is to illuminate the scene and talent.

No matter what zoom level you are in, Outer Frustum must always encompass the LED screen, therefore Outer Frustum’s FOV must be fixed.

In the following steps, you need to get the Rotation and FOV data from your Track while framing the LED screen with your studio camera and keeping the zoom level zero, but the driver still will be the Inner Frustum, the first Track Node we added.
{% endhint %}

Now:

<figure><img src="/files/ZCePLJFYiROpWBYRVSj6" alt=""><figcaption><p>Example of Framing Studio Camera </p></figcaption></figure>

* Frame the LED screen with your studio camera and keep the zoom level at zero, as illustrated above.

<div align="left"><figure><img src="/files/3Heqk3t8Qex6I7cUDE2N" alt=""><figcaption><p>Overriding FOV</p></figcaption></figure></div>

* Create an <mark style="color:yellow;">**`Add f32`**</mark> node.
* Connect the <mark style="color:green;">**`fov`**</mark> output of the <mark style="color:yellow;">**`Break`**</mark> node into the <mark style="color:green;">**`X`**</mark> input of the <mark style="color:yellow;">**`Add f32`**</mark> node.
* Connect the <mark style="color:green;">**`Z`**</mark> output of the <mark style="color:yellow;">**`Add f32`**</mark> node to the <mark style="color:green;">**`fov`**</mark> input of the <mark style="color:yellow;">**`Make Track`**</mark> node.

{% hint style="info" %}
Now we have the FOV value in the full zoom out while our camera is framing the LED screen. On the other hand, the driver still will be the Inner Frustum. Therefore, we need to disconnect the <mark style="color:green;">**`X`**</mark> output of the <mark style="color:yellow;">**`Add f32`**</mark> node from the <mark style="color:green;">**`fov`**</mark>.
{% endhint %}

* Disconnect the <mark style="color:green;">**`fov`**</mark> output of the <mark style="color:yellow;">**`Break`**</mark> node from the <mark style="color:green;">**`X`**</mark> input of the <mark style="color:yellow;">**`Add f32`**</mark> node.

<div align="left"><figure><img src="/files/43LeuZvYaCLLcke2npHo" alt=""><figcaption><p>Additional FOV</p></figcaption></figure></div>

{% hint style="info" %}
As the above image suggests, Outer Frustum is rendering with 97 FOV. We need to increase the FOV <mark style="color:red;">**`X`**</mark> and <mark style="color:red;">**`Y`**</mark> by 30 degrees to compensate. With this change, Outer Frustum will project the image onto LED screen with 127 degrees to encompass the LED screen.&#x20;
{% endhint %}

<figure><img src="/files/W2CHdc5A5KTt1sEzif8Y" alt=""><figcaption></figcaption></figure>

* Create an <mark style="color:yellow;">**`Add vec3`**</mark> node and connect its <mark style="color:green;">**`Z`**</mark> output to <mark style="color:green;">**`Rotation`**</mark> input of the <mark style="color:yellow;">**`Make Track`**</mark> node.
* Connect the <mark style="color:green;">**`rotation`**</mark> output pin of the <mark style="color:yellow;">**`Break Track`**</mark> to <mark style="color:green;">**`X`**</mark> input of the <mark style="color:yellow;">**`Break`**</mark> node.
* Disconnect the <mark style="color:green;">**`Z`**</mark> output of the <mark style="color:yellow;">**`Add vec3`**</mark> node to the <mark style="color:green;">**`fov`**</mark> input of the <mark style="color:yellow;">**`Make Track`**</mark> node.&#x20;
* Connect the <mark style="color:green;">**`Canvas`**</mark> output of the <mark style="color:yellow;">**`Curve XR`**</mark> node to <mark style="color:yellow;">**`AJAOut`**</mark>, as illustrated above.

<figure><img src="/files/TTIAUhyVs9ubEMN8KZ3e" alt=""><figcaption><p>Curved LED </p></figcaption></figure>

Our scene is successfully projected on the Curved LED.&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zerodensitydocumentation.gitbook.io/docs/reality-5.3-sp3/reality-5.3-sp3/tutorials/curved-led-pipeline-with-curve-xr-node/example-pipeline.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
