# Blu's World Creation Notes

Self-notes based on my hobbyist experience making VRChat Worlds.

# World Setup

# VRChat's Layers

What are Layers?  
  
In Unity, a game developer can determine a set of collision layers in order to allow/disallow things from colliding with each other at runtime. VRChat uses this to it's advantage with 14 additional Layers, which helps determine what Meshes, Objects, and functions should collide with and where.

Below, you will find the Collision Layers that VRChat uses as of December 7th, 2022.  
  
Varneon made a similar article about this [here](https://vrclibrary.com/wiki/books/varneons-vrchat-world-development-handbook/page/layers) with similar information. The difference is that I've added my own research based on my own discoveries.

<table border="1" id="bkmrk-no-name-description-" style="border-collapse: collapse; width: 100%; height: 1963.2px;"><colgroup><col style="width: 4.69464%;"></col><col style="width: 19.3963%;"></col><col style="width: 24.462%;"></col><col style="width: 22.4844%;"></col><col style="width: 28.7856%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">**No**</td><td style="height: 29.8px;">**Name**</td><td style="height: 29.8px;">**Description**</td><td style="height: 29.8px;">**Known Visual Elements**</td><td style="height: 29.8px;">**Notes**</td></tr><tr style="height: 53.2333px;"><td style="height: 53.2333px;">0</td><td style="height: 53.2333px;">Default</td><td style="height: 53.2333px;">Default Layer.</td><td style="height: 53.2333px;">- Avatar Pedestals</td><td style="height: 53.2333px;">  
</td></tr><tr style="height: 30.8px;"><td style="height: 30.8px;">1</td><td style="height: 30.8px;">TransparentFX</td><td style="height: 30.8px;">  
</td><td style="height: 30.8px;">  
</td><td style="height: 30.8px;">  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">2</td><td style="height: 29.8px;">IgnoreRaycast</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">  
</td></tr><tr style="height: 82.5667px;"><td style="height: 82.5667px;">4</td><td style="height: 82.5667px;">Water</td><td style="height: 82.5667px;">  
</td><td style="height: 82.5667px;">\- Portals

\- Mirrors

</td><td style="height: 82.5667px;">  
</td></tr><tr style="height: 143.567px;"><td style="height: 143.567px;">5</td><td style="height: 143.567px;">UI</td><td style="height: 143.567px;">  
</td><td style="height: 143.567px;">  
</td><td style="height: 143.567px;"><p class="callout warning">Interactive objects on this Layer cannot be interacted with until the Quick Menu is opened.</p>

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">8</td><td style="height: 29.8px;">Interactive</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">  
</td></tr><tr style="height: 110.567px;"><td style="height: 110.567px;">9</td><td style="height: 110.567px;"><span style="color: rgb(53, 152, 219);">Player</span></td><td style="height: 110.567px;">Remote Players.  
</td><td style="height: 110.567px;">- Any and all Remote Players in the current instance.  
</td><td style="height: 110.567px;"></td></tr><tr style="height: 150.767px;"><td style="height: 150.767px;">10</td><td style="height: 150.767px;"><span style="color: rgb(224, 62, 45);">PlayerLocal</span></td><td style="height: 150.767px;">The Local Player's Avatar Body seen in First-Person View.  
</td><td style="height: 150.767px;">- Local Player without a Head.</td><td style="height: 150.767px;"><p class="callout warning"><code>VRCMirrorReflection</code> refuses to render this Layer anymore (because it makes you look headless?)</p>

</td></tr><tr style="height: 132.167px;"><td style="height: 132.167px;">11</td><td style="height: 132.167px;"><span style="color: rgb(45, 194, 107);">Environment</span></td><td style="height: 132.167px;">Static World Meshes.  
</td><td style="height: 132.167px;">  
</td><td style="height: 132.167px;"><p class="callout info">Shares the same Collision Matrix as the Default Layer.  
</p>

</td></tr><tr style="height: 100.833px;"><td style="height: 100.833px;">12</td><td style="height: 100.833px;"><span style="color: rgb(35, 111, 161);">UiMenu</span></td><td style="height: 100.833px;">User Interface Elements, Part 1.  
</td><td style="height: 100.833px;">\- Nameplates

</td><td style="height: 100.833px;">  
</td></tr><tr style="height: 163.367px;"><td style="height: 163.367px;">13</td><td style="height: 163.367px;"><span style="color: rgb(230, 126, 35);">Pickup</span></td><td style="height: 163.367px;">Default Pickup Layer.  
</td><td style="height: 163.367px;">  
</td><td style="height: 163.367px;"><p class="callout success">This Layer is automatically assigned to any GameObject with a <code>VRCPickup</code> Component attached to it.  
</p>

</td></tr><tr style="height: 155.967px;"><td style="height: 155.967px;">14</td><td style="height: 155.967px;"><span style="color: rgb(230, 126, 35);">PickupNoEnvironment</span></td><td style="height: 155.967px;">Secondary Pickup Layer. Does not collide with the World.  
</td><td style="height: 155.967px;">  
</td><td style="height: 155.967px;"><p class="callout danger">Avoid using Gravity on Pickups in this Layer as it will never collide with the World whatsoever.  
</p>

</td></tr><tr style="height: 46.1667px;"><td style="height: 46.1667px;">15</td><td style="height: 46.1667px;"><span style="color: rgb(185, 106, 217);">StereoLeft</span></td><td style="height: 46.1667px;">Left Eye of the Local Player's VR Headset.  
</td><td style="height: 46.1667px;">  
</td><td style="height: 46.1667px;">  
</td></tr><tr style="height: 46.1667px;"><td style="height: 46.1667px;">16</td><td style="height: 46.1667px;"><span style="color: rgb(185, 106, 217);">StereoRight</span></td><td style="height: 46.1667px;">Right Eye of the Local Player's VR Headset.</td><td style="height: 46.1667px;">  
</td><td style="height: 46.1667px;">  
</td></tr><tr style="height: 62.9667px;"><td style="height: 62.9667px;">17</td><td style="height: 62.9667px;"><span style="color: rgb(22, 145, 121);">Walkthrough</span></td><td style="height: 62.9667px;">GameObjects and Meshes that should never collide with Players.  
</td><td style="height: 62.9667px;">  
</td><td style="height: 62.9667px;"><p class="callout info">This Layer can prove useful for Tabletop Games that should never collide with Players whatsoever (e.g. Billiards).  
</p>

</td></tr><tr style="height: 298.967px;"><td style="height: 298.967px;">18</td><td style="height: 298.967px;"><span style="color: rgb(0, 213, 242);">MirrorReflection</span></td><td style="height: 298.967px;">Used for Objects that should only be visible in Mirrors rendered by the <code>VRCMirrorReflection</code> Script.  
</td><td style="height: 298.967px;">\- Complete Local Player (that's you!) is shown in Mirrors.

</td><td style="height: 298.967px;"><p class="callout warning">Only Layer that is never rendered by the Main Camera (Local Player's sees the headless copy of themselves on Layer 10).</p>

<p class="callout info">Colliders on this layer never block VRChat Raycasts.</p>

</td></tr><tr style="height: 203.367px;"><td style="height: 203.367px;">19</td><td style="height: 203.367px;"><span style="color: rgb(186, 55, 42);">reserved2</span></td><td style="height: 203.367px;">User Interface Elements, Part 2.  
</td><td style="height: 203.367px;">\- HUD.

\- Quick Menu and Main Menu.

\- Camera UI.

\- Camera Lens.

\- Tooltips.

</td><td style="height: 203.367px;"><p class="callout warning">This Layer is immune to all Post Processing Volumes!  
</p>

</td></tr><tr style="height: 46.1667px;"><td style="height: 46.1667px;">20</td><td style="height: 46.1667px;"><span style="color: rgb(186, 55, 42);">reserved3</span></td><td style="height: 46.1667px;">Currently not used. Reserved for future use in VRChat.  
</td><td style="height: 46.1667px;">  
</td><td style="height: 46.1667px;">  
</td></tr><tr style="height: 46.1667px;"><td style="height: 46.1667px;">21</td><td style="height: 46.1667px;"><span style="color: rgb(186, 55, 42);">reserved4</span></td><td style="height: 46.1667px;">Currently not used. Reserved for future use in VRChat.</td><td style="height: 46.1667px;">  
</td><td style="height: 46.1667px;">  
</td></tr></tbody></table>