# 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.


---

# 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://docs.lightact.com/content-mapping/throwers.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.
