Tutorial: creating a simple (prim) mirror with Firestorm

Background notes: this tutorial is provided as a *basic* guide to making a simple mirror in-world using prims and the Firestorm PBR release (7.1.9.74746), reviewed here. As such:

  • Is offered alongside my other simple mirror tutorial, which more directly applies to the official viewer and other TPVs.
  • Specifically addresses the use of the Firestorm Build / Edit floater, which is substantially different in information presentation compared to the official viewer.
Table of Contents

Please note:

  • If you have never created PBR mirrors before, it is recommended you read the entire tutorial including (Please) Read Me and Setting Viewer Preferences.
  • If you wish to know how to set your viewer so you can see PBR mirror effects, you only need to read  (Please) Read Me and Setting Viewer Preferences.
  • This tutorial assumes the use of the Firestorm Texture layout within the Build / Edit Floater. If you prefer using the the more traditional Texture layout in that floater, then this tutorial might be more appropriate: Creating a simple (prim) mirror in Second Life.

(Please) Read Me

  • Mirrors comprise two elements:
    • The actual object that forms the mirror. The can be a prim, a mesh face, a single object, part of a more complex (e.g. a mirror face in a frame).
    • A PBR reflection probe: a special kind of object new to Second Life under glTF / PBR which, for the purposes of this tutorial, actually generates the “reflections” on the mirror. As such, it is a object linked to the mirror object, above.
    • Creation of both of these is covered in this tutorial.
  • Mirrors:
    • Are planar (or flat surface mirrors), they don’t work particularly well on curved surfaces (like car bodies).
    • Are not designed to be worn as avatar attachments, and will not function correctly if used as such.
    • Come in two forms:
      • Static – meaning they will create reflections of just about everything within their sphere of influence except avatars.
      • Dynamic – meaning they will create reflections of just about everything within their sphere of influence including avatars.
    • Can have a performance impact – so should be used in moderation and with consideration of the effect you are trying to achieve, and the impact it may have on viewers close to them.
      • Example: it might sound cool to have a dynamic mirror as the floor or along one wall of a dance club, reflecting all the dancers – but it will likely kill viewer performance for all the dancers on the floor / dancing close to the wall. So if you must do either, use a Static mirror so avatars are not reflected.
  • To help reduce the performance impact generated by mirrors, only one will ever be active at a time in any given viewer. This will generally be the mirror closest the the viewer’s camera position; all others will simply appear shiny.
    • If you place two mirrors, each with its own reflection probe, too close to one another, you may find you get strange results in both of them.
    • For this reason, if you want to make a wall of mirrors, better to make multiple mirror objects and have a single reflection probe aligned with them to generate reflections in all of them.

This Tutorial

This tutorial breaks mirror creation down into four core steps:

  1. Setting your viewer preferences.
    • Some of these steps may only have to be down once; others may require setting each time you work with PBR reflection probes.
  2. Creating the mirror object using a prim & setting its surface material.
    • The required material can be made using either Blinn-Phong (aka “legacy” or “classic” materials) or the new PBR materials capabilities in the viewer.
    • This tutorial provides guidance on both.
  3. Creating the mirror reflection probe.
  4. Finishing touches – positioning the probe relative to the mirror object, and completing the mirror.

Notes:

  • All of the images in the sections below can be opened in their own tab(s) for greater clarity, if required.
  • Important: be aware that if you place a mirror within a room that contains its own reflection probe already, you may get some very odd results, as the mirror surface can also show “reflections” from the room’s reflection probe.

Step 1: Setting Your Viewer Preferences

Setting your viewer to work with mirrors requires two steps:

  • Ensuring the viewer’s Graphic Preferences is set to view mirrors correctly.
    • This generally only needs to be done once, as the setting will persist between log-in sessions.
    • Must be done by anyone wishing to simply view mirror in-world or who wishes to create them.
  • Enabling the ability to select reflection probes so they can be edited and manipulated.
    • This is intentionally a non-persistent setting, and must be enabled once per log-in session whenever reflection probes are to be directly selected / edited.

Graphics Preferences for Mirrors

Note: as per the notes above, these settings need to be active any in viewer that is to interact with mirrors.

  • Open up Preferences → Graphics and:
    1. Make sure the Mirrors option is checked. (otherwise PBR mirrors will only appear as shiny surfaces).
    2. Reflection Detail:
      • If you wish to view everything a mirror is designed to reflect, whether it is static or dynamic, set this drop-down to Static + Dynamic.
      • If your system struggles with performance as a result of mirrors, set this to Static, so no avatar reflections will be rendered.
    3. Reflection Coverage: make sure this is set to Full Screen.
    4. Mirror Resolution: set the resolution your viewer will use to display mirror reflections. Higher resolutions will obviously be sharper, but may have an increased impact on performance when rendering mirror reflections.
    5. Mirror Update Rate: set the frequency with which you wish you update to update rendered mirror reflections. Again, the more frequent the updates, the more realistic the reflections – and the potential for greater impact on viewer performance.
Setting your viewer’s Graphic Preferences to see / create mirrors

Setting the Viewer so You Can Select Reflection Probes

Reminder: You only need to do this if you are going to be selection and editing / moving any reflection probe. It is a non-persistent setting, so must be performed once each log-in session when you wish to select and edit a reflection probe of any description.

Setting the viewer can be done in one of two ways:

  • Via the Build menu:
    1. Go to the Build menu at the top of the viewer window.
    2. Click the menu to open it, scroll down to Option to open that sub-menu.
    3. Locate the option Select Reflection Probes and click it to check it.
  • Via the Select Reflection Probes in the top section of the Build / Edit floater.
