> For the complete documentation index, see [llms.txt](https://docs.lightact.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lightact.com/content-mapping/throwers.md).

# Throwers

A T*hrower* is a helper virtual object that facilitates the mapping of content onto various V*iewport* objects by taking into account their position in the 3D scene of the V*iewport*.

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FEaJGGceSANiPV5jthA5M%2Fimage.png?alt=media&amp;token=c2716b92-c221-4d19-a03d-1c746c84bf92" alt=""><figcaption></figcaption></figure></div>

## Creating and using Throwers

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FFPFksxaatkSf5p7SZobE%2Fimage.png?alt=media&amp;token=ffa26538-8b1a-4898-8f57-388462bbc266" alt=""><figcaption></figcaption></figure></div>

You can create a thrower through Viewport's right click menu or by dragging from the Viewport toolbar.

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2Fjl6GgcWXomZF0E7OgWuR%2Fthrowers1.gif?alt=media&amp;token=196e9cfa-8e68-42ae-87fa-da08196d045c" alt=""><figcaption></figcaption></figure></div>

You can change which thrower is placed by the Toolbar by holding your mouse over the tiny arrow near the Thrower's icon in the Toolbar.

### Mapping content from a Thrower to Viewport objects

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FBEe7KVDWi7692Hi9aDbU%2Fimage.png?alt=media&amp;token=54539bfe-44af-4a89-9ade-fc8137607401" alt=""><figcaption></figcaption></figure></div>

If you select any Viewport object, in its Content collapsible, you'll see a Sources section. In there, you can select the Thrower you would want to act as a content source of this Viewport object.

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2Fo7Tpoisy8O4SeXNI5qLG%2FmappingFromOrthogonalThrower.gif?alt=media&amp;token=bd6fbdea-92af-49ac-ae72-a35a68bfecf8" alt=""><figcaption></figcaption></figure></div>

Alternatively, you can simply drag from a Thrower onto a Viewport object to map it.

## Types of Throwers

There are **5** **types of Throwers**, each one of them projects (or throws) content in a different way: **Perspective**, **Orthogonal**, **Spherical**, **Cubic** and **Cylindrical**.

### Perspective thrower

<figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2Fej9klr1A8ZIEieIYvtdQ%2Fimage.png?alt=media&amp;token=023bb33d-ed2c-461b-991f-d33a4353f831" alt=""><figcaption></figcaption></figure>

Perspective thrower content as a projector would.

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FieolwcieEBZAz3ut8FwE%2Fimage.png?alt=media&amp;token=1a245e03-e2ea-43ed-bc1c-f03d4c256af2" alt=""><figcaption></figcaption></figure></div>

In its Properties, there is a Frustum collapsible, which adjusts how the thrower projects the content onto the object.

### Orthogonal thrower

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FU3CtaG7iagtL5JuT2y9S%2Fimage.png?alt=media&amp;token=74bf3442-af28-4170-bbb3-b037fa717573" alt=""><figcaption></figcaption></figure></div>

Orthogonal thrower projects content in a parallel way.

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FomRLYVc21fyKEen1XfHd%2ForthogonalThrower.gif?alt=media&amp;token=7f9cbc12-a572-42e6-a77b-b3e75209b00f" alt=""><figcaption></figcaption></figure></div>

By adjusting its size, you also modify the way the thrower projects the content onto viewport objects.

### Spherical thrower

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2Fa5LAafaG7TwGmAk4bBOA%2Fimage.png?alt=media&amp;token=726b2c5d-cf5e-4ddd-a3b7-431ac0b7c370" alt=""><figcaption></figcaption></figure></div>

Spherical thrower throws content in all directions.

<figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FsLfeAcjsYfXLFKbWHmeG%2Fimage.png?alt=media&amp;token=b5ee2a88-646a-4c52-babc-fd89891a45b8" alt=""><figcaption><p>An example of equirectangular content.</p></figcaption></figure>

It works best with **equirectangular content**.

{% hint style="info" %}
**Good to know**: if your content appears horizontally flipped, use **Horizontal flip** checkbox.
{% endhint %}

### Cubic thrower

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2F1mWoaDShbrPMOnHrGl5p%2Fimage.png?alt=media&amp;token=a389e75d-9ccb-40a8-bd3e-826a7bbc0433" alt=""><figcaption></figcaption></figure></div>

Cubic thrower throws its content in all directions.

<figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FLPc1a8RsK2aXP1KIGqP6%2Fimage.png?alt=media&amp;token=68e6d7a7-ad44-454b-9598-ac3b38702843" alt=""><figcaption></figcaption></figure>

For the content itself it requires a cubemap. A cubemap is a texture where 6 rectangles, each representing one face of a cube, are positioned in a pattern as shown above.

{% hint style="info" %}
**Good to know**: make sure the resolution of your cubemap is the same as the resolution of your Thrower.
{% endhint %}

<div align="left"><figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2Ff1ZV3V3jDHzCYzxHsUsg%2Fimage.png?alt=media&amp;token=39036d48-4ef1-4964-ad62-8153a8f0d507" alt=""><figcaption></figcaption></figure></div>

This cube map then results in mapping as shown above.

{% hint style="info" %}
**Good to know**: if your content appears horizontally flipped, use **Horizontal flip** checkbox.
{% endhint %}

<figure><img src="https://3312042618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVaJpWJhPbmscipukhh%2Fuploads%2FJttiWBINKbz1wfST7N24%2Fimage.png?alt=media&amp;token=71d157b8-f51e-44e8-8d8d-c8225382455c" alt=""><figcaption></figcaption></figure>

If your content is split into 6 square textures, you can use **To Cube Map** node to combine them into a suitable cube map.
