Photosphere features
Overview#
The IafViewer allows you to explore a model using photosphere technology. Photospheres are 360 degree panoramic images which provide an immersive view of a location.
This page demonstrates how to implement 360° panoramic viewing using the {{photosphere}} property of {{IafViewerDBM}}. The photosphere viewer enables immersive interior exploration through equirectangular panoramic images.
Core components#
IafViewerDBM with Photosphere Mode#
IafViewerDBM is the database-managed viewer component that supports 360° panoramic viewing for immersive interior visualization.
Key Props for Photosphere Rendering#
Refer to the props examples showen below.
{ mode: "photo", // Mode identifier for photosphere rendering appId: string, // Application identifier
// Photosphere-specific configuration (REQUIRED) photosphere: { enable: boolean, // Enable/disable photosphere viewer config: { // Configuration object modelUriBase: string, // Base URL for image assets model: object // Model object with scene data }, displayMode: enum, // Display layout mode showToolbar: boolean, // Toolbar visibility alignment: enum // Widget alignment position }}Photosphere Configuration Object#
The {{config}} property contains settings for loading and displaying panoramic images. See explanations below.
{ modelUriBase: string, // Base URL path for panorama images model: { // Model object defining tour structure id: string, // Unique identifier defaultImage: string, // Default panorama image filename defaultScene: object, // Initial scene configuration scenes: array // Optional: Additional scenes for navigation }}Required Properties#
enable (Boolean)
Enables or disables the photosphere viewer.
photosphere: { enable: true // Must be true to activate}config (Object)
Configuration object containing model and asset information.
config.modelUriBase (String)
Base URL path for loading panorama images.
config: { modelUriBase: "/reference/invicara/models/360Tour/"}Usage: Combined with image filenames to create full image URLs#
Example:
{{modelUriBase and defaultImage}} → {{/reference/invicara/models/360Tour/lobby.jpg}}
config.model (Object)
Model object defining the photosphere tour structure.
Required Model Properties:
{{model.id}} - Unique identifier for the photosphere model
model: { id: "BuildingTour"}{{model.defaultImage}} - Filename of the default panorama image.
model: { defaultImage: "lobby.jpg"}{{model.defaultScene}} - Initial scene configuration
defaultScene: { id: "lobby-scene", // Required: Scene identifier title: "Building Lobby", // Required: Display title type: "equirectangular", // Required: Panorama type panorama: "lobby.jpg", // Required: Image filename autoLoad: true, // Optional: Auto-load on mount // Optional camera settings hfov: 110, // Horizontal field of view (degrees) pitch: 0, // Initial pitch angle (-90 to 90) yaw: 0, // Initial yaw angle (-180 to 180) // Optional navigation hotSpots: [] // Array of hotspot objects}{{model.scenes}} - Additional scenes for navigation (Optional)
scenes: [ { id: "scene-id-2", // Required: Scene identifier title: "Conference Room", // Required: Display title type: "equirectangular", // Required: Panorama type imageSource: "/path/to/image2.jpg", // Required: Full or relative path hfov: 110, // Optional pitch: 0, // Optional yaw: 0, // Optional hotSpots: [] // Optional }]HotSpot Configuration#
HotSpots enable navigation between scenes.
Scene navigation hotspot example
{ pitch: 2.0, // Vertical position on panorama yaw: -90.0, // Horizontal position on panorama type: "scene", // Navigation hotspot text: "Go to Room", // Tooltip text sceneId: "room-id", // Target scene identifier targetYaw: 0, // Camera yaw when entering target targetPitch: 0 // Camera pitch when entering target}How to set up files#
Step 1: Define Photosphere Configuration#
//photo/config.js
export const PHOTO_CONFIG = { modelUriBase: "/reference/invicara/models/360Tour/"};
export const publicPath = "/reference/invicara";
const BUILDING_TOUR = { id: "BuildingTour", defaultImage: "lobby.jpg", defaultScene: { id: "lobby", autoLoad: true, title: "Building Lobby", type: "equirectangular", panorama: "lobby.jpg", hfov: 110, pitch: 0, yaw: 0, hotSpots: [ { pitch: 0, yaw: 90, type: "scene", text: "Go to Reception", sceneId: "reception", targetYaw: 180, targetPitch: 0 } ] }, scenes: [ { id: "reception", title: "Reception Area", type: "equirectangular", imageSource: ${publicPath}/models/360Tour/reception.jpg, hfov: 110, pitch: 0, yaw: 180, hotSpots: [ { pitch: 0, yaw: -90, type: "scene", text: "Back to Lobby", sceneId: "lobby", targetYaw: 0, targetPitch: 0 } ] } ]};
export const AVAILABLE_MODELS = { "BuildingTour": BUILDING_TOUR};Step 2: Create Photosphere Properties Helper#
// photo/properties.js
import { APPLICATION_ID } from "../states";import { PHOTO_CONFIG, AVAILABLE_MODELS } from "./config";
export function getPhotoSphereProperties(buildingName = "BuildingTour") { return { mode: "photo", appId: APPLICATION_ID, config: { ...PHOTO_CONFIG, model: AVAILABLE_MODELS[buildingName] } };}
Component Summary#
Main components#
The main components are:
{{photosphere}}- Photosphere viewer configuration (always required for photosphere rendering){{photosphere.config.modelUriBase}}- Base URL for panorama images (required){{photosphere.config.model}}- Model object with scene data (required)
Optional Components#
The optional components are:
{{photosphere.config.model.scenes}}- Additional scenes for navigation (optional){{photosphere.displayMode}}- Display layout mode (optional, defaults to DEFAULT){{photosphere.showToolbar}}- Toolbar visibility (optional, defaults to true){{photosphere.alignment}}- Widget alignment (optional, for SPLIT or FIXED modes)
Camera settngs#
Field of View (hfov)#
Controls the zoom level of the panorama
Range: 50-120 degrees
Default: 110 degrees Lower value = more zoomed in
Pitch (Vertical Angle)#
Initial vertical camera angle
Range: -90 to 90 degrees
Negative = looking down
Positive = looking up
0 = straight ahead
Yaw (Horizontal Angle)#
Initial horizontal camera angle
Range: -180 to 180 degrees
0 = forward
-90 = left
90 = right
Display Modes#
FULLSCREEN#
Photosphere viewer covers entire viewport. Best for standalone photosphere viewing.
See example below.
photosphere: { enable: true, displayMode: IafEvmUtils.EVMDisplayMode.FULLSCREEN, showToolbar: true}DEFAULT#
Photosphere viewer shares space with other views. Best for multi-view integration.
See example below.
photosphere: { enable: true, displayMode: IafEvmUtils.EVMDisplayMode.DEFAULT, alignment: IafEvmUtils.EVMWidgetAlignment.RIGHT_TOP, showToolbar: true}SPLIT#
Photosphere viewer splits viewport with another view.
See example below.
photosphere: { enable: true, displayMode: IafEvmUtils.EVMDisplayMode.SPLIT, alignment: IafEvmUtils.EVMWidgetAlignment.LEFT_BOTTOM}Widget alignment options#
The alignment options are:
LEFT_TOPLEFT_BOTTOMRIGHT_TOPRIGHT_BOTTOM
These control the viewer position in SPLIT or FIXED display modes.