English
Appearance
English
Appearance
This page describes the scene runtime API exposed as detail.api in the ready event.
iframe.addEventListener('ready', (event) => {
const api = event.detail.api;
});This API is currently intended for scene pages.
On collection pages, ready.detail.api is not the scene API.
const obj = await api.getObject('rabbit');
await api.setPosition(obj, 1, 0, 0);interface SceneObjectHandle {
id: number;
}You cannot read or mutate internal properties directly. You can only pass the handle back into API methods.
getStartButtonRect(): Promise<DOMRect | undefined>
setStartButtonRect(rect: Partial<CSSStyleDeclaration>): Promise<void>Used to read or adjust the style and layout of the scene landing page's Start Now Button.
api.constants = {
no: 0,
linear: 1,
reinhard: 2,
cineon: 4,
aces_filmic: 5,
}Mainly used with setToneMapping().
getObject(name: string): Promise<SceneObjectHandle | null>
getAllObjects(): Promise<SceneObjectHandle[]>
getObjectName(target: SceneObjectHandle): Promise<string | null>
setObjectName(target: SceneObjectHandle, name: string): Promise<void>
getObjectVisible(target: SceneObjectHandle): Promise<boolean | null>
setObjectVisible(target: SceneObjectHandle, visible: boolean): Promise<void>
getRenderOrder(target: SceneObjectHandle): Promise<number | null>
setRenderOrder(target: SceneObjectHandle, renderOrder: number): Promise<void>
getDisableClick(target: SceneObjectHandle): Promise<boolean | null>
setDisableClick(target: SceneObjectHandle, disableClick: boolean): Promise<void>
getSize(target: SceneObjectHandle): Promise<[number, number, number]>
lookAt(target: SceneObjectHandle, x: number, y: number, z: number): Promise<void>addChild(target: SceneObjectHandle, child: SceneObjectHandle): Promise<void>
removeChild(target: SceneObjectHandle, child: SceneObjectHandle): Promise<void>
getChildren(target: SceneObjectHandle): Promise<SceneObjectHandle[]>
getChildByProperty(
target: SceneObjectHandle,
property: string,
value: any,
): Promise<SceneObjectHandle | null>
add(target: SceneObjectHandle): Promise<void>
remove(target: SceneObjectHandle): Promise<void>
destroyObject(target: SceneObjectHandle): Promise<void>
clear(): Promise<void>getPosition(target: SceneObjectHandle): Promise<[number, number, number]>
setPosition(target: SceneObjectHandle, x?: number, y?: number, z?: number): Promise<void>
getRotation(target: SceneObjectHandle): Promise<[number, number, number, string]>
setRotation(
target: SceneObjectHandle,
x?: number,
y?: number,
z?: number,
order?: string,
): Promise<void>
getQuaternion(target: SceneObjectHandle): Promise<[number, number, number, number]>
setQuaternion(
target: SceneObjectHandle,
x?: number,
y?: number,
z?: number,
w?: number,
): Promise<void>
getScale(target: SceneObjectHandle): Promise<[number, number, number]>
setScale(target: SceneObjectHandle, x?: number, y?: number, z?: number): Promise<void>createImage(input: string | ArrayBuffer | Blob | File): Promise<SceneObjectHandle>
createAnimatedImage(input: string | ArrayBuffer | Blob | File): Promise<SceneObjectHandle>
createGltfModel(input: string | ArrayBuffer | Blob | File): Promise<SceneObjectHandle>
createVideo(input: string | ArrayBuffer | Blob | File): Promise<SceneObjectHandle>
createAlphaVideo(input: string | ArrayBuffer | Blob | File): Promise<SceneObjectHandle>
interface KeyingVideoConfig {
color?: string | number;
similarity?: number;
smoothness?: number;
spill?: number;
}
createKeyingVideo(input: string | ArrayBuffer | Blob | File, config?: KeyingVideoConfig): Promise<SceneObjectHandle>
createPanorama(input: string | ArrayBuffer | Blob | File, segments?: number): Promise<SceneObjectHandle>
createEnvMapByHDR(input: string | ArrayBuffer | Blob | File): Promise<SceneObjectHandle>
createGroup(): Promise<SceneObjectHandle>
createAmbientLight(color?: string | number, intensity?: number): Promise<SceneObjectHandle>
createDirectionalLight(color?: string | number, intensity?: number): Promise<SceneObjectHandle>setEnableMask(target: SceneObjectHandle): Promise<void>
setDisableMask(target: SceneObjectHandle): Promise<void>
setGLState(
target: SceneObjectHandle,
prop:
| 'side'
| 'shadowSide'
| 'blending'
| 'transparent'
| 'opacity'
| 'alphaTest'
| 'depthTest'
| 'depthWrite'
| 'colorWrite',
value: any,
recursive?: boolean,
): Promise<void>
setAnisotropy(
target: SceneObjectHandle,
num: number,
mapType?: string,
recursive?: boolean,
): Promise<void>
setObjectAlpha(target: SceneObjectHandle, type: string, cutOff: number): Promise<void>
useEnvMapForObj(
target: SceneObjectHandle,
envMap: SceneObjectHandle,
intensity?: number,
): Promise<void>
setToneMapping(toneMapping: number, toneMappingExposure?: number): Promise<void>getDefaultAmbientLight(): Promise<SceneObjectHandle | null>
getDefaultDirectionalLightLeft(): Promise<SceneObjectHandle | null>
getDefaultDirectionalLightRight(): Promise<SceneObjectHandle | null>
getDirectionalLightTarget(light: SceneObjectHandle): Promise<SceneObjectHandle | null>
getLightColor(light: SceneObjectHandle): Promise<[number, number, number]>
setLightColor(light: SceneObjectHandle, color: string | number): Promise<void>
getLightIntensity(light: SceneObjectHandle): Promise<number>
setLightIntensity(light: SceneObjectHandle, intensity: number): Promise<void>getDefaultCamera(): Promise<SceneObjectHandle>
getCameraFov(camera: SceneObjectHandle): Promise<number | null>
setCameraFov(camera: SceneObjectHandle, fov: number): Promise<void>
getCameraAspect(camera: SceneObjectHandle): Promise<number | null>
setCameraAspect(camera: SceneObjectHandle, aspect: number): Promise<void>
getCameraNear(camera: SceneObjectHandle): Promise<number | null>
setCameraNear(camera: SceneObjectHandle, near: number): Promise<void>
getCameraFar(camera: SceneObjectHandle): Promise<number | null>
setCameraFar(camera: SceneObjectHandle, far: number): Promise<void>
updateCameraProjectionMatrix(): Promise<void>
getCameraWorldDirection(): Promise<[number, number, number]>
switchCamera(position?: 'front' | 'back'): Promise<'front' | 'back'>
takePhoto(): Promise<string>
dispatchTouchEvent(x: number, y: number): Promise<void>
skipCloudar(): Promise<void>switchCamera() is not available in web3d modetakePhoto() returns a data:image/png;base64,... stringskipCloudar() is meaningful only for Basic AR/Gyroscope scenesgetAnimatedImagePaused(target: SceneObjectHandle): Promise<boolean | null>
playAnimatedImage(target: SceneObjectHandle, loopCount?: number): Promise<void>
pauseAnimatedImage(target: SceneObjectHandle): Promise<void>
stopAnimatedImage(target: SceneObjectHandle): Promise<void>getVideoDuration(target: SceneObjectHandle): Promise<number | null>
getVideoPaused(target: SceneObjectHandle): Promise<boolean | null>
getVideoCurrentTime(target: SceneObjectHandle): Promise<number | null>
setVideoCurrentTime(target: SceneObjectHandle, currentTime: number): Promise<void>
getVideoLoop(target: SceneObjectHandle): Promise<boolean | null>
setVideoLoop(target: SceneObjectHandle, loop: boolean): Promise<void>
playVideo(target: SceneObjectHandle, options?: Record<string, any>): Promise<void>
pauseVideo(target: SceneObjectHandle): Promise<void>
stopVideo(target: SceneObjectHandle): Promise<void>
playbackVideo(target: SceneObjectHandle, options?: Record<string, any>): Promise<void>getAudioDuration(target: SceneObjectHandle): Promise<number | null>
getAudioPaused(target: SceneObjectHandle): Promise<boolean | null>
getAudioCurrentTime(target: SceneObjectHandle): Promise<number | null>
setAudioCurrentTime(target: SceneObjectHandle, currentTime: number): Promise<void>
getAudioLoop(target: SceneObjectHandle): Promise<boolean | null>
setAudioLoop(target: SceneObjectHandle, loop: boolean): Promise<void>
playAudio(target: SceneObjectHandle, options?: Record<string, any>): Promise<void>
pauseAudio(target: SceneObjectHandle): Promise<void>
stopAudio(target: SceneObjectHandle): Promise<void>
playbackAudio(target: SceneObjectHandle, options?: Record<string, any>): Promise<void>getAnimationNames(target: SceneObjectHandle): Promise<string[] | null>
animationIsRunning(target: SceneObjectHandle, animationName?: string): Promise<boolean | null>
isAnimationLoop(target: SceneObjectHandle, animationName: string): Promise<boolean | null>
getAnimationIsRunningNames(target: SceneObjectHandle): Promise<string[] | null>
playAnimation(
target: SceneObjectHandle,
options?: {
name?: string;
loop?: boolean;
repeat?: number;
repeatMode?: number;
timeScale?: number;
weight?: number;
clampWhenFinished?: boolean;
resetLoopCount?: boolean;
},
triggerEvent?: boolean,
): Promise<void>
pauseAnimation(
target: SceneObjectHandle,
name?: string,
triggerEvent?: boolean,
): Promise<void>
stopAnimation(
target: SceneObjectHandle,
name?: string,
triggerEvent?: boolean,
): Promise<void>
playbackAnimation(
target: SceneObjectHandle,
options?: {
name?: string;
loop?: boolean;
repeat?: number;
repeatMode?: number;
timeScale?: number;
weight?: number;
clampWhenFinished?: boolean;
resetLoopCount?: boolean;
},
triggerEvent?: boolean,
): Promise<void>on(
eventName:
| 'objectClick'
| 'click'
| 'loop'
| 'play'
| 'pause'
| 'ended'
| 'replay',
callback: (...args: any[]) => any,
target?: SceneObjectHandle,
): Promise<void>
off(
eventName:
| 'objectClick'
| 'click'
| 'loop'
| 'play'
| 'pause'
| 'ended'
| 'replay',
callback: (...args: any[]) => any,
target?: SceneObjectHandle,
): Promise<void>target, only objectClick is supportedtarget, click, play, pause, ended, replay, and similar object events are supportedSupported callback payloads differ by object type and event type.