> For the complete documentation index, see [llms.txt](https://docs.m-xr.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.m-xr.com/marso-studio/scenes/detecting-and-selecting-objects.md).

# Detecting & selecting objects

Detection is the step that turns a scene image into a list of separate objects — and the step where you decide what the scene is going to cost.

### Running detection

In a **Bulk** project, **Detect Objects** is already wired to the **Scene Generation** node. Connect your scene image to it and run it.

You can optionally give it **categories** — the kinds of object to look for. Leave it empty and it will find whatever it can; supply categories and it will focus on those. Categories are worth using when a scene has one class of object you actually care about, for example furniture in a room full of props.

Detection returns a set of objects with a preview. **Nothing else runs yet, and nothing else is charged yet.**

### Reviewing the selection

Open the object viewer to see what was found. **Everything is selected by default**, so this step is about removing what you don't want.

Every object you keep is charged for all three generation stages that follow, so the selection screen is the cheapest place to control your spend. Work through the list and deselect:

* **Structure** — walls, floors, ceilings, ground planes. These are usually better built in your DCC than generated.
* **Anything small or distant.** 3D generation needs each object to fill most of its reference image. An object that was tiny or heavily occluded in the scene won't produce a usable reference, and will usually fail at the 3D stage.
* **Backdrop** — anything blurred or only partly visible that you wouldn't place in a level.
* **Duplicates** — if the scene contains six near-identical crates, keep one and instance it yourself.
* **Fragments** — a detection that's caught part of an object rather than the whole thing.

Confirm the selection when you're happy with it. The count you confirm is the count you're billed for at each downstream stage.

### Running detection again

If the detection isn't right — it missed objects you wanted, split one object into several, or merged several into one — you can run **Detect Objects** again. Each run is charged the same as the first.

This is worth doing before you generate. Re-running detection is cheap relative to what follows, so fixing a bad decomposition costs far less than generating an object that was never a whole object in the first place.

| What you see                    | What to try                                    |
| ------------------------------- | ---------------------------------------------- |
| Objects missing entirely        | Name them explicitly in categories             |
| One object split into pieces    | Re-run with a broader category for that object |
| Several objects merged into one | Re-run with the individual categories named    |
| Too much scenery detected       | Just deselect the extras — that's free         |

If two runs don't improve things, the scene image is usually the problem rather than the detection. A clearer image with better-separated objects, each one reasonably large in frame, will detect better than any category list. See [Sourcing & preparing assets](/marso-studio/preparing-your-assets/sourcing-and-preparing-assets.md).

### What happens next

Once you confirm a selection, the generation stages run **per object**, as a group:

1. **Generate Reference Images**
2. **Generate 3D Model**
3. **Generate PBR Textures**

Each stage runs across every object in the selection. See [Working with scene results](/marso-studio/scenes/working-with-scene-results.md) for what to do when some objects succeed and others don't.


---

# 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://docs.m-xr.com/marso-studio/scenes/detecting-and-selecting-objects.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.
