> 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="/files/Y5H5GYCizTvbsJ5PLp4u" alt=""><figcaption></figcaption></figure></div>

## Creating and using Throwers

<div align="left"><figure><img src="/files/WId22ji4Z7ilKVqt8ruT" 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="/files/4vIjHkbo1T9TTnICfFUy" 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="/files/0Vp70vqtGO45iOlOs8Lp" 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="/files/gn9jzPrYp83zyC5a0cmT" 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="/files/l8PoWRONHihJxzUijlTM" alt=""><figcaption></figcaption></figure>

Perspective thrower content as a projector would.

<div align="left"><figure><img src="/files/T87HYqSEgDhTqQCjSujb" 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="/files/fFlWFxNldpFHUkhECuRq" alt=""><figcaption></figcaption></figure></div>

Orthogonal thrower projects content in a parallel way.

<div align="left"><figure><img src="/files/wGiQ7do9ok9025cx8E3l" 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="/files/jNTt7ajl2OTpnLdHFqif" alt=""><figcaption></figcaption></figure></div>

Spherical thrower throws content in all directions.

<figure><img src="/files/LB6jcYkLwmPInFymK5Bi" 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="/files/IeRC8844Jfk3EOMH7jMb" alt=""><figcaption></figcaption></figure></div>

Cubic thrower throws its content in all directions.

<figure><img src="/files/Fo7EtyVPIuIRNq9kJ1pz" 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="/files/ixSqiHkqCx3pV0EsKrgU" 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="/files/7Usfb9Loy5PfF66jVyJC" 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.
