> For the complete documentation index, see [llms.txt](https://studio-docs.sandbox.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://studio-docs.sandbox.game/the-editor/how-to-use-mesh-models-and-modelmesh.md).

# How to use mesh models and ModelMesh nodes

A `.glb` in the Assets panel is a **mesh model**. Dragging it into the scene does not copy the file. It creates a **Model Mesh Node** that points at that file.

A **Mesh Node** is different: a primitive box, sphere, or capsule with no `.glb`. The Ground in a new project is a Mesh Node.

When the agent places a character, a prop, or a wall from a model file, it is creating a Model Mesh Node. Select the node and read `modelUrl` in the Inspector to see which file it uses.

## Mesh model vs Model Mesh Node vs Mesh Node

| Thing           | What it is                                                                          | How you get one                                                          |
| --------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| Mesh model      | A `.glb` file under `assets/models/`                                                | Import or generate the file. It stays in the Assets panel.               |
| Model Mesh Node | A scene node (`ENGINE.ModelMeshNode`) that displays a `.glb`                        | Drag the file into the scene.                                            |
| Mesh Node       | A scene node (`ENGINE.MeshNode`) with built-in geometry (box, capsule, and similar) | Primitives on the left toolbar, or the Ground that ships in a new scene. |

Two Model Mesh Nodes can share one `.glb`. Change `modelUrl` on a node to point it at a different file. The original file is unchanged.

{% hint style="info" %}
*NOTE: Older prefab JSON may say `ENGINE.ModelMeshComponent`. In the editor and Inspector the class is **Model Mesh Node**. Same object.*
{% endhint %}

{% stepper %}
{% step %}

## Drag the model into the scene

In the Assets panel, find a `.glb`. Drag it into the viewport.

A new node appears in the Outliner. It is named from the file: `chickdefault.glb` becomes `Chickdefault`. Its class is `ENGINE.ModelMeshNode`.
{% endstep %}

{% step %}

## Read the model path

Select the node. In the Inspector, `modelUrl` is a fully qualified path, for example `@project/assets/models/default.glb`.

That path is the link between the node and the file. Moving or renaming the `.glb` without updating `modelUrl` leaves the node empty.
{% endstep %}

{% step %}

## Move, rotate, or scale the node

Placement lives on the node, not on the `.glb`. Use the transform tools, or type values in the Inspector. See [How to Place Move Rotate and Scale an Asset](/the-editor/how-to-place-move-rotate-and-scale-an-asset.md).
{% endstep %}

{% step %}

## Leave Model Material empty unless you are replacing the look

Kit and generated `.glb` files already have materials packed in the file. Leave **Model Material** empty to keep that look.

Override only when this node needs a different surface: create a material (`New Asset` → `Material`) and set **Model Material** to that `.material.json` (convention: `@project/assets/materials/M_Floor.material.json`).

The `.glb` does not change. Other nodes with an empty **Model Material** keep the file’s own look. Full steps: [How to set up materials](/the-editor/how-to-set-up-materials.md).
{% endstep %}
{% endstepper %}

## What a dragged model gets

These are the Inspector defaults after a drag. Change them when the prop needs something else.

* Physics on: motion `static`, profile `BlockAll`, collision mesh `convexHull`
* `castShadow` off
* `receiveShadow` off

Turn **Cast Shadow** and **Receive Shadow** on when the model should take part in lighting. See [How to use shadow](/the-editor/how-to-use-shadow.md). Physics and AI pathing: [How to set collision and navmesh on mesh models](/the-editor/how-to-set-collision-and-navmesh-on-mesh-models.md).

{% hint style="info" %}
*TIP: A character usually has a hidden Mesh Node capsule for collision and a Model Mesh Node child for the visible `.glb`. Replacing the look means changing `modelUrl` on the visual node, not replacing the capsule.*
{% endhint %}

## When to use which

* **Imported art** (characters, kits, marketplace GLBs) → Model Mesh Node.
* **A row of the same kit piece** → many nodes, one `.glb`. See [How to kitbash a level from mesh models](/the-editor/how-to-kitbash-a-level-from-mesh-models.md).
* **Blockout, floors, hidden colliders** → Mesh Node.
* **The same mesh many times** (foliage, repeated props) → instanced mesh. See [How to instance repeated meshes](/the-editor/how-to-instance-repeated-meshes.md).
* **The same setup more than twice** (jump pad, pickup, enemy) → save the node as a prefab. See [How to Set Up a Prefab](/the-editor/how-to-set-up-a-prefab.md).

## Common mistakes

| What went wrong                                  | What to do                                                                                        |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------- |
| Asked the agent for a “mesh” and got a blank box | That is a Mesh Node. Ask for a Model Mesh Node and pass the `@project/assets/models/...glb` path. |
| Edited the `.glb` in the scene                   | You cannot. Edit placement and materials on the node. Replace the file, or change `modelUrl`.     |
| Assigned a material and every copy changed       | They share one `.material.json`. Duplicate the material if one copy needs a different look.       |
| Expected a Shader object                         | There is no Shader asset. Create a **material** and assign it on **Model Material**.              |

## What You've Done

You can tell a `.glb` from the Model Mesh Node that displays it, and a Mesh Node that has no model file. Next: [How to set up materials](/the-editor/how-to-set-up-materials.md), [kitbash a level](/the-editor/how-to-kitbash-a-level-from-mesh-models.md), or wrap a finished setup in a [prefab](/the-editor/how-to-set-up-a-prefab.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://studio-docs.sandbox.game/the-editor/how-to-use-mesh-models-and-modelmesh.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
