Skip to content

Commit 4c4800b

Browse files
update Open Source Docs from Roblox internal teams
1 parent 374f094 commit 4c4800b

File tree

5 files changed

+23
-47
lines changed

5 files changed

+23
-47
lines changed

content/en-us/assets/modeling/model-objects/LevelOfDetail-Imposter.jpg

Lines changed: 0 additions & 3 deletions
This file was deleted.

content/en-us/assets/modeling/model-objects/LevelOfDetail-Original.jpg

Lines changed: 0 additions & 3 deletions
This file was deleted.

content/en-us/assets/modeling/model-objects/LevelOfDetail-Slim.jpg

Lines changed: 0 additions & 3 deletions
This file was deleted.

content/en-us/parts/models.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,11 @@ To prevent parts that have fallen off of an experience's map from continuing to
108108

109109
## Model streaming
110110

111-
Instance [streaming](../workspace/streaming.md) dynamically loads and unloads `Class.Model|Models` on a player's device as their character explores the 3D world. With streaming enabled, you can specify the way each model should be treated under streaming behavior. For example, a model set to [Persistent](../workspace/streaming.md#persistent) will never stream out, or a model set to [Atomic](../workspace/streaming.md#atomic) will stream in and out as a single unit with all of its descendants. For more information, see [Per-model streaming controls](../workspace/streaming.md#per-model-streaming-controls).
111+
Instance [streaming](../workspace/streaming.md) dynamically loads and unloads `Class.Model|Models` on a player's device as their character explores the 3D world. With streaming enabled, you can specify the way each model should be treated under streaming behavior. For example, a model set to [Persistent](../workspace/streaming.md#persistent) will never stream out, or a model set to [Atomic](../workspace/streaming.md#atomic) will stream in and out as a single unit with all of its descendants.
112112

