Skip to Content
HooksuseViewerCamera

useViewerCamera

Provides camera state and imperative helpers for resetting, focusing, and fitting the scene.

Usage

import { useViewerCamera } from "@liveroom/react-immersive"; const { cameraState, resetView, focusObject, fitScene, setCameraTarget, handleCameraChange, handleViewerReady, } = useViewerCamera(); <ModelViewer onCameraChange={handleCameraChange} onViewerReady={handleViewerReady} ... />

Returns

NameTypeDescription
cameraStateCameraState | nullLatest camera position, target, fov, zoom
resetView() => voidResets the controls to their initial saved state
focusObject(id: string) => voidFits the camera to a binding by key, binding.id, or binding.modelObjectId
fitScene() => voidFits the camera to the whole loaded scene
setCameraTarget(target: [number, number, number]) => voidSets the camera target to a given [x, y, z]
handleCameraChange(camera: Camera, controls: CameraControls) => voidCallback to pass to onCameraChange
handleViewerReady(viewer: ViewerReadyState) => voidCallback to pass to onViewerReady

Example

<button onClick={() => resetView()}>Reset Camera</button> <button onClick={() => focusObject("some-object-id")}>Focus Object</button> <button onClick={() => fitScene()}>Fit Scene</button> <button onClick={() => setCameraTarget([0, 0, 0])}>Target Origin</button> <pre>{JSON.stringify(cameraState, null, 2)}</pre>