When creating / editing reflection probes, you must ensure you can select them for ease of manipulation, by check the Select Reflection Probes option via the Build → Options sub-menu (l), or directly in the upper section of the build / Edit floater (r)

Step 2: Making the Mirror & Setting the Surface Material

Using Blinn-Phong

If you intend to create a mirror using PBR materials, you can skip to here.

    • Create a cube prim and size it as required. Keep the Build / Edit floater open after creating and sizing your prim.
    • Click the Select Face radio button and click on the side of the object you want to be the mirror surface.
    • Click on the Texture tab in the Edit floater and complete the following steps using the image below as a guide:
      1. Click on the Click on the Blinn-Phong tab (if not already selected). This will display texture / materials options similar to pre-PBR.
      2. Click on the Texture swatch to open the Pick: Texture floater.
      3. In the Pick: Texture floater, click the Blank button.
      4. This will cause the texture swatch in the Texture picker to turn white (and the mirror object itself).
      5. Click OK to close Pick: Texture.
      6. Click on the “empty” Specular swatch to open the Pick: Texture floater. Repeat steps 2 through 5 above.
      7. In the updated Build / Edit floater, locate the Glossiness and Environment spinner and set both to 255.
    • Your mirror object should now have a shiny face (most likely the one facing you).
    • Continue with Creating the Reflection Probe (below).
Creating a mirror object and setting the surface material using Blinn-Phong materials

Using PBR

  • Create a cube prim and size it as required. Keep the Build / Edit floater open after creating and sizing your prim.
  • Click the Select Face radio button and click on the side of the object you want to be the mirror surface.
  • Click on the Texture tab in the Edit floater and complete the following steps using the image below as a guide:
    1. Make sure the PBR tab is selected, or click on it if is is not.
    2. Click the Materials Texture swatch to open the Pick: Texture floater.
    3. Click Blank in the Pick: Texture floater.
    4. This will cause the texture swatch in the Texture picker to turn white (and the mirror object itself).
    5. Click OK to close Pick: Texture.
    6. The Roughness spinner in the Build / Edit floater will now be enabled. Set this to 0.0.
  • Your mirror object should now have a shiny face (most likely the one facing you).
  • Continue with Creating the Reflection Probe (below).
Creating a mirror object and setting the surface material using PBR materials

Step 3: Making the Reflection Probe

Reminder: When creating / editing reflection probes, always make sure you have enabled Build Menu → Options → Select Reflection Probes. Failure to do so will leave you unable to properly edit any reflection probes you create.

  • Create a cube prim.
  • Important:
    • Rotate the prim so that the TOP face of the cube is facing the same direction as the surface of your mirror (that is, the blue arrow of the gizmo tool is pointing away from the face of the mirror object).
    • Make sure it is perfectly at right angles once rotated.
  • Click on the Features tab of the Build / Edit floater:
    1. At the bottom of the tab, check the box labelled Reflection Probe.
    2. A pop-up will generally be displayed, read and understand it.
      • You can check the Don’t Show box if you do not want to see this warning in future
      • Click OK to convert the prim to a reflection probe – this will enable the Probe Update options at the bottom of the Build / Edit floater.
    3. Click on the Static drop down and:
      • If you wish the mirror to only reflect the objects in front of it, and not avatars as well, select Mirror (Environment).
      • If you wish the mirror to reflect avatars as well, select Mirror (Everything).
Setting the reflection probe properties (click to enlarge in new tab, if required)

Step 4: Finishing Touches

Positioning and sizing the mirror probe to give the required reflections on the mirror object.
  • With the reflection probe selected, make sure the Move radio button at the top left of the Edit floater is enabled.
  • Position the reflection probe so it is overlapping the mirror such that the red arrow / line of the gizmo move tool is just in front of the mirror object.
  • Click the Stretch Radio button in the top of the Edit floater and stretch the reflection probe to fit the mirror object, giving you a mirror-like reflection.
    • Note: The exact size of the reflection probe and its position / depth relative to the front of the mirror might require a little juggling to get right.
  • When done correctly, you should have a basic mirror reflecting the space around you.
  • Finally, link the mirror components together as a single object – but make sure the reflection probe is not the root of the linkset for ease of future moving / editing the mirror.
  • Name the mirror and Take it (or a copy) back to inventory for future use (if required) and / or place the original where you wish to use it.

Notes:

  • Because the reflection probe will be deeper than the mirror, anything shiny that is also encompassed by it and in the same plane will also act as a mirrored surface.
  • Similarly, if you have several “mirror” surfaces in the same plane as the reflection probe (e.g. several mirrors on the same wall), you can extend the mirror’s size to encompass all of them, thus use as single reflection probe for multiple mirrors.

Video and Final Words

For those who prefer to watch, the video below – courtesy of Zi Ree from the Firestorm team – goes through all of the above steps for creating a mirror object and its reflection probe.

Again, this is a basic (if wordy!) tutorial. There is a lot more that can be done when creating mirror objects. and I’m not attempting to cover everything here; this is simply to get people started. Remember that mirrors do have limitations imposed, and can impact viewer performance – so use them wisely!

Finally, note that mirrors are a specialised use for reflection probes – the latter can be quite intrinsic to general reflections and lighting in Second Life. To get a feel for how they can be used, I recommend taking a read of Reflection Probes and You by Kristy Aurelia.

3 thoughts on “Tutorial: creating a simple (prim) mirror with Firestorm

Comments are closed.