113-
Because the 3D content that exists on the client changes dynamically in a streaming-enabled experience, models might suddenly disappear, which can be visually jarring for the player. To avoid this situation, you can set specific models to render as optimized "SLIM" meshes or as lower resolution "imposter" meshes when streamed out. See [Model level of detail](../workspace/streaming.md#model-level-of-detail).
113+
Because 3D content that exists on the client changes dynamically in a streaming-enabled experience, models may suddenly disappear. To alleviate this, you can set specific models to render as lower resolution "imposter" meshes when streamed out, as detailed in [Model Level of Detail](../workspace/streaming.md#model-level-of-detail).
114+
115+
See [Model Streaming Controls](../workspace/streaming.md#model-streaming-controls) for more on model-level streaming controls.
114116

115117
## Upload models
116118

content/en-us/workspace/streaming.md

Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ title: Instance streaming
33
description: Instance streaming allows the Roblox Engine to dynamically load and unload 3D content in regions of the world.
44
---
55

6-
import BetaAlert from '../includes/beta-features/beta-alert.md'
7-
86
In-experience **instance streaming** allows the Roblox Engine to dynamically load and unload 3D content and related instances in regions of the world. This can improve the overall player experience in several ways, for example:
97

108
- **Faster join times** — Players can start playing in one part of the world while more of the world loads in the background.
@@ -447,23 +445,17 @@ In some cases, it's necessary to detect when an object streams in or out and rea
447445

448446
## Model level of detail
449447

450-
<BetaAlert betaName="SLIM" leadIn="SLIM meshes are currently in Studio beta. Enable them through " leadOut="." components={props.components} />
451-
452-
When streaming is enabled, `Class.Model|Models` outside of the currently streamed area are not visible by default. However, you can instruct the engine to render lightweight "SLIM" meshes or low resolution "imposter" meshes for models that are not present on clients. You control this behavior through each model's `Class.Model.LevelOfDetail|LevelOfDetail` property.
448+
When streaming is enabled, `Class.Model|Models` outside of the currently streamed area will not be visible by default. However, you can instruct the engine to render lower resolution "imposter" meshes for models that are not present on clients through each model's `Class.Model.LevelOfDetail|LevelOfDetail` property.
453449

454450
<img src="../assets/studio/properties/Model-LevelOfDetail.png" width="320" alt="LevelOfDetail property indicated for Model instance"/>
455451

456-
<GridContainer numColumns="3">
452+
<GridContainer numColumns="2">
457453
<figure>
458-
<img src="../assets/modeling/model-objects/LevelOfDetail-Original.jpg" alt="A globe model displays in its actual level of detail." />
459-
<figcaption>Original model</figcaption>
454+
<img src="../assets/modeling/model-objects/LevelOfDetail-Actual.jpg" alt="A globe model displays in its actual level of detail." />
455+
<figcaption>Actual model</figcaption>
460456
</figure>
461457
<figure>
462-
<img src="../assets/modeling/model-objects/LevelOfDetail-Slim.jpg" alt="The same globe model with a SLIM mesh, which is recognizable as the original globe." />
463-
<figcaption>Lightweight "SLIM" mesh (beta)</figcaption>
464-
</figure>
465-
<figure>
466-
<img src="../assets/modeling/model-objects/LevelOfDetail-Imposter.jpg" alt="The same globe model as a low resolution imposter mesh with rough edges that obscure the globe's details." />
458+
<img src="../assets/modeling/model-objects/LevelOfDetail-StreamingMesh.jpg" alt="The same globe model displays as a low resolution imposter mesh with rough edges that obscure the globe's details." />
467459
<figcaption>Low resolution "imposter" mesh</figcaption>
468460
</figure>
469461
</GridContainer>
@@ -472,37 +464,28 @@ When streaming is enabled, `Class.Model|Models` outside of the currently streame
472464
<thead>
473465
<tr>
474466
<th>Model setting</th>
475-
<th>Behavior outside of streaming radius</th>
467+
<th>Streaming behavior</th>
476468
</tr>
477469
</thead>
478470
<tbody>
479-
<tr>
480-
<td>**SLIM**</td>
481-
<td>
482-
Display a composite mesh of all child parts in the model when the original model is not present on the client. Roblox automatically generates many SLIM (Scalable Lightweight Interactive Model) meshes for the model and uses progressively less complex ones as distance from the camera increases.
483-
- During the Studio beta, you must enable [Team Create](../projects/collaboration.md) in your experience for Roblox to generate SLIM meshes.
484-
- Visual quality is superior to imposter meshes, with comparable performance.
485-
- Whether SLIM meshes display at all depends on the position of the **character**. The quality level of SLIM meshes depends on the position of the **camera**.
486-
- SLIM currently only supports models with static meshes, not skinned meshes, avatars, or animations.
487-
- The first time a model set to `Enum.ModelLevelOfDetail.SLIM|SLIM` is loaded, Roblox generates its optimized assets in the cloud. This one-time process can take a few moments for very complex models. If you have a large place and don't see some models immediately, wait a few minutes and try again.
488-
- SLIM relies on models to understand how to group geometry. For best results, use `Class.Model|Models` to group parts that are spatially and logically related (for example, all the parts of a car). For arbitrary organization in your project, use folders, which SLIM ignores.
489-
</td>
490-
</tr>
491471
<tr>
492472
<td>**StreamingMesh**</td>
493-
<td>
494-
Display an imposter mesh when the model is not present on the client.
495-
- If a model and its descendant models are all set to `Enum.ModelLevelOfDetail.StreamingMesh|StreamingMesh`, only the top-level model is rendered as an imposter mesh, wrapping all geometries under it as well as its descendant models. For better performance, set descendant models to **Disabled**.
496-
- Imposter meshes look best at **1024 studs away from the camera** or further. If you reduce [StreamingTargetRadius](#streamingtargetradius) to smaller values, imposter meshes might not be an acceptable visual replacement for the model. Consider whether SLIM is a better fit for your use case.
497-
- Imposter meshes do not support textures; they render as smooth meshes.
498-
- If a model is not completely streamed in, the imposter mesh is rendered instead of individual parts of the model. After all individual parts are streamed in, they render and the imposter mesh is ignored.
499-
- Imposter meshes have no physical significance and are non-existent with respect to [raycasting](../workspace/raycasting.md), [collision detection](./collisions.md), and physics simulation.
500-
- Editing a model in Studio, such as adding, deleting, or repositioning child parts or resetting colors automatically updates the representative mesh.
501-
</td>
473+
<td>Activates the asynchronous generation of an imposter mesh to display when the model is not present on clients.</td>
502474
</tr>
503475
<tr>
504476
<td>**Disabled** / **Automatic**</td>
505-
<td>The model isn't present until the player enters the streaming radius and can stream out at any time after the players leaves the radius.</td>
477+
<td>The model disappears when outside the streaming radius.</td>
506478
</tr>
507479
</tbody>
508480
</table>
481+
482+
When using imposter meshes, note the following:
483+
484+
- Imposter meshes are designed to be seen at **1024 studs away from the camera** or further. If you've reduced [StreamingTargetRadius](#streamingtargetradius) to a much smaller value like 256, imposter meshes may not be visually acceptable for the model they replace.
485+
- If a model **and** its descendant models are all set to **StreamingMesh**, only the top-level ancestor model is rendered as an imposter mesh, wrapping all geometries under the ancestor as well as its descendant models. For better performance, it's recommended that you use **Disabled** for descendant models.
486+
- Textures are not supported; imposter meshes are rendered as smooth meshes.
487+
- While a `Class.Model` is not completely streamed in, the imposter mesh is rendered instead of individual parts of the model. Once all individual parts are streamed in, they render and the imposter mesh is ignored.
488+
- Imposter meshes have no physical significance and
489+
they act as non-existent with respect to [raycasting](../workspace/raycasting.md), [collision detection](./collisions.md),
490+
and physics simulation.
491+
- Editing a model in Studio, such as adding/deleting/repositioning child parts or resetting colors, automatically updates the representative mesh.

0 commit comments

Comments
 (0)