Task: Generate a medium-sized bedroom.
=== GUIDANCE / STEPS ===
You need to call tools to generate scene.
When generating scene, you need to:
1. **GENERATE ROOM LAYOUT**
first generate the room layout, for now you only need to generate a single room
(you need to explicitly mention 'a single room' when generating layout without mentioning any other rooms or spaces).
2. **PLACE OBJECTS**
You need to consider placing objects in the room:
(i) Follow the scene requirements you got from the result of generating room layout.
It contains a lot of recommendations of objects you need to place in the room.
(ii) Place large, key objects and furniture altogether firstly with higher priority.
These objects are key components to the room.
[IMPORTANT] Think thoroughly about the spatial relationship of all objects in the room before placing them.
(iii) You may also need to consider placing objects following the guidances below:
(1) object combos with the existing objects (e.g. chair with the table/desk, sofa with table in front, small decor objects on top of supporter objects (e.g. shelf, table, sofa, etc.) and other object combos you can think of);
so that existing won't seem isolated and the scene is more consistent.
(2) other background objects (with objects on top of the furniture surfaces placed at the same time) which are necessary for the completeness in the current room types.
(iv) On each required or extra furniture which can support other objects,
suggest to have more than two meaningful objects on top to enrich the diversity.
For example, for every furniture you add can have small decorated objects on it:
books on bookshelf, living things like tools/food/other stuffs on table/desk, pillows on sofa,
and other reasonable placements you can think of.
For furniture like lamps which can't support other objects, don't need to do so.
(v) You can also take the object placements recommendations actions in semantic critic info as reference.
There should be some most urgent objects that need to place in the placement recommendations.
You can combine all the actions in the recommendations and place them all together.
(vi) the style of all placed objects should be consistent.
style information is in the scene requirements you got from the return of generation of room layout.
please mention the style of objects you place explicitly.
(vii) You need to place all objects into the room by multiple calls following some logic.
e.g. place most key important objects firstly, and then followed by less important objects and decorated objects placed by multiple times.
[IMPORTANT] When placing objects, don't add over 35-40 number of objects at single object placement call and don't add over 10-12 types of objects at single object placement call.
[IMPORTANT] You are encouraged to place multiple types of objects at single call of placing objects to add efficiency.
[IMPORTANT] Please add objects stage by stage. place most key important objects firstly, and then followed by less important objects and decorated objects placed by multiple times.
[IMPORTANT] Follow the semantic critic info recommendations to add objects is recommended.
However, the total object number can exceed 35-40 and total types of objects can exceed 10-12 with arbitrary large for the completeness and diversity of the room.
(viii)
You need to ensure that:
- The layout (position, rotation, and size) is believable, and common daily objects make the room feel lived-in. Rich of daily furniture and objects."
- Contains the necessary furniture and setup for the specified function.
- Each objects is in **reasonable size**, neatly placed, objects of the same category are well aglined, relationships are reasonable (e.g., chairs face desks), sufficient space exists for walking, and **orientations must** be correct.
- [IMPORTANT] All necessary large and small items are present. Has rich details.
[IMPORTANT] Each shelf is full of objects (>5) inside.
[IMPORTANT] Each supporter (e.g. table, desk, and shelf) has small objects on it.
[IMPORTANT] The room feels done.
[IMPORTANT] You can't stop the scene generation before all necessary object placements have been done.
You must avoid:
- Unusual objects or strange placements make the room unrealistic.
- Missing key objects or contains mismatched furniture (e.g., no bed in a bedroom).
- Floating objects, crowded floor, **abnormal size**, objects with collision, incorrect **orientation**, or large items placed oddly (e.g., sofa not against the wall). Large empty space. Blocker in front of furniture.
- Room is sparse or empty, lacks decor or key elements.
(ix) Don't try to replace all objects in room,
it would remove all objects you have placed in.
(x) Pay attention to the place_id of objects.
(xi) How to decide what objects to place?
- [IMPORTANT] From the user requirements here. You need to ensure all the requirements for object placements here are all satisfied.
- [IMPORTANT] From the failured placements each iterations. You need to retry once if the failure happens when placing objects.
You can try to place other smaller types of objects if placements failed due to limited space.
- [IMPORTANT] From the semantic critic info. You need to combine all the proposed actions in semantic info to place those urgent needed objects.
Special notes: never add rugs, mats, curtains, blanket, ceiling-hanging objects (already installed).
(xii) When to stop generating the scene?
[IMPORTANT] You need to keep track of the current object placement situation to decide.
[IMPORTANT] You can't stop the scene generation before all necessary object placements have been done:
[IMPORTANT] 1. All necessary large and small items are present. Has rich details.
[IMPORTANT] 2. Each shelf is full of objects (>5) inside.
[IMPORTANT] 3. Each supporter (e.g. table, desk, and shelf) has small objects on it.
If placements of small on top objects are failed, keep trying different kinds of objects.
[IMPORTANT] When you want to stop, please check every condition above and ensure all have been satisfied before you stop.
[IMPORTANT] You are encouraged to keep trying placing objects if they are reasonable.
[IMPORTANT] Don't be afraid of failure of placements. Please keep trying instead of suddenly stopping.
Notes:
When placing objects, you need to specify where each object should be located.
The location can be one of three types:
(i) "floor" - for objects that sit on the ground/floor. This includes objects placed against walls, in corners, beside/next to other floor objects, or anywhere on the floor surface.
Examples:
- A table against the wall → use "floor" (the table sits on floor near the wall)
- A sofa in the corner → use "floor" (the sofa sits on floor in the corner)
- A chair next to / beside / left of / right of / in front of the table → use "floor" (the chair sits on floor near the table)
(ii) "wall" - ONLY for objects that are physically attached or mounted directly on the wall surface, and always attached above the floor, such as wall shelves, paintings, or wall-mounted TVs.
Examples:
- A picture on the wall → use "wall" (the picture is mounted on the wall and above the floor)
- A wall-mounted cabinet above the bed → use "wall" (the cabinet is attached to the wall and above the floor)
(iii) "object_id" or "estimated_object_name" - ONLY for objects that are placed onto/on top of another existing object.
Use "object_id" when you know the exact id of the existing object. Use "estimated_object_name" when you're not certain of the exact object id or the object is about to be placed.
Examples:
- A lamp on a table → use the table's object_id (the lamp goes on top of the table)
- A plate on the kitchen cabinet in front of the chair → use the cabinet's object_id (the plate goes on top of the cabinet)
[IMPORTANT] The key distinction: if the spatial relationship is NOT "on top of" (e.g., beside, next to, in front of), you cannot use object_id or estimated_object_name. In such cases, use "floor" instead.
[IMPORTANT] Don't use "floor" or "wall" as fallback when the correct location should be an object_id. Be precise about the placement location.
[IMPORTANT] Be accurate and clear about the placement location,
when refer to existing objects, mention exact object id if applicable.
Specified as "place [object_quantity] [object_type] [object description] on [object_place_location (floor|wall|existing / other objects)], [extra placement guidance]"
[IMPORTANT] In the return of every tool use, the placement description `place on [place_location]` of objects follow the same pattern above.