Custom VR Scene Object Placement Tool

Manual object placement in a VR scene using standard Unity tools takes hours and leads to alignment errors. We develop a custom placement tool that automates surface snapping, random generation, and intersection checks. Our team implements the tool turnkey — from concept to implementation, ensuring stable operation and support.

Our competencies

Other studio services

Frequently Asked Questions

Latest works

  • Game development for Mortal Motors
    Game development for Mortal Motors
    1638
  • A turn-based strategy game set in a fantasy setting, With Fire and Sword
    A turn-based strategy game set in a fantasy setting, With Fire and Sword
    1123
  • Game development for the company Second term
    Game development for the company Second term
    751
  • 3D animation - teaser for the game Phoenix 2.
    3D animation - teaser for the game Phoenix 2.
    830

In our practice, a level designer for a VR project placed 300 objects manually using the standard Unity Transform gizmo. Each object — position, rotation, scale — was configured manually. One room took two days.

This is not an artist’s problem — it is the absence of the right tool. A custom Editor Tool reduces this time to a few hours and pays for itself already on the first level.

How does a custom object placement tool speed up level design?

The standard Unity Transform tool is designed for general modeling, not for mass placement. It does not support surface snapping, random parameters, or intersection checks. A designer is forced to manually align objects, which leads to fatigue and errors. Our custom tool automates these routine operations, reducing work time by 5–10 times on each level.

What features are included in the custom placement tool?

Snap to surface

An object is placed on any surface in the scene via Physics.Raycast from the cursor point — floor, walls, sloped planes. Without this, each object would need to be manually raised or lowered along Y so that it does not sink into the floor or hang in the air.

It is implemented via HandleUtility.GUIPointToWorldRay() + Physics.Raycast() in OnToolGUI(), followed by Undo.RecordObject() to support Ctrl+Z.

Randomized placement

A left-click selects a random prefab from a set, a random rotation within a specified range, and a random scale. For organic-looking scenes — bushes, rocks, debris — the tool does what would manually take hours.

Grid and radial distribution

You select an area — the tool places objects in a grid or circle with a specified step and random jitter. Useful for regular structures: fence, columns, lamps.

Alignment helpers

Alignment of selected objects along X/Y/Z, distribution with equal spacing between the outermost objects. Standard Unity Align Tools cannot do this in the required form.

How the EditorTool implementation works?

To create the tool, we use the EditorTool class from the Unity Editor Tools API. According to the Unity Editor Tools API, it allows intercepting mouse events and drawing custom Handles in the Scene View.

For complex tools with UI, we use EditorWindow + the SceneView.duringSceneGui callback. The window contains a list of prefabs (drawn via GUILayout with previews via AssetPreview.GetAssetPreview()), randomization settings, and buttons for enabling modes.

An important point for VR projects: the tool must account for VR-specific placement. Objects in VR are visible from all sides — you need an automatic check for "does the object intersect with others" via Physics.OverlapBox() or Physics.OverlapSphere().

Intersections are highlighted in red via Handles.DrawWireCube() right in the Scene View — the designer sees conflicts immediately. The intersection check takes 0.05 ms per object, which makes it possible to work with 5000 objects without FPS drops.

Tool state serialization — via EditorPrefs for simple settings or ScriptableObject for saving placement presets between sessions. A team of 3 people can share presets via VCS.

Tip: use ScriptableObject presets to save randomization settings and prefab sets. This lets you quickly switch between environment styles.

Case: NPC placement in a VR escape room

From our practice: a client developing a VR escape room with 8 rooms needed a tool for placing interactive objects with automatic assignment of the InteractionZone component.

Click on a surface — the object is placed, XRGrabInteractable is automatically added to it, InteractionLayerMask is configured by object type (grabbable, pressable, turnable), and colliderOffset is set for VR grabbing. The custom placement tool is 8 times faster than manual work with the standard Transform tool.

Without the tool, setting up one interactive object took 5–7 minutes of manual work in the Inspector. With the tool — 15 seconds. Eight rooms with 40–60 objects each: a difference of a week of work.

The custom tool reduced placement time by 8 times, which saved more than 100 person-hours on this project. Budget savings on object placement exceeded the cost calculated after audit.

Tool type Estimated development time
Basic snap-to-surface placer 2–3 business days
Placer with randomization and presets 4–7 business days
Full-fledged level-dressing toolkit 2–4 weeks
Parameter Manual placement With the custom tool
Time per room (40 objects) ~2 days 2–3 hours
Risk of errors High Minimal
Ability to save presets No Yes, via ScriptableObject

Order workflow process

  1. Analysis of the team's current workflow and identification of bottlenecks.
  2. Designing tool functionality with VR specifics in mind.
  3. Prototype development in 1–3 days, demonstration to the client.
  4. Iterative testing and refinement.
  5. Deployment and training the team to use the tool.

Contact us to evaluate your project. Our certified engineers with 5+ years of experience in game development and more than 10 completed projects guarantee that the tool will be fully customized to your pipeline. Get a consultation on creating a placement tool for your team.

Estimated timelines are shown in the table above; cost is calculated individually after requirements analysis. Contact us — and we will offer the optimal solution.