Skip to main content
Version: v5.1

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_TOP
  • LEFT_BOTTOM
  • RIGHT_TOP
  • RIGHT_BOTTOM

These control the viewer position in SPLIT or FIXED display modes.