Mirrors: Difference between revisions

From VRChat Wiki
(init)
 
m (→‎Performance issues: link to layers page)
(25 intermediate revisions by 11 users not shown)
Line 1: Line 1:
[[File:Mirror.jpg|alt=People socializing in front of a Mirror in VRChat|thumb|People socializing in front of a Mirror in VRChat]]
{{Noticebox/Official}}
Mirrors are reflective surfaces that can be placed within a [[Worlds|World]] or be spawned in via the [[Action Menu]]. They behave like their real life counterpart, where a reflection of yourself, others and the surrounding environment is shown in it.
{{stub|Resources heading is empty. Proofread according to [[Special:MyLanguage/VRCWiki:Manual of Style|Manual of Style]].}}
[[File:Mirror.webp|alt=People socializing in front of a Mirror in VRChat|thumb|People socializing in front of a mirror.]]
'''Mirrors''' are reflective surfaces that allow users to view a mirrored reflection of their avatar, alongside other users and/or the world they're in. Many worlds contain mirrors intended for users to sit in front of as they socialize, often referred to as "mirror dwelling". Users may also choose to summon a mirror of their own, only visible to them.  


== Applications ==
== Types ==
When a Mirror is located within a World, it often turns into a hot spot for everyone within an instance to congregate at. Nearly every World contains a Mirror.


== Placing a Mirror ==
=== World prefab ===
A Mirror can be placed in a World by adding it to a World Project or as a Personal Mirror.
The [[Special:MyLanguage/VRChat SDK|VRChat SDK]] contains a prefab for a ready-to-use mirror that can be dragged into a scene. This prefab is found at the following path:<br>
<code>Packages\com.vrchat.worlds\Samples\UdonExampleScene\Prefabs\VRCMirror.prefab</code>


=== As a World Prefab ===
=== User feature ===
The VRChat SDK contains a prefab for a ready-to-use mirror. It can be found in any Unity Project with this SDK at <code>Packages\com.vrchat.worlds\Samples\UdonExampleScene\Prefabs\VRCMirror.prefab</code>.


Dragging it into the scene adds it to the Project.
==== Personal Mirror ====
A personal mirror is a type of mirror that can be summoned and moved by a user that can only be viewed by them.  


=== As a Personal Mirror ===
It can be enabled and configured via the [[Special:MyLanguage/Action Menu|Action Menu]] or the [[Special:MyLanguage/Main Menu|Main Menu]]'s [[Special:MyLanguage/Settings|Settings]] page.
A personal mirror is only visible to yourself. It can be spawned in via the Action Menu. Select Tools, then Personal Mirror to make it appear.


Its properties can be adjusted under Options -> Personal Mirror also found within the Action Menu.
==== Face Mirror ====
A face mirror is a type of mirror that displays the face of a user's avatar in their [[HUD]]. Face mirrors are designed to help a user stay aware of their avatar's facial expressions, especially if they're controlled by gestures. Unlike a traditional mirror, the face mirror does not portray depth.
 
It can be enabled and configured via the [[Special:MyLanguage/Action Menu|Action Menu]] or the [[Special:MyLanguage/Main Menu|Main Menu]]'s [[Special:MyLanguage/Settings|Settings]] page.
 
==== Calibration Mirror ====
A calibration mirror is a type of mirror that activates automatically when the user presses the "Calibrate FBT" button. It is visible only to the user who is calibrating and disappears once they are done. The calibration mirror displays only the user's avatar, controllers, and FBT tracker model, which can be set in the Main Menu's Settings. If "Display Calibration Visuals" is enabled under Tracking and IK, the calibration mirror will also reflect these, showing which tracking points the trackers will track when calibration is done.
 
It can be enabled via the [[Special:MyLanguage/Action Menu|Action Menu]] or the [[Special:MyLanguage/Main Menu|Main Menu]]'s [[Special:MyLanguage/Settings|Settings]] page, but there are no configuration options for the calibration mirror.
[[Category:Features]]
 
== Common setups ==
The mirror prefab allows for selection of which layers are to be shown in the reflection. Therefore it is common that worlds have set up multiple different mirrors to toggle between. Which is why it usually breaks down to 3 options: high quality, low quality and transparent mirror. Some worlds offer even more specialized setups beyond these.
 
=== High quality ===
A high quality mirror acts as a mirror would in real life, reflecting the world and avatars around it from the perspective of the mirror.
 
=== Low quality ===
A low quality mirror usually mirrors the avatars around it at a lower resolution and replaces the reflection of the world with the skybox.
 
=== Transparent ===
A transparent mirror usually reflects the avatars around it while acting like a window, showing what appears behind the mirror, and also having a faint reflection of world from the mirror's perspective. It requires a special set up, which is also available through transparent mirror prefabs from the community.
 
== Performance issues ==
Every object reflected in a mirror has to be rendered again, separately from what the player sees in the playable world. A mirror reflecting the whole world will double the performance cost of rendering the world. Occlusion culling does not work in mirror reflections, so a mirror facing a wall will still try to render everything behind the wall too.
 
