Deconstructing Reality Composer Pro (Viewport)

Deconstructing Reality Composer Pro (Viewport)

Viewport is deep (modes, debug views, presets/history). We are going to implement just a working viewer + camera for this pass; chasing full parity will balloon scope.

The main viewport is built with RealityKit, and we'll add a layer for gestures, a grid, and a simple Arcball implementation to allow navigation. Also, given we have access to camera history in the .rcuserdata metadata, implementing this function is easy, though I don't use it much myself.

Scene Lighting

Reality Composer Pro also provides environment lighting through a popover panel accessible from the floating toolbar. The panel exposes:

  • Environment presets—HDR panoramas that provide both lighting (IBL) and optional skybox background
  • Rotation—spins the environment around Y-axis (0-360°)
  • Exposure—adjusts light intensity in EV stops (-3 to +3)
  • Background toggle—this feature allows you to display the environment as a skybox or as a solid color.

Each one of these features is essential for art direction, so we will add them using ImageBasedLightComponent.

Release 3-viewport · elkraneo/Deconstructed
Viewport menu + framing, grid toggle, camera history

RealityKit Outline Selection
TLDR: MeshResource.contents, three passes, one PostProcessEffect 1. Rasterize the selected mesh into an offscreen R8Unorm silhouette mask 2. Dilate the mask into a pixel-wide edge ring, suppressing the interior 3. Composite the outline color over the source frame One of the most commonly requested affordances when dealing with 3d
Pageview analytics comparison

We are comparing self-hosted OpenPanel with the analytics already used on this site. This comparison records page paths, referring website origins, pageview times, random event IDs, browser and device information, and approximate location. Our server processes IP and browser information to generate rotating, pseudonymous visitor IDs. OpenPanel does not use tracking cookies or save a visitor ID in your browser. URL queries, fragments and page titles are removed; click tracking and session replay are off.

Do Not Track and Global Privacy Control disable this OpenPanel comparison. If you change the choice below, only that preference is saved in your browser. Existing analytics remain active during the comparison. Contact and site information.