# Polygon Streaming Project Settings

***

### Stream Controller

The **Stream Controller** manages the streaming of models and streaming parameters inside your project. There must be only one Stream Controller per scene, since it will control all Streaming Models as one.

The Stream Controller needs to have a reference to a Camera object which will based the distance between viewer and object. It also contains several parameters and features to assist with the best streaming quality and control.

<figure><img src="/files/JRVNBQLBx8GwznBgbH1I" alt="Stream Controller options to assist with the best streaming quality and control"><figcaption><p>Stream Controller options to assist with the best streaming quality and control</p></figcaption></figure>

The **Triangle Budget** is a limit on the amount of triangles that will be drawn per frame. Increasing this will lead to better visual quality, but of course also higher processing and memory utilization. It's recommended to keep Triangle Budget to at least 30% of the full amount of polygons that you are going to stream. For example, if you are going to stream a 3D model of 10 million polygons, it's recommended to use a Triangle Budget of at least 3 million.

In case you use too low Triangle Budget, for example 500 thousand to stream 10 million polygons, you may reach the budget before it's possible to showcase the higher quality of the model. Resulting in only showing a lower quality version of the model in order to stay within the budget.

The **Distance Factor** is a factor between the distance of the camera to the object being streamed. The default value of 1.1 has a neutral preference. A higher value, such as 3 or 5, will have a preference for nearby objects over objects further away. These parameters can be changed at runtime to find the sweet spot for your scene.&#x20;

The **Close Up Distance** is a change in the distance factor between camera and streaming object when the camera gets too close. For example, when the camera is at 3 units or less of distance from the object, it will use the value at **Close Up Distance Factor**, when the camera is further than 3 units from the object, it will use the value at **Distance Factor**. That way the system forces a strong streaming of data when the camera is very close to an object.

The **Distance Type** can be set to **Bounding Box** or **Bounding Box Center**. In case it's set to Bounding Box it will calculate the distance between the camera and object based on the edges of the bounding box of the object. In case it's set to Bounding Box Center, it will calculate the distance from the center of the object. It's recommended to use Bounding Box for single objects, and Bounding Box Center for full environments in which the user will be walking inside the object.

The other parameters should be left in default or you can check an explanation on the Supported Parameters section.

### Supported Parameters

| Name                         | Description                                                                                                                                                                                               | Default Value |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| **Viewer Camera**            | The viewer camera to be set, the system will calculate distances based on the selected camera.                                                                                                            | None          |
| **Triangle Budget**          | The maximum amount of triangles that you want to allow in the scene at any single point.                                                                                                                  | 150000000     |
| **Distance Factor**          | Preference for nearby objects over objects further away. Values above one mean a preference for nearby objects. Values below one mean a preference for objects further away. One is neutral.              | 1.1           |
| **Close Up Distance**        | The distance where it starts using Close-up Distance Factor instead of Distance Factor. Set it to 0 to not use close-up distance factor.                                                                  | 3             |
| **Close Up Distance Factor** | The distance factor used when close-up to an object. Should be higher than the standard Distance Factor.                                                                                                  | 5             |
| **Distance To**              | Distance type from camera to the meshes bounding boxes.                                                                                                                                                   | Bounding Box  |
| **Max Download Size Mb**     | Pause downloading more data when the current active downloads exceed this threshold.                                                                                                                      | 4             |
| **Maximum Quality**          | Stops improving geometry that exceeds the maximum quality. This can be used to stop far away objects from showing more detail which can be wasteful. Leaving this at 0 means there is no maximum quality. | 0             |
| **Occlusion Culling**        | Enable Dynamic Occlusion Culling.                                                                                                                                                                         | True          |
| **Raycast Mask**             | Set masks for the occlusion culling raycast.                                                                                                                                                              | Everything    |
| **Time Slicing**             | Determine how many frames should be accumulated to decide whether an object should be hidden.                                                                                                             | 120           |
| **Ray Per Frame**            | How many rays are generated per frame.                                                                                                                                                                    | 256           |


---

# 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.viverse.com/polygon-streaming/integrations-and-plugins/polygon-streaming-unity-sdk/polygon-streaming-project-settings.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.