Creators can reduce the performance cost for mirrors in many ways, such as:
* Disabling all mirrors by default. Only enable a mirror when the player pushes a button, or physically approaches them.
* Disabling mirrors when a player leaves the area. This will remove the rendering cost of a mirror when a player isn't using it. Players will often not do this themselves, so use a script to do it for them.
* Considering the placement of mirrors. A mirror facing away from the center of the world will have to render less than one facing inward.
* Changing the [[Special:MyLanguage/Layers|Layers]] a mirror reflects. A mirror only renders objects on the defined layers. For example, if you have a large outdoor world with a house in the middle, you could set the outdoor environment objects to the environment layer, and then disable the environment layer on the mirrors inside the house. This will stop the mirrors from trying to render the environment that they can't see.
When interacting with a Mirror in a world, users will be able to enable or toggle different options to save on performance, such as:
 
* Using only one mirror at a time.
* Choosing a lower quality option for a mirror, if available.
* Alternatively, substituting a world's mirror for your Personal Mirror.
* Adjust your mirror resolution under [[Settings#Graphics|Graphics Settings]].
 
== Resources ==
[https://creators.vrchat.com/worlds/components/vrc_mirrorreflection/ VRChat Creator Documentation - VRC Mirror Reflection]

Revision as of 23:56, 14 September 2024

VRLogo.png
V · EThis is an official VRChat information page!
It is written and maintained by VRCWiki Team.
Vrrat posed-right.png
V · EThis page is a stub.
You can help the VRChat Wiki by improving it.
[Reason: Resources heading is empty. Proofread according to Manual of Style.]
File:Mirror.webp
People socializing in front of a mirror.

Mirrors are reflective surfaces that allow users to view a mirrored reflection of their avatar, alongside other users and/or the world they're in. Many worlds contain mirrors intended for users to sit in front of as they socialize, often referred to as "mirror dwelling". Users may also choose to summon a mirror of their own, only visible to them.

Types

World prefab

The VRChat SDK contains a prefab for a ready-to-use mirror that can be dragged into a scene. This prefab is found at the following path:
Packages\com.vrchat.worlds\Samples\UdonExampleScene\Prefabs\VRCMirror.prefab

User feature

Personal Mirror

A personal mirror is a type of mirror that can be summoned and moved by a user that can only be viewed by them.

It can be enabled and configured via the Action Menu or the Main Menu's Settings page.

Face Mirror

A face mirror is a type of mirror that displays the face of a user's avatar in their HUD. Face mirrors are designed to help a user stay aware of their avatar's facial expressions, especially if they're controlled by gestures. Unlike a traditional mirror, the face mirror does not portray depth.

It can be enabled and configured via the Action Menu or the Main Menu's Settings page.

Calibration Mirror

A calibration mirror is a type of mirror that activates automatically when the user presses the "Calibrate FBT" button. It is visible only to the user who is calibrating and disappears once they are done. The calibration mirror displays only the user's avatar, controllers, and FBT tracker model, which can be set in the Main Menu's Settings. If "Display Calibration Visuals" is enabled under Tracking and IK, the calibration mirror will also reflect these, showing which tracking points the trackers will track when calibration is done.

It can be enabled via the Action Menu or the Main Menu's Settings page, but there are no configuration options for the calibration mirror.

Common setups

The mirror prefab allows for selection of which layers are to be shown in the reflection. Therefore it is common that worlds have set up multiple different mirrors to toggle between. Which is why it usually breaks down to 3 options: high quality, low quality and transparent mirror. Some worlds offer even more specialized setups beyond these.

High quality

A high quality mirror acts as a mirror would in real life, reflecting the world and avatars around it from the perspective of the mirror.

Low quality

A low quality mirror usually mirrors the avatars around it at a lower resolution and replaces the reflection of the world with the skybox.

Transparent

A transparent mirror usually reflects the avatars around it while acting like a window, showing what appears behind the mirror, and also having a faint reflection of world from the mirror's perspective. It requires a special set up, which is also available through transparent mirror prefabs from the community.

Performance issues

Every object reflected in a mirror has to be rendered again, separately from what the player sees in the playable world. A mirror reflecting the whole world will double the performance cost of rendering the world. Occlusion culling does not work in mirror reflections, so a mirror facing a wall will still try to render everything behind the wall too.

Creators can reduce the performance cost for mirrors in many ways, such as:

  • Disabling all mirrors by default. Only enable a mirror when the player pushes a button, or physically approaches them.
  • Disabling mirrors when a player leaves the area. This will remove the rendering cost of a mirror when a player isn't using it. Players will often not do this themselves, so use a script to do it for them.
  • Considering the placement of mirrors. A mirror facing away from the center of the world will have to render less than one facing inward.
  • Changing the Layers a mirror reflects. A mirror only renders objects on the defined layers. For example, if you have a large outdoor world with a house in the middle, you could set the outdoor environment objects to the environment layer, and then disable the environment layer on the mirrors inside the house. This will stop the mirrors from trying to render the environment that they can't see.

When interacting with a Mirror in a world, users will be able to enable or toggle different options to save on performance, such as:

  • Using only one mirror at a time.
  • Choosing a lower quality option for a mirror, if available.
  • Alternatively, substituting a world's mirror for your Personal Mirror.
  • Adjust your mirror resolution under Graphics Settings.

Resources

VRChat Creator Documentation - VRC Mirror Reflection