@realsee/vreo 0.1.6 → 0.2.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +103 -16
- package/docs/assets/custom.css +4 -4
- package/docs/assets/search.js +1 -1
- package/docs/classes/Player.Controller.html +54 -0
- package/docs/classes/Player.Player-1.html +11 -11
- package/docs/classes/Player.VideoAgentMesh.html +142 -0
- package/docs/classes/Player.VideoAgentScene.html +1 -0
- package/docs/enums/Player.InfoPanelStyleEnum.html +1 -0
- package/docs/enums/Player.InfoPanelTypeEnum.html +1 -1
- package/docs/enums/Player.PanoEffectEnum.html +2 -2
- package/docs/enums/Player.PanoTagEnum.html +1 -1
- package/docs/enums/Player.VreoKeyframeEnum.html +14 -12
- package/docs/enums/fivePlugins.CameraMovementEffect.html +1 -1
- package/docs/enums/fivePlugins.Rotation.html +1 -1
- package/docs/index.html +52 -19
- package/docs/interfaces/Player.CustomVreoKeyframeProps.html +1 -0
- package/docs/interfaces/Player.PlayerConfigs.html +4 -2
- package/docs/interfaces/Player.Vertex.html +1 -1
- package/docs/interfaces/Player.VideoAgentMeshOptions.html +1 -0
- package/docs/interfaces/Player.VreoKeyframe.html +1 -1
- package/docs/interfaces/Player.VreoUnit.html +1 -1
- package/docs/interfaces/Player.VreoVideo.html +1 -1
- package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +1 -1
- package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +3 -3
- package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +1 -1
- package/docs/interfaces/react.VreoActionCallbacks.html +15 -7
- package/docs/interfaces/react.VreoProviderProps.html +1 -0
- package/docs/modules/Player.html +17 -15
- package/docs/modules/custom.html +3 -0
- package/docs/modules/fivePlugins.html +2 -2
- package/docs/modules/react.html +1 -1
- package/docs/modules.html +1 -1
- package/lib/PlayController/createHTMLAudioElement.d.ts +1 -0
- package/lib/PlayController/createHTMLAudioElement.js +47 -0
- package/lib/PlayController/index.d.ts +38 -0
- package/lib/PlayController/index.js +300 -0
- package/lib/Player/App.js +8 -3
- package/lib/Player/Controller.d.ts +2 -0
- package/lib/Player/Controller.js +14 -0
- package/lib/Player/custom/SpatialScenePanel/index.d.ts +22 -0
- package/lib/Player/custom/SpatialScenePanel/index.js +279 -0
- package/lib/Player/index.d.ts +1 -1
- package/lib/Player/index.js +98 -11
- package/lib/Player/modules/Drawer/index.js +1 -1
- package/lib/Player/modules/PopUp/index.d.ts +2 -0
- package/lib/Player/modules/PopUp/index.js +43 -0
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +1 -0
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +6 -2
- package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +4 -1
- package/lib/Player/modules/VideoAgent/VideoAgentScene.js +21 -6
- package/lib/Player/modules/VideoAgent/index.d.ts +2 -0
- package/lib/Player/modules/VideoAgent/index.js +1 -1
- package/lib/Player/modules/keyframes/BgMusic/index.d.ts +2 -0
- package/lib/Player/modules/keyframes/BgMusic/index.js +76 -0
- package/lib/Player/modules/keyframes/CameraMovement/index.js +41 -5
- package/lib/Player/modules/keyframes/InfoPanel/index.js +105 -23
- package/lib/Player/modules/keyframes/ModelVideo/index.js +47 -10
- package/lib/Player/modules/keyframes/PanoTextLabel/index.js +4 -12
- package/lib/Player/modules/keyframes/Prompter/index.js +4 -18
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +71 -12
- package/lib/Player/typings.d.ts +19 -1
- package/lib/fivePlugins/CameraMovementPlugin/index.js +104 -90
- package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts +1 -0
- package/lib/react/index.d.ts +10 -2
- package/lib/react/index.js +1 -1
- package/lib/shared-utils/createTransMatrix.d.ts +1 -0
- package/lib/shared-utils/createTransMatrix.js +43 -0
- package/lib/typings/VreoUnit.d.ts +47 -7
- package/lib/typings/VreoUnit.js +15 -6
- package/package.json +6 -6
- package/resources/PlayController/createHTMLAudioElement.ts +53 -0
- package/resources/PlayController/index.ts +167 -0
- package/resources/Player/App.tsx +6 -1
- package/resources/Player/Controller.ts +12 -0
- package/resources/Player/custom/SpatialScenePanel/index.tsx +264 -0
- package/resources/Player/index.tsx +56 -2
- package/resources/Player/modules/Drawer/index.tsx +1 -1
- package/resources/Player/modules/PopUp/index.tsx +26 -0
- package/resources/Player/modules/VideoAgent/VideoAgentMesh.ts +5 -4
- package/resources/Player/modules/VideoAgent/VideoAgentScene.ts +11 -2
- package/resources/Player/modules/VideoAgent/index.tsx +3 -2
- package/resources/Player/modules/keyframes/BgMusic/index.tsx +66 -0
- package/resources/Player/modules/keyframes/CameraMovement/index.tsx +7 -3
- package/resources/Player/modules/keyframes/InfoPanel/index.tsx +109 -11
- package/resources/Player/modules/keyframes/ModelVideo/index.tsx +38 -5
- package/resources/Player/modules/keyframes/PanoTextLabel/index.tsx +2 -2
- package/resources/Player/modules/keyframes/Prompter/index.tsx +5 -15
- package/resources/Player/modules/keyframes/UpdateVRPanorama/index.tsx +75 -12
- package/resources/Player/typings.ts +21 -1
- package/resources/fivePlugins/CameraMovementPlugin/index.ts +59 -48
- package/resources/fivePlugins/CameraMovementPlugin/typings.ts +2 -1
- package/resources/react/index.tsx +12 -3
- package/resources/shared-utils/createTransMatrix.ts +12 -0
- package/resources/typings/VreoUnit.ts +56 -7
- package/stylesheets/custom/SpatialScenePanel.css +309 -0
- package/stylesheets/default.css +127 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Five } from '@realsee/five'
|
|
1
|
+
import { Five, MovePanoOptions } from '@realsee/five'
|
|
2
2
|
import type { FivePlugin } from '@realsee/five'
|
|
3
3
|
import * as TWEEN from '@tweenjs/tween.js'
|
|
4
4
|
|
|
@@ -50,63 +50,73 @@ function progressNumber(from: number, to: number, pst: number) {
|
|
|
50
50
|
export const CameraMovementPlugin: FivePlugin<CameraMovementPluginParameterType, CameraMovementPluginExportType> = (
|
|
51
51
|
five: Five,
|
|
52
52
|
) => {
|
|
53
|
-
const move =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
const move = (args: Partial<MoveArgs>, duration: number, opts: MoveOpts = { preload: true }) => {
|
|
54
|
+
return new Promise<boolean>(async (resolve, reject) => {
|
|
55
|
+
|
|
56
|
+
if (opts.asyncStartCallback) {
|
|
57
|
+
opts.asyncStartCallback()
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (five.panoIndex === undefined) {
|
|
61
|
+
return reject(false)
|
|
62
|
+
}
|
|
57
63
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
if (args.mode && args.mode !== five.currentMode) {
|
|
65
|
+
await new Promise((resolve) => {
|
|
66
|
+
if (!args.mode) return
|
|
67
|
+
five.once('modeChange', (mode) => {
|
|
68
|
+
five.once('initAnimationEnded', () => {
|
|
69
|
+
if (mode === args.mode) {
|
|
70
|
+
resolve(true)
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
five.changeMode(args.mode, {
|
|
75
|
+
fov: args.fov || undefined,
|
|
76
|
+
latitude: args.latitude || undefined,
|
|
77
|
+
longitude: args.longitude || undefined,
|
|
78
|
+
panoIndex: args.panoIndex || undefined,
|
|
66
79
|
})
|
|
67
80
|
})
|
|
68
|
-
|
|
69
|
-
fov: args.fov || undefined,
|
|
70
|
-
latitude: args.latitude || undefined,
|
|
71
|
-
longitude: args.longitude || undefined,
|
|
72
|
-
panoIndex: args.panoIndex || undefined,
|
|
73
|
-
})
|
|
74
|
-
})
|
|
75
|
-
}
|
|
81
|
+
}
|
|
76
82
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
83
|
+
if (args.mode === Five.Mode.Floorplan) {
|
|
84
|
+
return resolve(true)
|
|
85
|
+
}
|
|
80
86
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
87
|
+
if (opts.preload && args.panoIndex !== undefined && args.panoIndex !== five.panoIndex) {
|
|
88
|
+
await five.preloadPano(args.panoIndex)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (opts.asyncEndCallback) {
|
|
92
|
+
opts.asyncEndCallback()
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (
|
|
96
|
+
args.panoIndex === undefined &&
|
|
97
|
+
args.fov === undefined &&
|
|
98
|
+
args.latitude === undefined &&
|
|
99
|
+
args.longitude === undefined
|
|
100
|
+
) {
|
|
101
|
+
return resolve(true)
|
|
102
|
+
}
|
|
84
103
|
|
|
85
|
-
if (opts.asyncEndCallback) {
|
|
86
|
-
opts.asyncEndCallback()
|
|
87
|
-
}
|
|
88
104
|
|
|
89
|
-
if (
|
|
90
|
-
args.panoIndex === undefined &&
|
|
91
|
-
args.fov === undefined &&
|
|
92
|
-
args.latitude === undefined &&
|
|
93
|
-
args.longitude === undefined
|
|
94
|
-
) {
|
|
95
|
-
return true
|
|
96
|
-
}
|
|
97
|
-
return await new Promise<boolean>((resolve, reject) => {
|
|
98
105
|
const panoIndex = args.panoIndex !== undefined ? args.panoIndex : five.panoIndex
|
|
106
|
+
|
|
99
107
|
if (panoIndex !== undefined) {
|
|
100
|
-
|
|
108
|
+
const movePanoOptions: MovePanoOptions = Object.assign(args, {
|
|
109
|
+
duration, // 移动耗时
|
|
110
|
+
moveEndCallback: () => resolve(true), // 移动结束
|
|
111
|
+
moveCancelCallback: () => {
|
|
112
|
+
resolve(true)
|
|
113
|
+
}, // 移动开始
|
|
114
|
+
// effect: args.transEffect || 'fade',
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
await five.moveToPano(
|
|
101
118
|
panoIndex,
|
|
102
|
-
|
|
103
|
-
{
|
|
104
|
-
duration, // 移动耗时
|
|
105
|
-
moveEndCallback: () => resolve(true), // 移动结束
|
|
106
|
-
moveCancelCallback: () => reject(false), // 移动开始
|
|
107
|
-
},
|
|
108
|
-
args,
|
|
109
|
-
),
|
|
119
|
+
movePanoOptions,
|
|
110
120
|
)
|
|
111
121
|
} else {
|
|
112
122
|
reject(false)
|
|
@@ -154,6 +164,7 @@ export const CameraMovementPlugin: FivePlugin<CameraMovementPluginParameterType,
|
|
|
154
164
|
five.moveToPano(args.panoIndex, {
|
|
155
165
|
moveEndCallback: () => resolve(true), // 移动结束
|
|
156
166
|
moveCancelCallback: () => reject(false), // 移动开始
|
|
167
|
+
effect: 'fade',
|
|
157
168
|
})
|
|
158
169
|
})
|
|
159
170
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable prettier/prettier */
|
|
2
|
-
import { Mode, Pose } from '@realsee/five'
|
|
2
|
+
import { Mode, MovePanoOptions, Pose } from '@realsee/five'
|
|
3
3
|
|
|
4
4
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
5
5
|
export interface CameraMovementPluginParameterType { }
|
|
@@ -39,6 +39,7 @@ export interface CameraMovementOptsCallback {
|
|
|
39
39
|
export type MoveArgs = {
|
|
40
40
|
mode: Mode
|
|
41
41
|
panoIndex: number
|
|
42
|
+
transEffect?: "fly" | "fade" | "instant"
|
|
42
43
|
} & Pose
|
|
43
44
|
|
|
44
45
|
export type MoveOpts = {
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { unsafe__useFiveInstance } from '@realsee/five/react'
|
|
2
2
|
import * as React from 'react'
|
|
3
3
|
import { Player } from '../Player'
|
|
4
|
+
import { PlayerConfigs } from '../Player/typings'
|
|
4
5
|
import { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit'
|
|
5
6
|
|
|
6
7
|
const VreoContext = React.createContext<Player | null>(null)
|
|
7
8
|
|
|
8
|
-
export
|
|
9
|
+
export interface VreoProviderProps {
|
|
10
|
+
configs?: Partial<PlayerConfigs>
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const VreoProvider: React.FC<VreoProviderProps> = (props ) => {
|
|
9
14
|
const five = unsafe__useFiveInstance()
|
|
10
15
|
|
|
11
16
|
const [player, setPlayer] = React.useState<Player | null>(null)
|
|
12
17
|
const playerRef = React.useRef<Player | null>(null)
|
|
13
18
|
|
|
14
19
|
React.useEffect(() => {
|
|
15
|
-
playerRef.current = new Player(five)
|
|
20
|
+
playerRef.current = new Player(five, props.configs || {})
|
|
16
21
|
setPlayer(playerRef.current)
|
|
17
22
|
|
|
18
23
|
return () => {
|
|
@@ -40,8 +45,12 @@ function useVreoInstance() {
|
|
|
40
45
|
export interface VreoActionCallbacks {
|
|
41
46
|
/**
|
|
42
47
|
* 载入剧本数据。
|
|
48
|
+
* @param vreoUnit 剧本数据
|
|
49
|
+
* @param currentTime 开始时间戳
|
|
50
|
+
* @param preload 是否开启预载
|
|
51
|
+
* @param force 是否强制载入
|
|
43
52
|
*/
|
|
44
|
-
load: (vreoUnit: VreoUnit, currentTime?: number) => Promise<boolean>
|
|
53
|
+
load: (vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean) => Promise<boolean>
|
|
45
54
|
/**
|
|
46
55
|
* 播放。
|
|
47
56
|
*/
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as THREE from 'three'
|
|
2
|
+
|
|
3
|
+
export function createTransMatrix(arr1: number[]) {
|
|
4
|
+
const matrix4 = new THREE.Matrix4()
|
|
5
|
+
matrix4.fromArray(arr1)
|
|
6
|
+
|
|
7
|
+
return (arr2: number[]) => {
|
|
8
|
+
const vector3 = new THREE.Vector3(...arr2)
|
|
9
|
+
vector3.applyMatrix4(matrix4)
|
|
10
|
+
return vector3.toArray()
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Mode,
|
|
1
|
+
import { Mode, MovePanoOptions, Pose } from '@realsee/five'
|
|
2
2
|
import { CameraMovementEffect, Rotation } from '../fivePlugins/CameraMovementPlugin/typings'
|
|
3
3
|
|
|
4
4
|
export enum VreoKeyframeEnum {
|
|
@@ -36,6 +36,10 @@ export enum VreoKeyframeEnum {
|
|
|
36
36
|
* 视频特效
|
|
37
37
|
*/
|
|
38
38
|
VideoEffect = 'VideoEffect',
|
|
39
|
+
/**
|
|
40
|
+
* 背景音乐
|
|
41
|
+
*/
|
|
42
|
+
BgMusic = 'BgMusic',
|
|
39
43
|
/**
|
|
40
44
|
* 结束
|
|
41
45
|
*/
|
|
@@ -61,6 +65,7 @@ export type VreoKeyframeConfigMap = {
|
|
|
61
65
|
* 剧本关键帧
|
|
62
66
|
*/
|
|
63
67
|
export interface VreoKeyframe {
|
|
68
|
+
uuid?: string
|
|
64
69
|
type: VreoKeyframeEnum
|
|
65
70
|
start: number
|
|
66
71
|
end: number
|
|
@@ -96,15 +101,22 @@ export interface VreoUnit {
|
|
|
96
101
|
* 剧本事件
|
|
97
102
|
*/
|
|
98
103
|
export type VreoKeyframeEvent = { [key in VreoKeyframeEnum]: (keyframe: VreoKeyframe) => void } & {
|
|
99
|
-
|
|
104
|
+
// 新数据载入完成
|
|
105
|
+
loaded: (vreoUnit: VreoUnit) => void
|
|
106
|
+
// 语音状态 播放 -> 暂停
|
|
107
|
+
paused: (ended?: boolean) => void
|
|
108
|
+
// 语音状态 暂停 -> 播放
|
|
100
109
|
playing: () => void
|
|
110
|
+
// 未知的 剧本帧类型
|
|
111
|
+
unknownKeyframeType: (keyframe: Record<string, any>) => void
|
|
101
112
|
}
|
|
102
113
|
|
|
103
114
|
/**
|
|
104
115
|
* 相机运动
|
|
105
116
|
*/
|
|
106
117
|
export type CameraMovementData = {
|
|
107
|
-
effect
|
|
118
|
+
effect?: CameraMovementEffect
|
|
119
|
+
transEffect?: "fly" | "fade" | "instant"
|
|
108
120
|
mode: Mode
|
|
109
121
|
panoIndex: number
|
|
110
122
|
loop?: boolean
|
|
@@ -123,8 +135,23 @@ export type PrompterData = {
|
|
|
123
135
|
* VR 全景切换
|
|
124
136
|
*/
|
|
125
137
|
export type UpdateVRPanoramaData = {
|
|
126
|
-
|
|
127
|
-
|
|
138
|
+
_signature: string
|
|
139
|
+
allow_hosts: string[]
|
|
140
|
+
certificate: string
|
|
141
|
+
expire_at: string
|
|
142
|
+
// 动态场景
|
|
143
|
+
dynamic_scene?: {
|
|
144
|
+
images: {
|
|
145
|
+
index: number
|
|
146
|
+
right: string
|
|
147
|
+
left: string
|
|
148
|
+
up: string
|
|
149
|
+
down: string
|
|
150
|
+
front: string
|
|
151
|
+
back: string
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
[key: string]: any
|
|
128
155
|
}
|
|
129
156
|
|
|
130
157
|
/**
|
|
@@ -137,9 +164,13 @@ export interface Vertex {
|
|
|
137
164
|
}
|
|
138
165
|
|
|
139
166
|
/**
|
|
140
|
-
*
|
|
167
|
+
* 矩形顶点
|
|
141
168
|
*/
|
|
142
169
|
export type QuadrangleVertexs = [Vertex, Vertex, Vertex, Vertex]
|
|
170
|
+
/**
|
|
171
|
+
* 顶点数组
|
|
172
|
+
*/
|
|
173
|
+
export type Vertexs = Vertex[]
|
|
143
174
|
|
|
144
175
|
/**
|
|
145
176
|
* 视频广告
|
|
@@ -156,7 +187,8 @@ export type ModelVideoData = {
|
|
|
156
187
|
/**
|
|
157
188
|
* 视频映射在模型中的顶点
|
|
158
189
|
*/
|
|
159
|
-
vertexs: QuadrangleVertexs
|
|
190
|
+
vertexs: QuadrangleVertexs | Vertexs
|
|
191
|
+
matrixWorld?: number[]
|
|
160
192
|
}
|
|
161
193
|
|
|
162
194
|
/**
|
|
@@ -209,12 +241,22 @@ export enum InfoPanelTypeEnum {
|
|
|
209
241
|
Video = 'Video',
|
|
210
242
|
}
|
|
211
243
|
|
|
244
|
+
export enum InfoPanelStyleEnum {
|
|
245
|
+
Drawer = 'Drawer',
|
|
246
|
+
PopUp = 'PopUp',
|
|
247
|
+
}
|
|
248
|
+
|
|
212
249
|
/**
|
|
213
250
|
* 信息面板
|
|
214
251
|
*/
|
|
215
252
|
export type InfoPanelData = {
|
|
216
253
|
type: InfoPanelTypeEnum
|
|
254
|
+
style?: InfoPanelStyleEnum
|
|
217
255
|
url: string
|
|
256
|
+
// 标题
|
|
257
|
+
title?: string
|
|
258
|
+
// 副标题
|
|
259
|
+
subTitle?: string
|
|
218
260
|
}
|
|
219
261
|
|
|
220
262
|
/**
|
|
@@ -228,5 +270,12 @@ export type VideoEffectData = {
|
|
|
228
270
|
vector?: Pick<Pose, 'longitude' | 'latitude'>
|
|
229
271
|
}
|
|
230
272
|
|
|
273
|
+
/**
|
|
274
|
+
* 背景音乐
|
|
275
|
+
*/
|
|
276
|
+
export type BgMusicData = {
|
|
277
|
+
url: string
|
|
278
|
+
}
|
|
279
|
+
|
|
231
280
|
/** 自定义序列帧 */
|
|
232
281
|
export type CustomData = Record<string, any>
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
@keyframes SpatialScenePanel-panel-sprites-animation {
|
|
2
|
+
0% {
|
|
3
|
+
background-position: 0 0
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
100% {
|
|
7
|
+
background-position: -330rem 0
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@keyframes SpatialScenePanel-opacity-animation {
|
|
13
|
+
0% {
|
|
14
|
+
opacity: .3
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
100% {
|
|
18
|
+
opacity: 1
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@keyframes SpatialScenePanel-dot-sprites-animation {
|
|
23
|
+
0% {
|
|
24
|
+
background-position: 0 0
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
100% {
|
|
28
|
+
background-position: -31.25rem 0
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@keyframes SpatialScenePanel-line-sprites-animation {
|
|
33
|
+
0% {
|
|
34
|
+
background-position: 0 0
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
100% {
|
|
38
|
+
background-position: -9.583333333333334rem 0
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.vreo-SpatialScenePanel {
|
|
43
|
+
width: 10rem;
|
|
44
|
+
height: 13.4375rem;
|
|
45
|
+
position: fixed;
|
|
46
|
+
top: 0;
|
|
47
|
+
left: 0;
|
|
48
|
+
pointer-events: none;
|
|
49
|
+
user-select: none
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.SpatialScenePanel {
|
|
53
|
+
width: 10rem;
|
|
54
|
+
height: 13.4375rem;
|
|
55
|
+
transform: scale3d(1,1,1);
|
|
56
|
+
transform-origin: center;
|
|
57
|
+
position: fixed;
|
|
58
|
+
left: 3rem;
|
|
59
|
+
top: 3rem;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.SpatialScenePanel-show-area {
|
|
63
|
+
width: 100%;
|
|
64
|
+
height: 100%;
|
|
65
|
+
transform: scale3d(1,1,1);
|
|
66
|
+
transform-origin: center;
|
|
67
|
+
position: absolute
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-bg {
|
|
71
|
+
width: 10rem;
|
|
72
|
+
height: 13.4375rem;
|
|
73
|
+
position: absolute;
|
|
74
|
+
top: 50%;
|
|
75
|
+
left: 50%;
|
|
76
|
+
transform: translate3d(-50%,-50%,0);
|
|
77
|
+
background-image: url("//vrlab-static.ljcdn.com/release/web/VoiceAssistant/images/panel-min.7d9ba2b7.png");
|
|
78
|
+
background-size: 340rem 13.4375rem;
|
|
79
|
+
background-repeat: no-repeat;
|
|
80
|
+
z-index: -1;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.SpatialScenePanel-bg--animation {
|
|
84
|
+
/* animation: SpatialScenePanel-panel-sprites-animation 1.375s 0s steps(33) infinite normal; */
|
|
85
|
+
animation: SpatialScenePanel-panel-sprites-animation 1.375s 0.5s steps(33) normal;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-header {
|
|
90
|
+
width: 7.5rem;
|
|
91
|
+
height: 1.375rem;
|
|
92
|
+
display: -ms-flexbox;
|
|
93
|
+
display: flex;
|
|
94
|
+
justify-content: space-between;
|
|
95
|
+
background-image: url("//vrlab-static.ljcdn.com/release/web/VoiceAssistant/images/title-bg.377af865.png");
|
|
96
|
+
background-size: 100%;
|
|
97
|
+
margin: 1.875rem auto 1.25rem auto;
|
|
98
|
+
background-image: linear-gradient(to left, rgba(234, 208, 154, 0), rgb(255 229 176 / 21%) 47%, rgba(234, 208, 154, 0));
|
|
99
|
+
border-bottom: 1px solid rgb(255 255 255 / 10%);
|
|
100
|
+
border-radius: 2px;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-header .SpatialScenePanel-title {
|
|
104
|
+
font-family: PingFangSC-Medium;
|
|
105
|
+
font-size: 1.0625rem;
|
|
106
|
+
color: #ffe5b0;
|
|
107
|
+
letter-spacing: 0;
|
|
108
|
+
line-height: 1.125;
|
|
109
|
+
text-shadow: 0 0 1.25rem rgba(0,0,0,0.15)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-header .SpatialScenePanel-temperature {
|
|
113
|
+
font-family: PingFangSC-Semibold;
|
|
114
|
+
font-size: .625rem;
|
|
115
|
+
color: rgba(255,229,176,0.6);
|
|
116
|
+
letter-spacing: 0;
|
|
117
|
+
line-height: 1.25rem;
|
|
118
|
+
text-shadow: 0 0 .625rem rgba(255,255,255,0.03);
|
|
119
|
+
align-self: flex-end
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-body {
|
|
123
|
+
position: relative;
|
|
124
|
+
padding: 0 1.25rem
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-item {
|
|
128
|
+
position: relative;
|
|
129
|
+
display: -ms-flexbox;
|
|
130
|
+
display: flex;
|
|
131
|
+
align-items: center;
|
|
132
|
+
margin-bottom: 1rem;
|
|
133
|
+
width: 100%
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-text {
|
|
137
|
+
opacity: .3;
|
|
138
|
+
font-family: PingFangSC-Regular;
|
|
139
|
+
font-size: .75rem;
|
|
140
|
+
color: #fff;
|
|
141
|
+
letter-spacing: 0;
|
|
142
|
+
line-height: .75rem
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-icon {
|
|
146
|
+
opacity: .3;
|
|
147
|
+
width: 1rem;
|
|
148
|
+
height: 1rem;
|
|
149
|
+
margin-right: .375rem;
|
|
150
|
+
flex-shrink: 0
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-dot {
|
|
154
|
+
position: absolute;
|
|
155
|
+
width: 1.25rem;
|
|
156
|
+
height: 1.25rem;
|
|
157
|
+
flex-shrink: 0;
|
|
158
|
+
display: -ms-flexbox;
|
|
159
|
+
display: flex;
|
|
160
|
+
justify-content: center;
|
|
161
|
+
align-items: center;
|
|
162
|
+
right: -.625rem
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-dot::before {
|
|
166
|
+
display: block;
|
|
167
|
+
position: absolute;
|
|
168
|
+
width: .25rem;
|
|
169
|
+
height: .25rem;
|
|
170
|
+
background: #c3d5ff;
|
|
171
|
+
opacity: .3;
|
|
172
|
+
content: '';
|
|
173
|
+
z-index: 1;
|
|
174
|
+
border-radius: 100%
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-dot::after {
|
|
178
|
+
display: block;
|
|
179
|
+
position: absolute;
|
|
180
|
+
content: '';
|
|
181
|
+
z-index: 2
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.SpatialScenePanel.show .SpatialScenePanel-disappear-area {
|
|
185
|
+
display: none
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.SpatialScenePanel.show .SpatialScenePanel-show-area {
|
|
189
|
+
transform: scale3d(1,1,1);
|
|
190
|
+
transition: -webkit-transform 1s linear;
|
|
191
|
+
transition: transform 1s linear;
|
|
192
|
+
transition: transform 1s linear, -webkit-transform 1s linear
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_0 .SpatialScenePanel-text,.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_0 .SpatialScenePanel-icon {
|
|
196
|
+
animation: SpatialScenePanel-opacity-animation 1s 1s 1 normal forwards
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_0 .SpatialScenePanel-dot::before {
|
|
200
|
+
animation: SpatialScenePanel-opacity-animation 1s 1s 1 normal forwards
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_0 .SpatialScenePanel-dot::after {
|
|
204
|
+
width: 2.083333333333333rem;
|
|
205
|
+
height: 2.083333333333333rem;
|
|
206
|
+
position: absolute;
|
|
207
|
+
top: 50%;
|
|
208
|
+
left: 50%;
|
|
209
|
+
transform: translate3d(-50%,-50%,0);
|
|
210
|
+
background-image: url("//vrlab-static.ljcdn.com/release/web/VoiceAssistant/images/dot.54b5e078.png");
|
|
211
|
+
background-size: 33.333333333333336rem 2.083333333333333rem;
|
|
212
|
+
background-repeat: no-repeat;
|
|
213
|
+
animation: SpatialScenePanel-dot-sprites-animation 1s 1s steps(15) 1 normal
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_1 .SpatialScenePanel-text,.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_1 .SpatialScenePanel-icon {
|
|
217
|
+
animation: SpatialScenePanel-opacity-animation 1s 2s 1 normal forwards
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_1 .SpatialScenePanel-dot::before {
|
|
221
|
+
animation: SpatialScenePanel-opacity-animation 1s 2s 1 normal forwards
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_1 .SpatialScenePanel-dot::after {
|
|
225
|
+
width: 2.083333333333333rem;
|
|
226
|
+
height: 2.083333333333333rem;
|
|
227
|
+
position: absolute;
|
|
228
|
+
top: 50%;
|
|
229
|
+
left: 50%;
|
|
230
|
+
transform: translate3d(-50%,-50%,0);
|
|
231
|
+
background-image: url("//vrlab-static.ljcdn.com/release/web/VoiceAssistant/images/dot.54b5e078.png");
|
|
232
|
+
background-size: 33.333333333333336rem 2.083333333333333rem;
|
|
233
|
+
background-repeat: no-repeat;
|
|
234
|
+
animation: SpatialScenePanel-dot-sprites-animation 1s 2s steps(15) 1 normal
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_2 .SpatialScenePanel-text,.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_2 .SpatialScenePanel-icon {
|
|
238
|
+
animation: SpatialScenePanel-opacity-animation 1s 3s 1 normal forwards
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_2 .SpatialScenePanel-dot::before {
|
|
242
|
+
animation: SpatialScenePanel-opacity-animation 1s 3s 1 normal forwards
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_2 .SpatialScenePanel-dot::after {
|
|
246
|
+
width: 2.083333333333333rem;
|
|
247
|
+
height: 2.083333333333333rem;
|
|
248
|
+
position: absolute;
|
|
249
|
+
top: 50%;
|
|
250
|
+
left: 50%;
|
|
251
|
+
transform: translate3d(-50%,-50%,0);
|
|
252
|
+
background-image: url("//vrlab-static.ljcdn.com/release/web/VoiceAssistant/images/dot.54b5e078.png");
|
|
253
|
+
background-size: 33.333333333333336rem 2.083333333333333rem;
|
|
254
|
+
background-repeat: no-repeat;
|
|
255
|
+
animation: SpatialScenePanel-dot-sprites-animation 1s 3s steps(15) 1 normal
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_3 .SpatialScenePanel-text,.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_3 .SpatialScenePanel-icon {
|
|
259
|
+
animation: SpatialScenePanel-opacity-animation 1s 4s 1 normal forwards
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_3 .SpatialScenePanel-dot::before {
|
|
263
|
+
animation: SpatialScenePanel-opacity-animation 1s 4s 1 normal forwards
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_3 .SpatialScenePanel-dot::after {
|
|
267
|
+
width: 2.083333333333333rem;
|
|
268
|
+
height: 2.083333333333333rem;
|
|
269
|
+
position: absolute;
|
|
270
|
+
top: 50%;
|
|
271
|
+
left: 50%;
|
|
272
|
+
transform: translate3d(-50%,-50%,0);
|
|
273
|
+
background-image: url("//vrlab-static.ljcdn.com/release/web/VoiceAssistant/images/dot.54b5e078.png");
|
|
274
|
+
background-size: 33.333333333333336rem 2.083333333333333rem;
|
|
275
|
+
background-repeat: no-repeat;
|
|
276
|
+
animation: SpatialScenePanel-dot-sprites-animation 1s 4s steps(15) 1 normal
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.SpatialScenePanel.hide .SpatialScenePanel-show-area {
|
|
280
|
+
transform: scale3d(0,1,1);
|
|
281
|
+
transition: transform 150ms linear;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.SpatialScenePanel.hide .SpatialScenePanel-disappear-area {
|
|
285
|
+
display: -ms-flexbox;
|
|
286
|
+
display: flex;
|
|
287
|
+
width: 1.25rem;
|
|
288
|
+
height: 13.4375rem;
|
|
289
|
+
justify-content: center;
|
|
290
|
+
align-items: center
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.SpatialScenePanel.hide .SpatialScenePanel-disappear-area::after {
|
|
294
|
+
content: '';
|
|
295
|
+
width: 100%;
|
|
296
|
+
height: 100%;
|
|
297
|
+
position: absolute;
|
|
298
|
+
width: .4166666666666667rem;
|
|
299
|
+
height: 11.666666666666666rem;
|
|
300
|
+
position: absolute;
|
|
301
|
+
top: 50%;
|
|
302
|
+
left: 50%;
|
|
303
|
+
transform: translate3d(-50%,-50%,0);
|
|
304
|
+
background-image: url("//vrlab-static.ljcdn.com/release/web/VoiceAssistant/images/line.4ac1c0bb.png");
|
|
305
|
+
background-size: 10rem 11.666666666666666rem;
|
|
306
|
+
background-repeat: no-repeat;
|
|
307
|
+
animation: SpatialScenePanel-line-sprites-animation 500ms 100ms steps(23) 1 normal
|
|
308
|
+
}
|
|
309
|
+
|