@realsee/five 5.0.0-alpha.100
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 +362 -0
- package/TERMS.txt +56 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +134 -0
- package/docs/assets/icons.css +1043 -0
- package/docs/assets/icons.png +0 -0
- package/docs/assets/icons@2x.png +0 -0
- package/docs/assets/main.js +52 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1388 -0
- package/docs/assets/widgets.png +0 -0
- package/docs/assets/widgets@2x.png +0 -0
- package/docs/classes/five.AnimationFrameLoop.html +15 -0
- package/docs/classes/five.BVH.html +10 -0
- package/docs/classes/five.BVHIntersect.html +1 -0
- package/docs/classes/five.BVHNode.html +7 -0
- package/docs/classes/five.BVHVector3.html +1 -0
- package/docs/classes/five.Camera.html +11 -0
- package/docs/classes/five.Five.html +303 -0
- package/docs/classes/five.InternalWebGLRenderer.html +1 -0
- package/docs/classes/five.IntersectMesh.html +1 -0
- package/docs/classes/five.LegacyPanoCircleMesh.html +5 -0
- package/docs/classes/five.Model.html +77 -0
- package/docs/classes/five.NetworkSubscribe.html +50 -0
- package/docs/classes/five.PBMContainer.html +17 -0
- package/docs/classes/five.PBMGroup.html +19 -0
- package/docs/classes/five.PBMMaterial.html +15 -0
- package/docs/classes/five.PBMMesh.html +7 -0
- package/docs/classes/five.PanoCircleMesh.html +7 -0
- package/docs/classes/five.Scene.html +3 -0
- package/docs/classes/five.Subscribe.html +56 -0
- package/docs/classes/five.Work.html +30 -0
- package/docs/classes/gltf_loader.GLTFLoader.html +17 -0
- package/docs/classes/gltf_loader.GLTFObject.html +7 -0
- package/docs/classes/line.Line.html +1 -0
- package/docs/classes/line.LineGeometry.html +1 -0
- package/docs/classes/line.LineMaterial.html +1 -0
- package/docs/classes/line.LineSegmentsGeometry.html +1 -0
- package/docs/classes/line.THREE_Line2.html +1 -0
- package/docs/classes/line.THREE_LineSegments2.html +1 -0
- package/docs/classes/react.Store.html +29 -0
- package/docs/classes/server.BVH.html +10 -0
- package/docs/classes/server.BVHIntersect.html +1 -0
- package/docs/classes/server.BVHNode.html +7 -0
- package/docs/classes/server.BVHVector3.html +1 -0
- package/docs/classes/server.Model.html +63 -0
- package/docs/classes/server.PBMGroup.html +9 -0
- package/docs/classes/server.PBMMesh.html +7 -0
- package/docs/classes/sticker.Sticker.html +32 -0
- package/docs/index.html +182 -0
- package/docs/interfaces/five.AddableObject.html +1 -0
- package/docs/interfaces/five.AnimationFrame.html +1 -0
- package/docs/interfaces/five.CameraPose.html +1 -0
- package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +28 -0
- package/docs/interfaces/five.EventCallback.html +391 -0
- package/docs/interfaces/five.FiveInitArgs.html +96 -0
- package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +15 -0
- package/docs/interfaces/five.ImageOptions.html +16 -0
- package/docs/interfaces/five.ImageURLOptions.html +1 -0
- package/docs/interfaces/five.IntersectMeshInterface.html +3 -0
- package/docs/interfaces/five.Intersection.html +7 -0
- package/docs/interfaces/five.ModelControllerCustomInitArgs.html +20 -0
- package/docs/interfaces/five.ModelEventCallback.html +22 -0
- package/docs/interfaces/five.MovePanoOptions.html +39 -0
- package/docs/interfaces/five.PBMPanoPicture.html +7 -0
- package/docs/interfaces/five.PBMParameters.html +15 -0
- package/docs/interfaces/five.PanoCircleMeshInterface.html +19 -0
- package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +28 -0
- package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +20 -0
- package/docs/interfaces/five.Pose.html +35 -0
- package/docs/interfaces/five.Scissor.html +14 -0
- package/docs/interfaces/five.State.html +19 -0
- package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -0
- package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -0
- package/docs/interfaces/five.SubscribeMixinType.off.html +1 -0
- package/docs/interfaces/five.SubscribeMixinType.on.html +1 -0
- package/docs/interfaces/five.SubscribeMixinType.once.html +1 -0
- package/docs/interfaces/five.TextureOptions.html +18 -0
- package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +7 -0
- package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +24 -0
- package/docs/interfaces/five.WorkCubeImage.html +13 -0
- package/docs/interfaces/five.WorkImage.html +21 -0
- package/docs/interfaces/five.WorkInitial.html +13 -0
- package/docs/interfaces/five.WorkModel.html +11 -0
- package/docs/interfaces/five.WorkObserver.html +25 -0
- package/docs/interfaces/five.WorkTile.html +1 -0
- package/docs/interfaces/five.WorkVideo.html +9 -0
- package/docs/interfaces/gltf_loader.GLTF.html +7 -0
- package/docs/interfaces/react.FiveActionReactCallbacks.html +62 -0
- package/docs/interfaces/react.FiveInjectionTypes.html +191 -0
- package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -0
- package/docs/interfaces/server.Intersection.html +7 -0
- package/docs/interfaces/server.ModelEventCallback.html +18 -0
- package/docs/interfaces/sticker.IntersectionLike.html +8 -0
- package/docs/media/coordinate.jpg +0 -0
- package/docs/media/topview.jpg +0 -0
- package/docs/media/typescript.jpg +0 -0
- package/docs/modules/five.SubscribeMixinType.html +1 -0
- package/docs/modules/five.html +481 -0
- package/docs/modules/gltf_loader.html +1 -0
- package/docs/modules/line.html +1 -0
- package/docs/modules/react.html +130 -0
- package/docs/modules/server.html +18 -0
- package/docs/modules/sticker.html +1 -0
- package/docs/modules.html +1 -0
- package/exporters/staticify.js +203 -0
- package/five/index.d.ts +2061 -0
- package/five/index.js +372 -0
- package/gltf-loader/index.d.ts +75 -0
- package/gltf-loader/index.js +260 -0
- package/line/index.d.ts +68 -0
- package/line/index.js +260 -0
- package/package.json +36 -0
- package/react/index.d.ts +812 -0
- package/react/index.js +260 -0
- package/resource/basis/basis_transcoder.js +22 -0
- package/resource/basis/basis_transcoder.wasm +0 -0
- package/resource/gltf/draco_decoder.js +31 -0
- package/resource/gltf/draco_decoder.wasm +0 -0
- package/resource/gltf/draco_wasm_wrapper.js +119 -0
- package/scripts/five-plugin-init.js +83 -0
- package/scripts/five-quick-start-init.js +80 -0
- package/scripts/five-react-component-init.js +83 -0
- package/scripts/five-staticify.js +21 -0
- package/server/index.d.ts +568 -0
- package/server/index.js +367 -0
- package/sticker/index.d.ts +70 -0
- package/sticker/index.js +260 -0
- package/templates/plugin/README.md +38 -0
- package/templates/plugin/devtools/external-five.js +5 -0
- package/templates/plugin/devtools/external-three.js +5 -0
- package/templates/plugin/devtools/tsconfig.build.json +18 -0
- package/templates/plugin/devtools/webpack.bundle.js +44 -0
- package/templates/plugin/devtools/webpack.example.js +39 -0
- package/templates/plugin/docs/.gitkeep +0 -0
- package/templates/plugin/examples/data.json +507 -0
- package/templates/plugin/examples/index.html +28 -0
- package/templates/plugin/examples/index.ts +12 -0
- package/templates/plugin/lib/index.ts +30 -0
- package/templates/plugin/package.json +32 -0
- package/templates/plugin/tsconfig.json +26 -0
- package/templates/quick-start/README.md +47 -0
- package/templates/quick-start/assets/work.json +507 -0
- package/templates/quick-start/index.html +54 -0
- package/templates/quick-start/index.tsx +123 -0
- package/templates/quick-start/package.json +25 -0
- package/templates/quick-start/tsconfig.json +27 -0
- package/templates/quick-start/webpack.config.js +45 -0
- package/templates/quick-start/webpack.production.js +42 -0
- package/templates/react-component/README.md +32 -0
- package/templates/react-component/devtools/external-five.js +5 -0
- package/templates/react-component/devtools/external-react.js +5 -0
- package/templates/react-component/devtools/external-three.js +5 -0
- package/templates/react-component/devtools/tsconfig.build.json +19 -0
- package/templates/react-component/devtools/webpack.bundle.js +44 -0
- package/templates/react-component/devtools/webpack.example.js +39 -0
- package/templates/react-component/docs/.gitkeep +0 -0
- package/templates/react-component/examples/data.json +507 -0
- package/templates/react-component/examples/index.html +17 -0
- package/templates/react-component/examples/index.tsx +62 -0
- package/templates/react-component/lib/index.tsx +157 -0
- package/templates/react-component/package.json +38 -0
- package/templates/react-component/tsconfig.json +27 -0
- package/umd/five-gltf-loader.js +2 -0
- package/umd/five-gltf-loader.js.LICENSE.txt +14 -0
- package/umd/five-line.js +2 -0
- package/umd/five-line.js.LICENSE.txt +14 -0
- package/umd/five-react.js +2 -0
- package/umd/five-react.js.LICENSE.txt +14 -0
- package/umd/five-sticker.js +2 -0
- package/umd/five-sticker.js.LICENSE.txt +14 -0
- package/umd/five.js +2 -0
- package/umd/five.js.LICENSE.txt +116 -0
package/five/index.d.ts
ADDED
|
@@ -0,0 +1,2061 @@
|
|
|
1
|
+
import * as THREE_2 from 'three';
|
|
2
|
+
|
|
3
|
+
export declare interface AddableObject extends THREE_2.Object3D {
|
|
4
|
+
needsRender?: boolean;
|
|
5
|
+
mixer?: THREE_2.AnimationMixer;
|
|
6
|
+
setResolution?(width: number, height: number): void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export declare interface AnimationFrame {
|
|
10
|
+
callback: (time: number, deltaTime: number) => void;
|
|
11
|
+
once: boolean;
|
|
12
|
+
delay: number;
|
|
13
|
+
order: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export declare class AnimationFrameLoop {
|
|
17
|
+
private frames;
|
|
18
|
+
private time;
|
|
19
|
+
private stoped;
|
|
20
|
+
private static sharedInstance?;
|
|
21
|
+
static get shared(): AnimationFrameLoop;
|
|
22
|
+
static getFrameTime(): number;
|
|
23
|
+
constructor();
|
|
24
|
+
private loop;
|
|
25
|
+
private remove;
|
|
26
|
+
/**
|
|
27
|
+
* 添加到动画循环
|
|
28
|
+
* @param callback - 动画循环回调
|
|
29
|
+
* @param once - 是否只回调一次
|
|
30
|
+
* @param delay - 延迟多少个动画循环回调
|
|
31
|
+
* @param order - 优先级,数字越小越早被调用
|
|
32
|
+
* @returns 移除动画循环函数
|
|
33
|
+
*/
|
|
34
|
+
add(callback: AnimationFrame["callback"], once?: boolean, delay?: number, order?: number): () => void;
|
|
35
|
+
disponse(): void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export declare class BVH {
|
|
39
|
+
trianglesArray?: Float32Array;
|
|
40
|
+
offsetArray?: Uint32Array;
|
|
41
|
+
rootNode?: BVHNode;
|
|
42
|
+
create(trianglesArray: Float32Array): this;
|
|
43
|
+
splitNode(maxTrianglesPerNode: number): this;
|
|
44
|
+
/**
|
|
45
|
+
* 计算射线与三角形的碰撞
|
|
46
|
+
* @param rayOrigin - 射线的原点坐标
|
|
47
|
+
* @param rayDirection - 设想的方向向量
|
|
48
|
+
* @param backfaceCulling - 是否背面剔除
|
|
49
|
+
* @return 碰撞焦点数组
|
|
50
|
+
*/
|
|
51
|
+
intersectRay(rayOrigin: BVHVector3, rayDirection: BVHVector3, backfaceCulling: boolean): BVHIntersect[];
|
|
52
|
+
dispose(): void;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export declare class BVHIntersect {
|
|
56
|
+
triangle: [BVHVector3, BVHVector3, BVHVector3];
|
|
57
|
+
intersectionPoint: BVHVector3;
|
|
58
|
+
constructor(triangle: [BVHVector3, BVHVector3, BVHVector3], intersectionPoint: BVHVector3);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* A node in the BVH structure
|
|
63
|
+
* @param extents - the min coords of this node's bounding box
|
|
64
|
+
* @param startIndex - an index in the bbox array, where the first element of this node is located
|
|
65
|
+
* @param endIndex - an index in the bbox array, where the last of this node is located, plus 1 (meaning that its non-inclusive).
|
|
66
|
+
* @param level - distance of this node from the root for the bvh tree. root node has level=0, its children have level=1 etc.
|
|
67
|
+
*/
|
|
68
|
+
export declare class BVHNode {
|
|
69
|
+
extents: ArrayLike<number>;
|
|
70
|
+
startIndex: number;
|
|
71
|
+
endIndex: number;
|
|
72
|
+
node0?: BVHNode;
|
|
73
|
+
node1?: BVHNode;
|
|
74
|
+
constructor(extents: ArrayLike<number>, startIndex: number, endIndex: number);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export declare class BVHVector3 {
|
|
78
|
+
x: number;
|
|
79
|
+
y: number;
|
|
80
|
+
z: number;
|
|
81
|
+
constructor(x: number, y: number, z: number);
|
|
82
|
+
copy(v: BVHVector3): this;
|
|
83
|
+
set(x: number, y: number, z: number): this;
|
|
84
|
+
fromArray(array: number[], firstElementPos?: number): this;
|
|
85
|
+
add(v: BVHVector3): this;
|
|
86
|
+
multiplyScalar(scalar: number): this;
|
|
87
|
+
subVectors(a: BVHVector3, b: BVHVector3): this;
|
|
88
|
+
dot(v: BVHVector3): number;
|
|
89
|
+
cross(v: BVHVector3): this;
|
|
90
|
+
crossVectors(a: BVHVector3, b: BVHVector3): this;
|
|
91
|
+
clone(): BVHVector3;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Five 相机 */
|
|
95
|
+
export declare class Camera extends THREE_2.PerspectiveCamera {
|
|
96
|
+
/** 相机姿态 */
|
|
97
|
+
pose: CameraPose;
|
|
98
|
+
constructor(fov: number);
|
|
99
|
+
/** 通过相机参数反算姿态 */
|
|
100
|
+
computePose(): this;
|
|
101
|
+
/** 设置相机姿态 */
|
|
102
|
+
setFromPose(pose: Partial<CameraPose>): this;
|
|
103
|
+
/** 拷贝相机姿态 */
|
|
104
|
+
copyPose(): CameraPose;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export declare interface CameraPose {
|
|
108
|
+
longitude: number;
|
|
109
|
+
latitude: number;
|
|
110
|
+
fov: number;
|
|
111
|
+
distance: number;
|
|
112
|
+
offset: THREE_2.Vector3;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export declare type ControllerCustomInitTypes = {
|
|
116
|
+
Floorplan: FloorplanControllerCustomInitArgs;
|
|
117
|
+
Topview: TopviewControllerCustomInitArgs;
|
|
118
|
+
Panorama: PanoramaControllerCustomInitArgs;
|
|
119
|
+
VRPanorama: VRPanoramaControllerCustomInitArgs;
|
|
120
|
+
Model: ModelControllerCustomInitArgs;
|
|
121
|
+
DepthPanorama: DepthPanoramaControllerCustomInitArgs;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
export declare type ControllerEventTypes = {
|
|
125
|
+
/**
|
|
126
|
+
* 模态间切换动画开始
|
|
127
|
+
* @param panoIndex - 当前点位
|
|
128
|
+
* @param pose - 相机姿态
|
|
129
|
+
* @param userAction - 是否用户触发
|
|
130
|
+
*/
|
|
131
|
+
initAnimationWillStart(panoIndex: number, pose: Pose, userAction: boolean): void;
|
|
132
|
+
/**
|
|
133
|
+
* 模态间切换动画结束
|
|
134
|
+
* @param panoIndex - 当前点位
|
|
135
|
+
* @param pose - 相机姿态
|
|
136
|
+
* @param userAction - 是否用户触发
|
|
137
|
+
*/
|
|
138
|
+
initAnimationEnded(panoIndex: number, pose: Pose, userAction: boolean): void;
|
|
139
|
+
/**
|
|
140
|
+
* 意图要变化相机的可视角度 可以通过 `return false` 阻止
|
|
141
|
+
* @deprecated
|
|
142
|
+
* 建议通过 初始化设置的 `defaultFov`, `maxFov`, `minFov` 来限制
|
|
143
|
+
* @param fov - 意图要变化相机的可视角度
|
|
144
|
+
* @returns 可以通过 `return false` 阻止
|
|
145
|
+
*/
|
|
146
|
+
wantsChangeCameraFov(fov: number): void | false;
|
|
147
|
+
/**
|
|
148
|
+
* 相机姿态变化
|
|
149
|
+
* @param pose - 相机姿态
|
|
150
|
+
* @param userAction - 是否用户触发
|
|
151
|
+
*/
|
|
152
|
+
cameraUpdate(pose: Pose, userAction: boolean): void;
|
|
153
|
+
/**
|
|
154
|
+
* 相机姿态中可视角度变化
|
|
155
|
+
* @param fov - 相机的可视角度
|
|
156
|
+
* @param userAction - 是否用户触发
|
|
157
|
+
*/
|
|
158
|
+
cameraFovUpdate(fov: Pose["fov"], userAction: boolean): void;
|
|
159
|
+
/**
|
|
160
|
+
* 相机姿态中相机位置变化
|
|
161
|
+
* @param offset - 相机位置
|
|
162
|
+
* @param userAction - 是否用户触发
|
|
163
|
+
*/
|
|
164
|
+
cameraPositionUpdate(offset: Pose["offset"], userAction: boolean): void;
|
|
165
|
+
/**
|
|
166
|
+
* 相机姿态中相机方向变化
|
|
167
|
+
* @param coordinates - 相机姿态的俯仰角和偏航角
|
|
168
|
+
* @param userAction - 是否用户触发
|
|
169
|
+
*/
|
|
170
|
+
cameraDirectionUpdate(coordinates: Pick<Pose, "longitude" | "latitude">, userAction: boolean): void;
|
|
171
|
+
/**
|
|
172
|
+
* 观察点位被选择
|
|
173
|
+
* @param panoIndex - 选择的点位
|
|
174
|
+
*/
|
|
175
|
+
panoSelected(panoIndex: number | null): void;
|
|
176
|
+
/**
|
|
177
|
+
* 意图要移动到某个点位 可以通过 `return false` 阻止
|
|
178
|
+
* @param panoIndex - 图要移动到的点位下标
|
|
179
|
+
* @param options - 移动参数
|
|
180
|
+
* @param userAction - 是否用户触发
|
|
181
|
+
* @returns 可以通过 `return false` 阻止
|
|
182
|
+
*/
|
|
183
|
+
wantsMoveToPano(panoIndex: number, options: MovePanoOptions, userAction: boolean): void | false;
|
|
184
|
+
/**
|
|
185
|
+
* 开始加载并移动到某个观察点位
|
|
186
|
+
* @description
|
|
187
|
+
* 可 panoWillArrive 相比
|
|
188
|
+
* - moveToPano 在加载全景图资源前触发
|
|
189
|
+
* - panoWillArrive 在加载全景图资源后触发
|
|
190
|
+
* @param panoIndex - 移动到的点位下标
|
|
191
|
+
* @param userAction - 是否用户触发
|
|
192
|
+
*/
|
|
193
|
+
moveToPano(panoIndex: number, userAction: boolean): void;
|
|
194
|
+
/**
|
|
195
|
+
* 开始加载某个观察点的全景资源
|
|
196
|
+
* @param panoIndex - 移动到的点位下标
|
|
197
|
+
*/
|
|
198
|
+
panoWillLoad(panoIndex: number): void;
|
|
199
|
+
/**
|
|
200
|
+
* 某个观察点的全景资源加载完成
|
|
201
|
+
* @param panoIndex - 对应的点位下标
|
|
202
|
+
*/
|
|
203
|
+
panoLoaded(panoIndex: number): void;
|
|
204
|
+
/**
|
|
205
|
+
* 某个观察点的全景资源加载失败
|
|
206
|
+
* @param error - 错误对象
|
|
207
|
+
* @param panoIndex - 对应的点位下标
|
|
208
|
+
*/
|
|
209
|
+
panoLoadError(error: Error, panoIndex: number): void;
|
|
210
|
+
/**
|
|
211
|
+
* 移动到某个观察点位被取消
|
|
212
|
+
* @description
|
|
213
|
+
* 这个有一些情况会导致
|
|
214
|
+
* - 移动过程中切换模态
|
|
215
|
+
* - 移动过程中 five 被析构
|
|
216
|
+
* - 移动过程点击切换到另一个点位
|
|
217
|
+
* @param panoIndex - 对应的点位下标
|
|
218
|
+
*/
|
|
219
|
+
moveToPanoCanceled(panoIndex: number): void;
|
|
220
|
+
/**
|
|
221
|
+
* 开始移动到某个观察点位
|
|
222
|
+
* @description
|
|
223
|
+
* 和 moveToPano 相比
|
|
224
|
+
* - moveToPano 在加载全景图资源前触发
|
|
225
|
+
* - panoWillArrive 在加载全景图资源后触发
|
|
226
|
+
* @param panoIndex - 移动到点位下标
|
|
227
|
+
* @param pose - 相机姿态
|
|
228
|
+
* @param userAction - 是否用户触发
|
|
229
|
+
*/
|
|
230
|
+
panoWillArrive(panoIndex: number, pose: Pose, userAction: boolean): void;
|
|
231
|
+
/**
|
|
232
|
+
* 移动到某个观察点位
|
|
233
|
+
* @param panoIndex - 移动到点位下标
|
|
234
|
+
* @param pose - 相机姿态
|
|
235
|
+
* @param userAction - 是否用户触发
|
|
236
|
+
*/
|
|
237
|
+
panoArrived(panoIndex: number, pose: Pose, userAction: boolean): void;
|
|
238
|
+
/**
|
|
239
|
+
* 移动中, 会告知移动状态(耗时百分比)
|
|
240
|
+
* @param panoIndex - 将要移动到的点位下标
|
|
241
|
+
* @param prevPanoIndex - 上一个点位下标
|
|
242
|
+
* @param progress - 整个过程经度 [0-1]
|
|
243
|
+
*/
|
|
244
|
+
movingToPano(panoIndex: number, prevPanoIndex: number, progress: number): void;
|
|
245
|
+
/**
|
|
246
|
+
* 意图要触发手势, 可以通过 `return false` 阻止
|
|
247
|
+
* @param type - 手势类型
|
|
248
|
+
* @param pointers - 手指位置
|
|
249
|
+
* @param final - 是否手势结束
|
|
250
|
+
* @returns 可以通过 `return false` 阻止
|
|
251
|
+
*/
|
|
252
|
+
wantsGesture(type: GestureTypes, pointers: {
|
|
253
|
+
x: number;
|
|
254
|
+
y: number;
|
|
255
|
+
delta?: number;
|
|
256
|
+
}[], final: boolean): void | false;
|
|
257
|
+
/**
|
|
258
|
+
* 手势 触发
|
|
259
|
+
* @param type - 手势类型
|
|
260
|
+
* @param pointers - 手指位置
|
|
261
|
+
* @param final - 是否手势结束
|
|
262
|
+
*/
|
|
263
|
+
gesture(type: GestureTypes, pointers: {
|
|
264
|
+
x: number;
|
|
265
|
+
y: number;
|
|
266
|
+
delta?: number;
|
|
267
|
+
}[], final: boolean): void;
|
|
268
|
+
/**
|
|
269
|
+
* 意图要触发 pan 手势(滑动屏幕), 可以通过 `return false` 阻止
|
|
270
|
+
* @param pose - 意图的相机姿态
|
|
271
|
+
* @param final - 是否手势结束
|
|
272
|
+
* @returns 可以通过 `return false` 阻止
|
|
273
|
+
*/
|
|
274
|
+
wantsPanGesture(pose: Pose, final: boolean): void | false;
|
|
275
|
+
/**
|
|
276
|
+
* pan 手势(滑动屏幕) 被触发
|
|
277
|
+
* @param pose - 相机姿态
|
|
278
|
+
* @param final - 是否手势结束
|
|
279
|
+
*/
|
|
280
|
+
panGesture(pose: Pose, final: boolean): void;
|
|
281
|
+
/**
|
|
282
|
+
* 意图要触发 pan 手势(滑动屏幕) 的惯性运动, 可以通过 `return false` 阻止
|
|
283
|
+
* @param pose - 意图的相机姿态
|
|
284
|
+
* @param final - 是否手势结束
|
|
285
|
+
* @returns 可以通过 `return false` 阻止
|
|
286
|
+
*/
|
|
287
|
+
wantsInteriaPan(pose: Pose): void | false;
|
|
288
|
+
/**
|
|
289
|
+
* pan 手势(滑动屏幕) 的惯性运动
|
|
290
|
+
* @param pose - 意图的相机姿态
|
|
291
|
+
* @param final - 是否手势结束
|
|
292
|
+
*/
|
|
293
|
+
interiaPan(pose: Pose, final: boolean): void;
|
|
294
|
+
/**
|
|
295
|
+
* 意图要触发 tap 手势(点击屏幕), 可以通过 `return false` 阻止
|
|
296
|
+
* @param raycaster - 点击对应的三维射线
|
|
297
|
+
* @param tapPosition - 点击对应的屏幕位置
|
|
298
|
+
* @param final - 是否手势结束
|
|
299
|
+
* @returns 可以通过 `return false` 阻止
|
|
300
|
+
*/
|
|
301
|
+
wantsTapGesture(raycaster: THREE_2.Raycaster, tapPosition: THREE_2.Vector2, final: boolean): void | false;
|
|
302
|
+
/**
|
|
303
|
+
* tap 手势(点击屏幕) 被触发
|
|
304
|
+
* @param raycaster - 点击对应的三维射线
|
|
305
|
+
* @param tapPosition - 点击对应的屏幕位置
|
|
306
|
+
* @param final - 是否手势结束
|
|
307
|
+
*/
|
|
308
|
+
tapGesture(raycaster: THREE_2.Raycaster, tapPosition: THREE_2.Vector2, final: boolean): void;
|
|
309
|
+
/**
|
|
310
|
+
* 意图要触发 pinch 手势(双指缩放),可以通过 `return false` 阻止
|
|
311
|
+
* @param scale - 缩放数值
|
|
312
|
+
* @param nextFov - 意图的fov变更
|
|
313
|
+
* @param final - 是否手势结束
|
|
314
|
+
* @returns 可以通过 `return false` 阻止
|
|
315
|
+
*/
|
|
316
|
+
wantsPinchGesture(scale: number, nextFov: number, final: boolean): void | false;
|
|
317
|
+
/**
|
|
318
|
+
* 意图要触发 press 手势(长按屏幕), 可以通过 `return false` 阻止
|
|
319
|
+
* @param raycaster - 长按对应的三维射线
|
|
320
|
+
* @param tapPosition - 长按对应的屏幕位置
|
|
321
|
+
* @param duration - 长按持续时间
|
|
322
|
+
* @param final - 是否手势结束
|
|
323
|
+
* @returns 可以通过 `return false` 阻止
|
|
324
|
+
*/
|
|
325
|
+
wantsPressGesture(raycaster: THREE_2.Raycaster, tapPosition: THREE_2.Vector2, duration: number, isFinal: boolean): void | false;
|
|
326
|
+
/**
|
|
327
|
+
* tap 手势(点击屏幕) 被触发
|
|
328
|
+
* @param raycaster - 点击对应的三维射线
|
|
329
|
+
* @param tapPosition - 点击对应的屏幕位置
|
|
330
|
+
* @param duration - 长按持续时间
|
|
331
|
+
* @param final - 是否手势结束
|
|
332
|
+
*/
|
|
333
|
+
pressGesture(raycaster: THREE_2.Raycaster, tapPosition: THREE_2.Vector2, duration: number, isFinal: boolean): void;
|
|
334
|
+
/**
|
|
335
|
+
* pinch 手势(双指缩放) 被触发
|
|
336
|
+
* @param scale - 缩放数值
|
|
337
|
+
* @param nextFov - 意图的fov变更
|
|
338
|
+
* @param final - 是否手势结束
|
|
339
|
+
*/
|
|
340
|
+
pinchGesture(scale: number, fov: number, final: boolean): void;
|
|
341
|
+
/**
|
|
342
|
+
* 意图要触发 鼠标滚轮 可以通过 `return false` 阻止
|
|
343
|
+
* @param delta - 滚轮数值
|
|
344
|
+
* @param nextFov - 意图的fov变更
|
|
345
|
+
* @param final - 是否手势结束
|
|
346
|
+
* @returns 可以通过 `return false` 阻止
|
|
347
|
+
*/
|
|
348
|
+
wantsMouseWheel(delta: number, nextFov: number, final: boolean): void | false;
|
|
349
|
+
/**
|
|
350
|
+
* 鼠标滚轮被触发
|
|
351
|
+
* @param delta - 滚轮数值
|
|
352
|
+
* @param nextFov - 意图的fov变更
|
|
353
|
+
* @param final - 是否手势结束
|
|
354
|
+
*/
|
|
355
|
+
mouseWheel(delta: number, fov: number, final: boolean): void;
|
|
356
|
+
/**
|
|
357
|
+
* 鼠标焦点环位置被重新计算
|
|
358
|
+
* @param intersection - 焦点碰撞结果
|
|
359
|
+
* @param mesh - 焦点环 mesh
|
|
360
|
+
*/
|
|
361
|
+
intersectionOnModelUpdate(intersection: Intersection, mesh: IntersectMeshInterface): void;
|
|
362
|
+
/**
|
|
363
|
+
* 意图要展示鼠标焦点环,可以通过 `return false` 阻止
|
|
364
|
+
* @param intersection - 焦点碰撞结果
|
|
365
|
+
* @returns 可以通过 `return false` 阻止
|
|
366
|
+
*/
|
|
367
|
+
wantsShowIntersectionOnModel(raycaster: THREE_2.Raycaster): void | false;
|
|
368
|
+
/** 鼠标焦点环被隐藏 */
|
|
369
|
+
intersectionHidden(): void;
|
|
370
|
+
/** 意图要退出VR眼镜模式 */
|
|
371
|
+
vrWantsToExit(): void;
|
|
372
|
+
/**
|
|
373
|
+
* 观察点的全景资源开始加载
|
|
374
|
+
* @param panoIndex - 加载点位下标
|
|
375
|
+
* @param observer - 对应的 observer 详情
|
|
376
|
+
*/
|
|
377
|
+
textureStartLoad(panoIndex: number, observer: WorkObserver): void;
|
|
378
|
+
/**
|
|
379
|
+
* 观察点的全景资源加载中,可获取到进度
|
|
380
|
+
* @param progress - 加载进度 [0-1]
|
|
381
|
+
* @param panoIndex - 加载点位下标
|
|
382
|
+
* @param observer - 对应的 observer 详情
|
|
383
|
+
*/
|
|
384
|
+
textureLoading(progress: number, panoIndex: number, observer: WorkObserver): void;
|
|
385
|
+
/**
|
|
386
|
+
* 观察点的全景资源加载被中止
|
|
387
|
+
* @param panoIndex - 加载点位下标
|
|
388
|
+
* @param observer - 对应的 observer 详情
|
|
389
|
+
*/
|
|
390
|
+
textureAbort(panoIndex: number, observer: WorkObserver): void;
|
|
391
|
+
/**
|
|
392
|
+
* 观察点的全景资源加载失败
|
|
393
|
+
* @param error - 错误对象
|
|
394
|
+
* @param panoIndex - 加载点位下标
|
|
395
|
+
* @param observer - 对应的 observer 详情
|
|
396
|
+
*/
|
|
397
|
+
textureError(error: Error, panoIndex: number, observer: WorkObserver): void;
|
|
398
|
+
/**
|
|
399
|
+
* 观察点的全景资源加载完成
|
|
400
|
+
* @param panoIndex - 加载点位下标
|
|
401
|
+
* @param observer - 对应的 observer 详情
|
|
402
|
+
*/
|
|
403
|
+
textureLoaded(panoIndex: number, observer: WorkObserver, meta: (NetWorkMeta | null)[]): void;
|
|
404
|
+
/**
|
|
405
|
+
* 抛出错误
|
|
406
|
+
* @param error - 抛出错误
|
|
407
|
+
*/
|
|
408
|
+
error(error: Error): void;
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* URL 地址的转换
|
|
413
|
+
* @param url - url 原地址
|
|
414
|
+
* @param options - url 转换参数
|
|
415
|
+
* @returns url 转换结果
|
|
416
|
+
*/
|
|
417
|
+
export declare function defaultImageURLTransform(url: string, options: ImageURLOptions): string;
|
|
418
|
+
|
|
419
|
+
export declare interface DepthPanoramaControllerCustomInitArgs extends PanoramaLikeControllerCustomInitArgs {
|
|
420
|
+
/** 最远可移动观察点距离 */
|
|
421
|
+
maxAccessibleDistance?: number;
|
|
422
|
+
/**
|
|
423
|
+
* 点击地面观察点标识的判定范围
|
|
424
|
+
* @description
|
|
425
|
+
* 如果在判定范围内则确定去到目标点,
|
|
426
|
+
* 否则寻找点击位置方向最适合的点(可能会走到一个离相机更近的点)。
|
|
427
|
+
*/
|
|
428
|
+
panoTapTriggerRadius?: number;
|
|
429
|
+
/** 地面观察点标识自定义创建器 */
|
|
430
|
+
panoCircleMeshCreator?: () => PanoCircleMeshInterface;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Five 事件列表
|
|
435
|
+
* @description
|
|
436
|
+
* 可以通过 `five.on(METHOD_NAME, METHOD)` 调用
|
|
437
|
+
*/
|
|
438
|
+
export declare interface EventCallback extends EventTypes {
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* Five 事件列表
|
|
443
|
+
* @description
|
|
444
|
+
* 具体事件列表 请查看 {@link EventCallback}
|
|
445
|
+
*/
|
|
446
|
+
export declare type EventTypes = Pick<ControllerEventTypes, typeof PROXY_CONTROLLER_EVENT_NAMES[number]> & {
|
|
447
|
+
/**
|
|
448
|
+
* 内部错误
|
|
449
|
+
* @param error - 错误对象
|
|
450
|
+
*/
|
|
451
|
+
error(error: Error): void;
|
|
452
|
+
/**
|
|
453
|
+
* 准备加载 Work 数据
|
|
454
|
+
* @param input - 输入的 work
|
|
455
|
+
* @param work - 归一化的标准 work
|
|
456
|
+
* @param state - 加载时的姿态
|
|
457
|
+
*/
|
|
458
|
+
willLoad(input: any, work: Work, state: Omit<State, "offset">): void;
|
|
459
|
+
/**
|
|
460
|
+
* 开始加载 Work 数据
|
|
461
|
+
* @param input - 输入的 work
|
|
462
|
+
* @param work - 归一化的标准 work
|
|
463
|
+
* @param state - 加载时的姿态
|
|
464
|
+
*/
|
|
465
|
+
load(input: any, work: Work, state: Omit<State, "offset">): void;
|
|
466
|
+
/**
|
|
467
|
+
* 加载完 Work 数据
|
|
468
|
+
* @param input - 输入的 work
|
|
469
|
+
* @param work - 归一化的标准 work
|
|
470
|
+
*/
|
|
471
|
+
loaded(input: any, work: Work): void;
|
|
472
|
+
/**
|
|
473
|
+
* 模型开始加载
|
|
474
|
+
* @param workModel - 归一化的标准 work 中的 model 值
|
|
475
|
+
*/
|
|
476
|
+
modelWillLoad(workModel: WorkModel): void;
|
|
477
|
+
/**
|
|
478
|
+
* 模型三角面片结构加载完成
|
|
479
|
+
* @param model - 加载完的 model 本质是一个 {@link PBMGroup}
|
|
480
|
+
*/
|
|
481
|
+
modelGeometryLoaded(model: Model): void;
|
|
482
|
+
/**
|
|
483
|
+
* 模型材质结构加载完成
|
|
484
|
+
* @param model - 加载完的 model 本质是一个 {@link PBMGroup}
|
|
485
|
+
*/
|
|
486
|
+
modelMaterialLoaded(model: Model): void;
|
|
487
|
+
/**
|
|
488
|
+
* 模型 bvh树 计算完成
|
|
489
|
+
* @description
|
|
490
|
+
* bvh 树用于高效的碰撞检测,可以在 `model.bvh` 属性来设置是否开启。默认开启。
|
|
491
|
+
* bvh 树计算需要一定事件,可能会暂时影响一些性能。计算完毕后,会对碰撞检测带来质的提升。
|
|
492
|
+
* @param model - 加载完的 model 本质是一个 {@link PBMGroup}
|
|
493
|
+
*/
|
|
494
|
+
modelBvhLoaded(model: Model): void;
|
|
495
|
+
/**
|
|
496
|
+
* 模型加载错误
|
|
497
|
+
* @param error - 错误对象
|
|
498
|
+
* @param model - 加载完的 model 本质是一个 {@link PBMGroup}
|
|
499
|
+
*/
|
|
500
|
+
modelLoadError(error: Error, model: Model): void;
|
|
501
|
+
/**
|
|
502
|
+
* 模型加载完成
|
|
503
|
+
* @param model - 加载完的 model 本质是一个 {@link PBMGroup}
|
|
504
|
+
*/
|
|
505
|
+
modelLoaded(model: Model): void;
|
|
506
|
+
/**
|
|
507
|
+
* 模型楼层切换
|
|
508
|
+
* @param shownFloor - 模型楼层
|
|
509
|
+
*/
|
|
510
|
+
modelShownFloorChange(shownFloor: number | null, totalFloorLength: number): void;
|
|
511
|
+
/**
|
|
512
|
+
* 渲染循环
|
|
513
|
+
* @param rendered - 是否渲染了
|
|
514
|
+
*/
|
|
515
|
+
renderFrame(rendered: boolean): void;
|
|
516
|
+
/**
|
|
517
|
+
* 当前 fps 变化
|
|
518
|
+
* @param fps - 当前刷新率
|
|
519
|
+
*/
|
|
520
|
+
fps(fps: number): void;
|
|
521
|
+
/**
|
|
522
|
+
* 当目标 state 变化时
|
|
523
|
+
* @param state - 当前姿态状态
|
|
524
|
+
* @param userAction - 是否用户触发
|
|
525
|
+
*/
|
|
526
|
+
stateChange(state: State, userAction: boolean): void;
|
|
527
|
+
/**
|
|
528
|
+
* 当前实时 state 变化时
|
|
529
|
+
* @param state - 当前姿态状态
|
|
530
|
+
* @param userAction - 是否用户触发
|
|
531
|
+
*/
|
|
532
|
+
currentStateChange(state: State, userAction: boolean): void;
|
|
533
|
+
/**
|
|
534
|
+
* 当 setState 方法被调用
|
|
535
|
+
* @param state - 当前姿态状态
|
|
536
|
+
*/
|
|
537
|
+
setState(state: State): void;
|
|
538
|
+
/**
|
|
539
|
+
* 当 state 被同步完成时
|
|
540
|
+
* @param state - 当前姿态状态
|
|
541
|
+
*/
|
|
542
|
+
stateSynced(state: State): void;
|
|
543
|
+
/**
|
|
544
|
+
* 意图要移动到某个点时, 可以通过 return false 阻止
|
|
545
|
+
* @param panoIndex - 意图要移动到点位下标
|
|
546
|
+
* @param options - 移动参数
|
|
547
|
+
* @param userAction - 是否用户触发
|
|
548
|
+
* @returns 可以通过 return false 阻止
|
|
549
|
+
*/
|
|
550
|
+
wantsMoveToPano(panoIndex: number, options: MovePanoOptions, userAction: boolean): void | false;
|
|
551
|
+
/**
|
|
552
|
+
* 同 wantsMoveToPano
|
|
553
|
+
* @description
|
|
554
|
+
* @param panoIndex - 意图要移动到点位下标
|
|
555
|
+
* @param options - 移动参数
|
|
556
|
+
* @param userAction - 是否用户触发
|
|
557
|
+
* @returns 可以通过 return false 阻止
|
|
558
|
+
*/
|
|
559
|
+
wantsToMoveToPano(panoIndex: number, options: MovePanoOptions, userAction: boolean): void;
|
|
560
|
+
/**
|
|
561
|
+
* 意图要切换到某个模态, 可以通过 return false 阻止
|
|
562
|
+
* @param mode - 意图要切换到的模态
|
|
563
|
+
* @param prevMode - 当前模态
|
|
564
|
+
* @returns 可以通过 return false 阻止
|
|
565
|
+
*/
|
|
566
|
+
wantsChangeMode(mode: Mode, prevMode: Mode): void | false;
|
|
567
|
+
/**
|
|
568
|
+
* 模态切换完成
|
|
569
|
+
* @param mode - 切换到的模态
|
|
570
|
+
* @param prevMode - 上本质是一个模态
|
|
571
|
+
* @param panoIndex - 初始化动画结束后的点位下标
|
|
572
|
+
* @param toPose - 初始化动画结束后的状态
|
|
573
|
+
*/
|
|
574
|
+
modeChange(mode: Mode, prevMode: Mode, panoIndex: number, toPose: Pose): void;
|
|
575
|
+
/**
|
|
576
|
+
* 帮助元素显应的变换
|
|
577
|
+
* @param visible - 帮助元素的是否开启
|
|
578
|
+
*/
|
|
579
|
+
helpersVisibleChange(visible: boolean): void;
|
|
580
|
+
/**
|
|
581
|
+
* 网络资源分析
|
|
582
|
+
* @param source - 资源地址
|
|
583
|
+
* @param state - 状态
|
|
584
|
+
* @param detail - 详情
|
|
585
|
+
*/
|
|
586
|
+
network(source: string, type: NetworkType, state: NetworkState, detail: string): void;
|
|
587
|
+
/** five 被析构。 插件中请监听用于自身析构 */
|
|
588
|
+
dispose(): void;
|
|
589
|
+
};
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* 如视 VR Web展示器
|
|
593
|
+
*
|
|
594
|
+
* @example
|
|
595
|
+
* ```
|
|
596
|
+
* // 初始化构造函数
|
|
597
|
+
* const five = new Five();
|
|
598
|
+
* // 将绘制区域添加到页面上
|
|
599
|
+
* five.appendTo(document.body);
|
|
600
|
+
* // 加载 Work 数据
|
|
601
|
+
* five.load({...});
|
|
602
|
+
* ```
|
|
603
|
+
*/
|
|
604
|
+
export declare class Five extends Subscribe<EventTypes> {
|
|
605
|
+
/**
|
|
606
|
+
* Five 的显示模式,可以通过 `five.changeMode` `five.setState` 来切换
|
|
607
|
+
* @description
|
|
608
|
+
* ```text
|
|
609
|
+
* Panorama 全景图游走模式
|
|
610
|
+
* Model 模型游走模式
|
|
611
|
+
* Floorplan 模型查看模式
|
|
612
|
+
* Topview 户型图模式
|
|
613
|
+
* DepthPanorama 深度图游走模式
|
|
614
|
+
* VRPanorama VR眼镜模式
|
|
615
|
+
* ```
|
|
616
|
+
*/
|
|
617
|
+
static Mode: Mirror<Mode>;
|
|
618
|
+
/**
|
|
619
|
+
* @deprecated
|
|
620
|
+
* 请使用 `import { Line } from "@realsee/five/line"` 代替;
|
|
621
|
+
*/
|
|
622
|
+
static Line: any;
|
|
623
|
+
/**
|
|
624
|
+
* 自动播放状态是否暂停
|
|
625
|
+
* @description
|
|
626
|
+
* 可以通过 `five.play` `five.pause` 方法播放或暂停
|
|
627
|
+
*/
|
|
628
|
+
paused: boolean;
|
|
629
|
+
/** 当前点位序号 */
|
|
630
|
+
panoIndex?: number;
|
|
631
|
+
/** 当前展示的模式 */
|
|
632
|
+
currentMode?: Mode;
|
|
633
|
+
/** 内部使用的 `THREE.Scene` */
|
|
634
|
+
scene: Scene;
|
|
635
|
+
/** 内部使用的 `Camera` */
|
|
636
|
+
camera: Camera;
|
|
637
|
+
/**
|
|
638
|
+
* 当前设置的 `scissor`
|
|
639
|
+
* @description
|
|
640
|
+
* 可通过初始化,或者 setScissor 方式设置
|
|
641
|
+
* `scissor` 是将屏幕中的内容渲染到 `renderer` 的指定区域。
|
|
642
|
+
* 页面整体长宽均为 `1`。通过类似 css 的 `left` `bottom` `width` `height` 来确定区域。
|
|
643
|
+
* @example
|
|
644
|
+
* ```
|
|
645
|
+
* scissor: { left: 0.75, bottom: 0, width: 0.25, height: 1 }
|
|
646
|
+
* ```
|
|
647
|
+
*/
|
|
648
|
+
scissor: Scissor;
|
|
649
|
+
/**
|
|
650
|
+
* 当前使用的 THREE.WebGLRenderer。
|
|
651
|
+
* @description
|
|
652
|
+
* 如果初始化时传入了 `renderer` 则直接时该值
|
|
653
|
+
* 否则会通过 `preserveDrawingBuffer` `backgroundColor` `backgroundAlpha` `antialias` 创建一个 `THREE.WebGLRenderer`
|
|
654
|
+
*/
|
|
655
|
+
renderer?: THREE_2.WebGLRenderer;
|
|
656
|
+
/** 当前加载的模型 */
|
|
657
|
+
model: Model;
|
|
658
|
+
/**
|
|
659
|
+
* 是否需要渲染
|
|
660
|
+
* @description
|
|
661
|
+
* 如果初始化设置了 `onlyRenderIfNeeds: true`, 则会激活按需渲染
|
|
662
|
+
* 可以通过设置 `five.needsRender = true` 来告知,five 会在下一帧渲染画面。
|
|
663
|
+
*/
|
|
664
|
+
needsRender: boolean;
|
|
665
|
+
/**
|
|
666
|
+
* 全景图的配置参数
|
|
667
|
+
* @description
|
|
668
|
+
* 可以动态对配置在 `work` 数据中的全景图片在 runtime 做 url 调整。
|
|
669
|
+
* 平衡加载时间和图片质量
|
|
670
|
+
*/
|
|
671
|
+
imageOptions: ImageOptions;
|
|
672
|
+
/**
|
|
673
|
+
* 模型贴图的配置参数
|
|
674
|
+
* @description
|
|
675
|
+
* 可以动态对配置在 `work` 数据中的模型贴图在 runtime 做 url 调整。
|
|
676
|
+
* 平衡加载时间和图片质量
|
|
677
|
+
*/
|
|
678
|
+
textureOptions: TextureOptions;
|
|
679
|
+
/**
|
|
680
|
+
* 模型贴图的配置参数
|
|
681
|
+
* @description
|
|
682
|
+
* 可以动态对配置在 `work` 数据中的模型贴图在 runtime 做 url 调整。
|
|
683
|
+
* 平衡加载时间和图片质量
|
|
684
|
+
*/
|
|
685
|
+
videoTexture: THREE_2.VideoTexture;
|
|
686
|
+
/**
|
|
687
|
+
* 当前状态
|
|
688
|
+
* @description
|
|
689
|
+
* ```text
|
|
690
|
+
* five 设置了以下状态
|
|
691
|
+
*
|
|
692
|
+
* - mode: Mode
|
|
693
|
+
* - panoIndex: number
|
|
694
|
+
* - longitude: number
|
|
695
|
+
* - latitude: number
|
|
696
|
+
* - fov: number
|
|
697
|
+
* - offset: THREE.Vector3
|
|
698
|
+
*
|
|
699
|
+
* 可以通过 five.state 和 five.setState 来获取和设置。
|
|
700
|
+
* 通过 state 设置后,five 会通过合适的动画运动来达到设置的位置。
|
|
701
|
+
* 来迎合一些通过数据驱动的场景。
|
|
702
|
+
* ```
|
|
703
|
+
*/
|
|
704
|
+
state: State;
|
|
705
|
+
/** 插件暴露的方法 */
|
|
706
|
+
plugins: {
|
|
707
|
+
[key: string]: FivePluginInstance<any>;
|
|
708
|
+
};
|
|
709
|
+
ident: string;
|
|
710
|
+
private stopAnimationLoop?;
|
|
711
|
+
private fps;
|
|
712
|
+
private helperGroup;
|
|
713
|
+
private modeChangeDuration;
|
|
714
|
+
private onlyRenderIfNeeds;
|
|
715
|
+
private poweredByRealsee;
|
|
716
|
+
private controller?;
|
|
717
|
+
private destroyed;
|
|
718
|
+
private stateSynced;
|
|
719
|
+
private controllerInits;
|
|
720
|
+
private panoramaLikeSavedPose;
|
|
721
|
+
private extraElements;
|
|
722
|
+
private getPixelsRenderTarget;
|
|
723
|
+
private readyCallbacks;
|
|
724
|
+
private modelPending;
|
|
725
|
+
private syncingState;
|
|
726
|
+
/**
|
|
727
|
+
* 是否开启 IOS EDR 模式
|
|
728
|
+
* 需要客户端配合
|
|
729
|
+
* 并且开启 five.enablepostProcessing = true
|
|
730
|
+
*/
|
|
731
|
+
private _enableIOSEDR;
|
|
732
|
+
private lastLoadWorkTask;
|
|
733
|
+
private networkSubscribe;
|
|
734
|
+
private screenBuffer?;
|
|
735
|
+
private analysis?;
|
|
736
|
+
private renderSwitch01;
|
|
737
|
+
constructor(initArgs?: FiveInitArgs);
|
|
738
|
+
/**
|
|
739
|
+
* 析构 five 对象。
|
|
740
|
+
* @description
|
|
741
|
+
* 一旦调用了析构方法,则不能再使用当前 five 对象了。
|
|
742
|
+
* 你可以新建一个新的。
|
|
743
|
+
*/
|
|
744
|
+
dispose(): void;
|
|
745
|
+
/**
|
|
746
|
+
* 设置 `scissor`
|
|
747
|
+
* @param scissor - 指定区域
|
|
748
|
+
* `scissor` 是将屏幕中的内容渲染到 `renderer` 的指定区域。
|
|
749
|
+
* 请确保在 five 初始化时传入 `renderer` 对象
|
|
750
|
+
* 页面整体长宽均为 `1`。通过类似 css 的 `left` `bottom` `width` `height` 来确定区域。
|
|
751
|
+
* @example
|
|
752
|
+
* ```
|
|
753
|
+
* five.setScissor({ left: 0.75, bottom: 0, width: 0.25, height: 1 })
|
|
754
|
+
* ```
|
|
755
|
+
*/
|
|
756
|
+
setScissor(scissor: Scissor): void;
|
|
757
|
+
/**
|
|
758
|
+
* 帮助元素显示/隐藏
|
|
759
|
+
*/
|
|
760
|
+
get helperVisible(): boolean;
|
|
761
|
+
set helperVisible(visible: boolean);
|
|
762
|
+
/**
|
|
763
|
+
* 是否开启 IOS EDR 模式
|
|
764
|
+
* 需要客户端配合
|
|
765
|
+
* 并且开启 five.enablepostProcessing = true
|
|
766
|
+
*/
|
|
767
|
+
get enableIOSEDR(): boolean;
|
|
768
|
+
set enableIOSEDR(enable: boolean);
|
|
769
|
+
get enablePostProcessing(): boolean;
|
|
770
|
+
set enablePostProcessing(enable: boolean);
|
|
771
|
+
updateConfiguration(args: Pick<FiveInitArgs, "panorama" | "model" | "floorplan" | "topview" | "depthPanorama" | "vrPanorama" | "imageOptions">): void;
|
|
772
|
+
/**
|
|
773
|
+
* 将显示区域加载到页面 DOM 中
|
|
774
|
+
* @description
|
|
775
|
+
* 如果你是传入的 `renderer`. 则你需要自行来方式显示区域该方法并不生效
|
|
776
|
+
*
|
|
777
|
+
* @param element - 加载到页面的 DOM 元素
|
|
778
|
+
* @param size - 显示区域尺寸 默认铺满这个 DOM 元素
|
|
779
|
+
*/
|
|
780
|
+
appendTo(element: HTMLElement, size?: {
|
|
781
|
+
width?: number;
|
|
782
|
+
height?: number;
|
|
783
|
+
}): void;
|
|
784
|
+
/**
|
|
785
|
+
* 设置显示区域尺寸
|
|
786
|
+
* @description
|
|
787
|
+
* 如果你是传入的 `renderer`. 则你需要自行来设置显示区域尺寸,该方法并不生效
|
|
788
|
+
*
|
|
789
|
+
* @param size - 显示区域尺寸 默认铺满这个 DOM 元素
|
|
790
|
+
* @param pixelRatio - 像素比 默认继承之前的设置
|
|
791
|
+
*/
|
|
792
|
+
refresh(size?: {
|
|
793
|
+
width?: number;
|
|
794
|
+
height?: number;
|
|
795
|
+
}, pixelRatio?: number): void;
|
|
796
|
+
/**
|
|
797
|
+
* 绑定一个额外 DOM 区域,接受触控/鼠标事件
|
|
798
|
+
* @returns 解除该绑定
|
|
799
|
+
*/
|
|
800
|
+
addExtraElement(element: HTMLElement): () => void;
|
|
801
|
+
/**
|
|
802
|
+
* 解除绑定的一个额外 DOM 区域
|
|
803
|
+
*/
|
|
804
|
+
removeExtraElement(element: HTMLElement): void;
|
|
805
|
+
/**
|
|
806
|
+
* 获取当前相机姿态, 可以使用 getCurrentState 代替
|
|
807
|
+
*/
|
|
808
|
+
getPose(): Pose;
|
|
809
|
+
getSize(target: THREE_2.Vector2): THREE_2.Vector2;
|
|
810
|
+
getDrawingBufferSize(target: THREE_2.Vector2): THREE_2.Vector2;
|
|
811
|
+
/**
|
|
812
|
+
* 移动相机。(不触发点位移动)
|
|
813
|
+
* @description
|
|
814
|
+
* 如果动画中途被打断(用户触发行为,或者调用 setState, load, changeMode)的等
|
|
815
|
+
* 会 Promise.reject。运动完成则 Promise.resolve
|
|
816
|
+
* @param pose - 相机目标位置
|
|
817
|
+
* @param duration - 动画触发的时常
|
|
818
|
+
* @param userAction - 是否用户触发
|
|
819
|
+
* @returns Promise 是否移动成功
|
|
820
|
+
*/
|
|
821
|
+
updateCamera(pose: Partial<Omit<Pose, "offset">>, duration: number, userAction?: boolean): Promise<void>;
|
|
822
|
+
/**
|
|
823
|
+
* 获取当前相机经纬度
|
|
824
|
+
* @deprecated 请使用使用 getPose
|
|
825
|
+
*/
|
|
826
|
+
getLongitudeAndLatitude(): Pick<Pose, "longitude" | "latitude">;
|
|
827
|
+
/**
|
|
828
|
+
* 获取当前相机位置
|
|
829
|
+
* @deprecated 请使用使用 getPose
|
|
830
|
+
*/
|
|
831
|
+
getOffset(): Pose["offset"];
|
|
832
|
+
/**
|
|
833
|
+
* 获取当前相机的姿态(用于内部的 python 脚本截图)
|
|
834
|
+
* @deprecated 这是用于内部的 python 脚本截图
|
|
835
|
+
*/
|
|
836
|
+
getCameraLocal(): {
|
|
837
|
+
theta: number;
|
|
838
|
+
phi: number;
|
|
839
|
+
lookAtVector: THREE_2.Vector3;
|
|
840
|
+
};
|
|
841
|
+
/**
|
|
842
|
+
* 初始化 initBasisLoader
|
|
843
|
+
* @description
|
|
844
|
+
* 同初始化的 initBasisLoader 参数。用于初始化 basisLoader。
|
|
845
|
+
* basisLoader 只会初始化一次,一旦初始化则不会再修改。
|
|
846
|
+
*
|
|
847
|
+
* @param transcoderResourcePath - basis 解析器路径
|
|
848
|
+
* 如果不设置,使用默认解析器 basis 解析器。
|
|
849
|
+
* 可以传入解析器的 `resourcePath`, 则使用指定的解析器
|
|
850
|
+
* @example
|
|
851
|
+
* ```
|
|
852
|
+
* // 使用默认解析器
|
|
853
|
+
* five.initialBasisLoader();
|
|
854
|
+
*
|
|
855
|
+
* // 使用指定解析器
|
|
856
|
+
* // 会调用这个目录下的 basis_transcoder.js basis_transcoder.wasm 文件作为解析器
|
|
857
|
+
* five.initialBasisLoader("https://vrlab-public.ljcdn.com/release/static/image/release/five/basis/");
|
|
858
|
+
* ```
|
|
859
|
+
*/
|
|
860
|
+
initBasisLoader(transcoderResourcePath?: string): void;
|
|
861
|
+
/** 当前加载的 work 数据 */
|
|
862
|
+
get work(): Work;
|
|
863
|
+
/**
|
|
864
|
+
* 加载 Work 数据
|
|
865
|
+
* @param inputWork - Work 数据
|
|
866
|
+
* @param state - 初始化姿态
|
|
867
|
+
* - "inherit" 使用当前姿态
|
|
868
|
+
* - "initial" 使用 Work 数据中的 initial 姿态
|
|
869
|
+
* - State 自定义姿态
|
|
870
|
+
* @param duration - 切换时间
|
|
871
|
+
*/
|
|
872
|
+
load(inputWork: Work | LooseWork | any | Promise<Work | LooseWork | any>, state?: "inherit" | "initial" | Partial<Omit<State, "offset">>, duration?: number, userAction?: boolean): Promise<void>;
|
|
873
|
+
private load_;
|
|
874
|
+
/**
|
|
875
|
+
* 切换模态
|
|
876
|
+
* @param mode - 切换到的模态
|
|
877
|
+
* @param state - 切换完成时的姿态
|
|
878
|
+
* @param duration - 模态切换动画用时
|
|
879
|
+
* @param userAction - 是否时用户动作触发 默认 true
|
|
880
|
+
* @param force - 必须重新初始化 controller
|
|
881
|
+
*/
|
|
882
|
+
changeMode<T extends Mode>(mode: T, state?: Partial<Omit<State, "mode">>, duration?: number, userAction?: boolean, force?: boolean): Promise<void>;
|
|
883
|
+
/**
|
|
884
|
+
* 获取画面中的像素颜色
|
|
885
|
+
* @param x - 获取像素区域的起始坐标 x
|
|
886
|
+
* @param y - 获取像素区域的起始坐标 y
|
|
887
|
+
* @param width - 获取像素区域的宽度
|
|
888
|
+
* @param height - 获取像素区域的高度
|
|
889
|
+
* @param pixelRatio - 获取区域的像素比
|
|
890
|
+
* @returns rgba颜色平铺的 Uint8Array
|
|
891
|
+
*/
|
|
892
|
+
getPixels(x: number, y: number, width: number, height: number, pixelRatio?: number): Uint8Array;
|
|
893
|
+
/**
|
|
894
|
+
* 获取显示用的画布(Canvas DOM节点)
|
|
895
|
+
*/
|
|
896
|
+
getElement(): HTMLCanvasElement | undefined;
|
|
897
|
+
/**
|
|
898
|
+
* 强制渲染
|
|
899
|
+
* @description
|
|
900
|
+
* 调用 `five.render()` 和设置 `five.needsRender = true` 均可在按需渲染时,使得画面渲染一次
|
|
901
|
+
* 区别在于:
|
|
902
|
+
* - `five.needsRender = true` 为在下帧渲染画面
|
|
903
|
+
* - `five.render()` 在当前帧渲染画面
|
|
904
|
+
* 推荐使用 `five.needsRender = true`, 可以更加流畅。但是如果需要截图等同步操作,可以使用 `five.render()`
|
|
905
|
+
*
|
|
906
|
+
* @param callback - 渲染完成回调
|
|
907
|
+
*/
|
|
908
|
+
render(callback?: () => void, updateObjectResolution?: boolean): THREE_2.WebGLRenderTarget;
|
|
909
|
+
updateTime(time: number, deltaTime: number): void;
|
|
910
|
+
/**
|
|
911
|
+
* 但停自动播放
|
|
912
|
+
*/
|
|
913
|
+
pause(): void;
|
|
914
|
+
play(): void;
|
|
915
|
+
/**
|
|
916
|
+
* 转化到 Panorama 模态,并移动到对应序号的观察点。
|
|
917
|
+
* @param panoIndex - 观察点序号
|
|
918
|
+
* @param options - 移动点位参数
|
|
919
|
+
* @param userAction - 是否用户触犯
|
|
920
|
+
*/
|
|
921
|
+
moveToPano(panoIndex: number, options?: MovePanoOptions, userAction?: boolean): void;
|
|
922
|
+
/**
|
|
923
|
+
* 预加载点位图片资源
|
|
924
|
+
* @param panoIndex - 观察点序号
|
|
925
|
+
* @param callback - 加载完成回调, 并传递加载用时。
|
|
926
|
+
* @returns 加载完成的 Promise 参数同 callback
|
|
927
|
+
*/
|
|
928
|
+
preloadPano(panoIndex: number, callback?: (costs: number) => void): Promise<number>;
|
|
929
|
+
/**
|
|
930
|
+
* 计算三维坐标对应到屏幕的二维坐标
|
|
931
|
+
* @description
|
|
932
|
+
* 如果三维坐标不在屏幕中,则返回 null
|
|
933
|
+
* @param vector - 三维坐标
|
|
934
|
+
* @param testModel - 是否计算模型遮挡
|
|
935
|
+
* @returns 二维坐标 或者 null
|
|
936
|
+
*/
|
|
937
|
+
project2d(vector: THREE_2.Vector3, testModel?: boolean): THREE_2.Vector2 | null;
|
|
938
|
+
/**
|
|
939
|
+
* 获取当前在屏幕视锥中的 mesh。
|
|
940
|
+
* @param object - 如果传入则检查这个对象中的mesh,如果不传,则检查整个 scene
|
|
941
|
+
*/
|
|
942
|
+
getRenderObjects(object?: THREE_2.Object3D): THREE_2.Object3D[];
|
|
943
|
+
getCurrentState(): State;
|
|
944
|
+
/**
|
|
945
|
+
* 设置 State
|
|
946
|
+
* @description
|
|
947
|
+
* ```text
|
|
948
|
+
* five 设置了以下状态
|
|
949
|
+
*
|
|
950
|
+
* - mode: Mode
|
|
951
|
+
* - panoIndex: number
|
|
952
|
+
* - longitude: number
|
|
953
|
+
* - latitude: number
|
|
954
|
+
* - fov: number
|
|
955
|
+
* - offset: THREE.Vector3
|
|
956
|
+
*
|
|
957
|
+
* 可以通过 five.state 和 five.setState 来获取和设置。
|
|
958
|
+
* 通过 state 设置后,five 会通过合适的动画运动来达到设置的位置。
|
|
959
|
+
* 来迎合一些通过数据驱动的场景。
|
|
960
|
+
* ```
|
|
961
|
+
* @param state - 目标状态
|
|
962
|
+
* @param immediately - 是否马上转换,马上转换会尽快达到目标状态,尽量减少中间状态,更少动画。
|
|
963
|
+
* @param userAction - 是否是用户触发的动作
|
|
964
|
+
*/
|
|
965
|
+
setState(state: Partial<State>, immediately?: boolean, userAction?: boolean): void;
|
|
966
|
+
aroundScissor(callback: () => void): void;
|
|
967
|
+
private syncState;
|
|
968
|
+
ready(): Promise<void>;
|
|
969
|
+
requestFullscreen(): void;
|
|
970
|
+
exitFullscreen(): void;
|
|
971
|
+
private throwError;
|
|
972
|
+
private loadModel;
|
|
973
|
+
private commonParams;
|
|
974
|
+
private saveControllerPose;
|
|
975
|
+
private applyController;
|
|
976
|
+
/** 移除事件绑定 */
|
|
977
|
+
private removeEventListeners;
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
/** Five 初始化参数 */
|
|
981
|
+
export declare interface FiveInitArgs {
|
|
982
|
+
/**
|
|
983
|
+
* 外部传入的 `THREE.WebGLRenderer`。
|
|
984
|
+
* @description
|
|
985
|
+
* 如果需要使用 `scissor` 分割画布功能,则必须使用外部传入 renderer,
|
|
986
|
+
* 并且设置为 `preserveDrawingBuffer: false`。
|
|
987
|
+
* 如果设置了 `renderer`, 则 `preserveDrawingBuffer`
|
|
988
|
+
* `backgroundColor` `backgroundAlpha` `antialias`
|
|
989
|
+
* 均不再生效。
|
|
990
|
+
*/
|
|
991
|
+
renderer?: THREE_2.WebGLRenderer;
|
|
992
|
+
/**
|
|
993
|
+
* 内部 `THREE.WebGLRenderer` 是否通过像素拷贝的方式绘制。
|
|
994
|
+
* @description
|
|
995
|
+
* 当你想做屏幕截图等要确定取得屏幕像素时,请设置为 `true`。
|
|
996
|
+
* 如果设置了参数 `renderer` 参数,则不生效,请对传入的 `renderer` 自行设置。
|
|
997
|
+
* @default `false`
|
|
998
|
+
*/
|
|
999
|
+
preserveDrawingBuffer?: boolean;
|
|
1000
|
+
/**
|
|
1001
|
+
* 输出画面的背景颜色。
|
|
1002
|
+
* @description
|
|
1003
|
+
* 通过数字类型传入。
|
|
1004
|
+
* 如果设置了参数 `renderer` 参数,则不生效,请对传入的 `renderer` 自行设置。
|
|
1005
|
+
* @default `0x181A1C`
|
|
1006
|
+
* @example
|
|
1007
|
+
* ```
|
|
1008
|
+
* backgroundColor: 0xffffff // 白色
|
|
1009
|
+
* backgroundColor: 0xff0000 // 红色
|
|
1010
|
+
* ```
|
|
1011
|
+
*/
|
|
1012
|
+
backgroundColor?: number;
|
|
1013
|
+
/**
|
|
1014
|
+
* 输出画面的背景透明度
|
|
1015
|
+
* @description
|
|
1016
|
+
* 通过数字类型传入。取值范围 [0-1]
|
|
1017
|
+
* 如果设置了参数 `renderer` 参数,则不生效,请对传入的 `renderer` 自行设置。
|
|
1018
|
+
* @default `1`
|
|
1019
|
+
*/
|
|
1020
|
+
backgroundAlpha?: number;
|
|
1021
|
+
/**
|
|
1022
|
+
* 是否开启 `THREE.WebGLRenderer` 的抗锯齿功能
|
|
1023
|
+
* @description
|
|
1024
|
+
* 这个抗锯齿功能是 `WEBGL` 自带的抗锯齿,并不是类似 fxaa taa 等后处理方式,比较吃性能。
|
|
1025
|
+
* 如果设置了参数 `renderer` 参数,则不生效,请对传入的 `renderer` 自行设置。
|
|
1026
|
+
* @default `false`
|
|
1027
|
+
*/
|
|
1028
|
+
antialias?: boolean;
|
|
1029
|
+
/**
|
|
1030
|
+
* 屏幕渲染区域
|
|
1031
|
+
* @description
|
|
1032
|
+
* 请确保设置了 `renderer` 参数,`scissor` 参数才可生效
|
|
1033
|
+
* `scissor` 是将屏幕中的内容渲染到 `renderer` 的指定区域。
|
|
1034
|
+
* 页面整体长宽均为 `1`。通过类似 css 的 `left` `bottom` `width` `height` 来确定区域。
|
|
1035
|
+
* @example
|
|
1036
|
+
* ```
|
|
1037
|
+
* scissor: { left: 0.75, bottom: 0, width: 0.25, height: 1 }
|
|
1038
|
+
* ```
|
|
1039
|
+
*/
|
|
1040
|
+
scissor?: Scissor;
|
|
1041
|
+
/**
|
|
1042
|
+
* 是否自动播放。
|
|
1043
|
+
* @description
|
|
1044
|
+
* 播放即把内存中计算的内容渲染到画面上。play则是进行每帧播放。
|
|
1045
|
+
* 如果 `play: false` 则不自动播放。屏幕不显示。
|
|
1046
|
+
* 你还可以通过 `five.play()` `five.pause()` 的方式来控制播放。
|
|
1047
|
+
* @default `true`
|
|
1048
|
+
*/
|
|
1049
|
+
play?: boolean;
|
|
1050
|
+
/**
|
|
1051
|
+
* 全景图的配置参数
|
|
1052
|
+
* @description
|
|
1053
|
+
* 可以动态对配置在 `work` 数据中的全景图片在 runtime 做 url 调整。
|
|
1054
|
+
* 平衡加载时间和图片质量
|
|
1055
|
+
*/
|
|
1056
|
+
imageOptions?: ImageOptions;
|
|
1057
|
+
/**
|
|
1058
|
+
* 模型贴图的配置参数
|
|
1059
|
+
* @description
|
|
1060
|
+
* 可以动态对配置在 `work` 数据中的模型贴图在 runtime 做 url 调整。
|
|
1061
|
+
* 平衡加载时间和图片质量
|
|
1062
|
+
*/
|
|
1063
|
+
textureOptions?: TextureOptions;
|
|
1064
|
+
/**
|
|
1065
|
+
* 是否按需渲染
|
|
1066
|
+
* @description
|
|
1067
|
+
* 按需渲染时,如果页面中的渲染有 `needsRender: true` 属性。或者 `five.needsRender: true` 时
|
|
1068
|
+
* 才会重新渲染屏幕,降低无用渲染产生的消耗。
|
|
1069
|
+
* @default `true`
|
|
1070
|
+
*/
|
|
1071
|
+
onlyRenderIfNeeds?: boolean;
|
|
1072
|
+
/**
|
|
1073
|
+
* 最高 fps 限制
|
|
1074
|
+
* @description
|
|
1075
|
+
* 如果为 `false`, 则不限制。最好也就是屏幕刷新率,不会再高了。
|
|
1076
|
+
* @default `false`
|
|
1077
|
+
*/
|
|
1078
|
+
maxFps?: number | false;
|
|
1079
|
+
/**
|
|
1080
|
+
* 是否初始化 `basisLoader`。
|
|
1081
|
+
* @description
|
|
1082
|
+
* 当你需要加载 basis 格式图片时请启用。
|
|
1083
|
+
* 如果设置为 `true` 使用默认解析器 basis 解析器。
|
|
1084
|
+
* 如果要自定义,可以传入解析器的 `resourcePath`, 则使用指定的解析器
|
|
1085
|
+
* @default `false`
|
|
1086
|
+
* @example
|
|
1087
|
+
* ```
|
|
1088
|
+
* // 使用默认解析器
|
|
1089
|
+
* initialBasisLoader: true
|
|
1090
|
+
*
|
|
1091
|
+
* // 使用指定解析器
|
|
1092
|
+
* // 会调用这个目录下的 basis_transcoder.js basis_transcoder.wasm 文件作为解析器
|
|
1093
|
+
* initialBasisLoader: "https://vrlab-public.ljcdn.com/release/static/image/release/five/basis/"
|
|
1094
|
+
* ```
|
|
1095
|
+
*/
|
|
1096
|
+
initialBasisLoader?: boolean | string;
|
|
1097
|
+
/**
|
|
1098
|
+
* 外挂视频对象。
|
|
1099
|
+
* @description
|
|
1100
|
+
* 当点位中有视频元素,则会使用。如果不传入也会外部新建,
|
|
1101
|
+
* 加入传入的原因是,视频自动播放在不同浏览器或者 webview 中有不同的特性。
|
|
1102
|
+
* 给予更多外部操作的空间。
|
|
1103
|
+
*/
|
|
1104
|
+
videoInstance?: HTMLVideoElement;
|
|
1105
|
+
/** 全景图游走模式下的特定参数 */
|
|
1106
|
+
panorama?: ControllerCustomInitTypes["Panorama"];
|
|
1107
|
+
/** 模型游走模式下的特定参数 */
|
|
1108
|
+
model?: ControllerCustomInitTypes["Model"];
|
|
1109
|
+
/** 模型查看模式下的特定参数 */
|
|
1110
|
+
floorplan?: ControllerCustomInitTypes["Floorplan"];
|
|
1111
|
+
/** 户型图模式下的特定参数 */
|
|
1112
|
+
topview?: ControllerCustomInitTypes["Topview"];
|
|
1113
|
+
/** 深度图游走模式下的特定参数 */
|
|
1114
|
+
depthPanorama?: ControllerCustomInitTypes["DepthPanorama"];
|
|
1115
|
+
/** VR眼镜模式下的特定参数 */
|
|
1116
|
+
vrPanorama?: ControllerCustomInitTypes["VRPanorama"];
|
|
1117
|
+
/**
|
|
1118
|
+
* 模式间切换时的过度动画时间
|
|
1119
|
+
* @description
|
|
1120
|
+
* 单位毫秒
|
|
1121
|
+
* @default `1000`
|
|
1122
|
+
*/
|
|
1123
|
+
modeChangeDuration?: number;
|
|
1124
|
+
/**
|
|
1125
|
+
* 插件定义
|
|
1126
|
+
* @description
|
|
1127
|
+
* 详见插件部分。
|
|
1128
|
+
*/
|
|
1129
|
+
plugins?: (FivePlugin<void> | FivePluginInit<FivePlugin<any, any>> | FivePluginInit<FivePlugin<void, any>>)[];
|
|
1130
|
+
/**
|
|
1131
|
+
* 是否展示 powered by 如视
|
|
1132
|
+
*/
|
|
1133
|
+
poweredByRealsee?: boolean;
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
/**
|
|
1137
|
+
* Five 插件
|
|
1138
|
+
* [[include:plugins.md]]
|
|
1139
|
+
* @template Parameters - 插件参数, 没有参数则为 void
|
|
1140
|
+
* @template Returns - 如果有参数则插件暴露的 api,没有参数则不传
|
|
1141
|
+
*/
|
|
1142
|
+
export declare type FivePlugin<Parameters = void, Returns = void> = Parameters extends void ? ((five: Five) => Returns) : ((five: Five, parameters: Parameters) => Returns);
|
|
1143
|
+
|
|
1144
|
+
/**
|
|
1145
|
+
* 获取插件在Five中的初始化结构
|
|
1146
|
+
* @template T - Five 插件
|
|
1147
|
+
*/
|
|
1148
|
+
export declare type FivePluginInit<T extends FivePlugin<any, any>> = Parameters<T>[1] extends undefined ? [
|
|
1149
|
+
Plugin: T,
|
|
1150
|
+
instanceName: null | string
|
|
1151
|
+
] : [
|
|
1152
|
+
Plugin: T,
|
|
1153
|
+
instanceName: null | string,
|
|
1154
|
+
parameters: Parameters<T>[1]
|
|
1155
|
+
];
|
|
1156
|
+
|
|
1157
|
+
/**
|
|
1158
|
+
* 获取插件暴露的 api
|
|
1159
|
+
* @template T - Five 插件
|
|
1160
|
+
*/
|
|
1161
|
+
export declare type FivePluginInstance<T extends FivePlugin<any, any>> = ReturnType<T>;
|
|
1162
|
+
|
|
1163
|
+
export declare interface FloorplanControllerCustomInitArgs {
|
|
1164
|
+
/** 默认偏航角 */
|
|
1165
|
+
defaultLongitude?: number;
|
|
1166
|
+
/** 默认俯仰角 */
|
|
1167
|
+
defaultLatitude?: number;
|
|
1168
|
+
/** 最大俯仰角 */
|
|
1169
|
+
maxLatitude?: number;
|
|
1170
|
+
/** 最小俯仰角 */
|
|
1171
|
+
minLatitude?: number;
|
|
1172
|
+
/** 默认相机可视角度(垂直),可作为 `zoom` */
|
|
1173
|
+
defaultFov?: number;
|
|
1174
|
+
/** 最大相机可视角度 */
|
|
1175
|
+
maxFov?: number;
|
|
1176
|
+
/** 最小相机可视角度 */
|
|
1177
|
+
minFov?: number;
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
export declare type GestureTypes = "pan" | "tap" | "pinch" | "press" | "mouseWheel";
|
|
1181
|
+
|
|
1182
|
+
export declare function getViewportScale(): number;
|
|
1183
|
+
|
|
1184
|
+
/**
|
|
1185
|
+
* 图片参数
|
|
1186
|
+
*/
|
|
1187
|
+
export declare interface ImageOptions {
|
|
1188
|
+
/**
|
|
1189
|
+
* url 地址转化
|
|
1190
|
+
* @param url - 原始地址
|
|
1191
|
+
* @param options - 当前地址参数
|
|
1192
|
+
* @returns 转化后地址
|
|
1193
|
+
*/
|
|
1194
|
+
transform?: (url: string, options: ImageURLOptions) => string;
|
|
1195
|
+
/** 图片尺寸参数 尽量使用 2 的幂次 如 512 1024 2048 */
|
|
1196
|
+
size?: number;
|
|
1197
|
+
/** 图片质量参数(0-100) */
|
|
1198
|
+
quality?: number;
|
|
1199
|
+
/** 图片格式参数 */
|
|
1200
|
+
format?: "jpg" | "png" | "heif" | "webp" | "avif";
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
export declare interface ImageURLOptions {
|
|
1204
|
+
key: string;
|
|
1205
|
+
basisLoaderInitialized: boolean;
|
|
1206
|
+
size?: number;
|
|
1207
|
+
quality?: number;
|
|
1208
|
+
format?: "jpg" | "png" | "heif" | "webp" | "avif";
|
|
1209
|
+
cut?: [x: number, y: number, width: number, height: number];
|
|
1210
|
+
sharpen?: number;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
export declare class InternalWebGLRenderer extends THREE_2.WebGLRenderer {
|
|
1214
|
+
constructor({ preserveDrawingBuffer, backgroundColor, backgroundAlpha, pixelRatio, antialias }: {
|
|
1215
|
+
preserveDrawingBuffer?: boolean;
|
|
1216
|
+
backgroundColor?: number | THREE_2.Color;
|
|
1217
|
+
backgroundAlpha?: number;
|
|
1218
|
+
pixelRatio?: number;
|
|
1219
|
+
antialias?: boolean;
|
|
1220
|
+
});
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1223
|
+
export declare interface Intersection {
|
|
1224
|
+
/** 焦点坐标 */
|
|
1225
|
+
point: THREE_2.Vector3;
|
|
1226
|
+
/** 焦点面片 */
|
|
1227
|
+
face?: {
|
|
1228
|
+
normal: THREE_2.Vector3;
|
|
1229
|
+
} | null;
|
|
1230
|
+
/** 焦点距离 */
|
|
1231
|
+
distance: number;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
export declare class IntersectMesh extends THREE_2.Object3D implements IntersectMeshInterface {
|
|
1235
|
+
private ringMesh;
|
|
1236
|
+
constructor();
|
|
1237
|
+
dispose(): void;
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
/**
|
|
1241
|
+
* 地面提示点位接口
|
|
1242
|
+
*/
|
|
1243
|
+
export declare interface IntersectMeshInterface extends THREE_2.Object3D {
|
|
1244
|
+
dispose(): void;
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
export declare class LegacyPanoCircleMesh extends THREE_2.Object3D implements PanoCircleMeshInterface {
|
|
1248
|
+
needsRender: boolean;
|
|
1249
|
+
hitTestMesh: THREE_2.Mesh<THREE_2.BufferGeometry, THREE_2.MeshBasicMaterial>;
|
|
1250
|
+
current: boolean;
|
|
1251
|
+
loading: boolean;
|
|
1252
|
+
disabled: boolean;
|
|
1253
|
+
progress: number;
|
|
1254
|
+
opacity: number;
|
|
1255
|
+
private centerMesh;
|
|
1256
|
+
private loadingMesh;
|
|
1257
|
+
private progressMotion;
|
|
1258
|
+
private opacityMotion;
|
|
1259
|
+
private stopInterval?;
|
|
1260
|
+
constructor();
|
|
1261
|
+
setLoading(shown: boolean): void;
|
|
1262
|
+
setDisabled(disabled: boolean): void;
|
|
1263
|
+
setProgress(progress: number): void;
|
|
1264
|
+
setOpacity(opacity: number): void;
|
|
1265
|
+
setCurrent(current: boolean): void;
|
|
1266
|
+
updateTime(time: number, deltaTime: number): void;
|
|
1267
|
+
dispose(): void;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
export declare type LooseWork = {
|
|
1271
|
+
bvh?: boolean;
|
|
1272
|
+
modelAsync?: boolean;
|
|
1273
|
+
initial?: LooseWorkInitial;
|
|
1274
|
+
base_url?: string;
|
|
1275
|
+
model?: LooseWorkModel;
|
|
1276
|
+
panorama: {
|
|
1277
|
+
base_url?: string;
|
|
1278
|
+
pano_high_cube_base_url?: string;
|
|
1279
|
+
info?: LooseWorkPanorama[];
|
|
1280
|
+
list?: LooseWorkPanorama[];
|
|
1281
|
+
};
|
|
1282
|
+
observers: LooseWorkObserver[];
|
|
1283
|
+
};
|
|
1284
|
+
|
|
1285
|
+
export declare type LooseWorkInitial = {
|
|
1286
|
+
pano_index?: number;
|
|
1287
|
+
pano?: number;
|
|
1288
|
+
longitude?: number;
|
|
1289
|
+
latitude?: number;
|
|
1290
|
+
heading?: number;
|
|
1291
|
+
};
|
|
1292
|
+
|
|
1293
|
+
export declare type LooseWorkModel = {
|
|
1294
|
+
file_url: string;
|
|
1295
|
+
material_textures?: string[];
|
|
1296
|
+
material_base_url?: string;
|
|
1297
|
+
};
|
|
1298
|
+
|
|
1299
|
+
export declare type LooseWorkObserver = {
|
|
1300
|
+
active?: boolean;
|
|
1301
|
+
index?: number;
|
|
1302
|
+
visible_nodes: number[];
|
|
1303
|
+
accessible_nodes: number[];
|
|
1304
|
+
quaternion: {
|
|
1305
|
+
y: number;
|
|
1306
|
+
x: number;
|
|
1307
|
+
z: number;
|
|
1308
|
+
w: number;
|
|
1309
|
+
};
|
|
1310
|
+
standing_position: number[];
|
|
1311
|
+
position: number[];
|
|
1312
|
+
floor?: number;
|
|
1313
|
+
floor_index?: number;
|
|
1314
|
+
};
|
|
1315
|
+
|
|
1316
|
+
export declare type LooseWorkPanorama = {
|
|
1317
|
+
active?: boolean;
|
|
1318
|
+
loadable?: boolean;
|
|
1319
|
+
index?: number;
|
|
1320
|
+
up: string;
|
|
1321
|
+
down: string;
|
|
1322
|
+
right: string;
|
|
1323
|
+
left: string;
|
|
1324
|
+
front: string;
|
|
1325
|
+
back: string;
|
|
1326
|
+
video?: LooseWorkVideo;
|
|
1327
|
+
luminance?: {
|
|
1328
|
+
up: string;
|
|
1329
|
+
down: string;
|
|
1330
|
+
right: string;
|
|
1331
|
+
left: string;
|
|
1332
|
+
front: string;
|
|
1333
|
+
back: string;
|
|
1334
|
+
};
|
|
1335
|
+
tiles?: number[];
|
|
1336
|
+
};
|
|
1337
|
+
|
|
1338
|
+
export declare type LooseWorkVideo = {
|
|
1339
|
+
source: string;
|
|
1340
|
+
matrix: number[];
|
|
1341
|
+
size: number[];
|
|
1342
|
+
};
|
|
1343
|
+
|
|
1344
|
+
export declare type Mirror<T extends string> = Record<T, T>;
|
|
1345
|
+
|
|
1346
|
+
/**
|
|
1347
|
+
* Five 的显示模式,可以通过 `five.changeMode` `five.setState` 来切换
|
|
1348
|
+
* - **Panorama**: 全景图游走模式
|
|
1349
|
+
* - **Model**: 模型游走模式
|
|
1350
|
+
* - **Floorplan**: 模型查看模式
|
|
1351
|
+
* - **Topview**: 户型图模式
|
|
1352
|
+
* - **DepthPanorama**: 深度图游走模式
|
|
1353
|
+
* - **VRPanorama**: VR眼镜模式
|
|
1354
|
+
*/
|
|
1355
|
+
export declare type Mode =
|
|
1356
|
+
/** 模型查看模式 */
|
|
1357
|
+
"Floorplan" |
|
|
1358
|
+
/** 户型图模式 */
|
|
1359
|
+
"Topview" |
|
|
1360
|
+
/** 全景图游走模式 */
|
|
1361
|
+
"Panorama" |
|
|
1362
|
+
/** VR眼镜模式 */
|
|
1363
|
+
"VRPanorama" |
|
|
1364
|
+
/** 模型游走模式 */
|
|
1365
|
+
"Model" |
|
|
1366
|
+
/** 深度图游走模式 */
|
|
1367
|
+
"DepthPanorama";
|
|
1368
|
+
|
|
1369
|
+
/**
|
|
1370
|
+
* Five 模型
|
|
1371
|
+
* @description
|
|
1372
|
+
* 通过 work 数据加载, 适配 at3d、pbm、dome、domez 格式的文件
|
|
1373
|
+
* 可以通过 jsonp 解析 base64 的 dataURL 内容,
|
|
1374
|
+
* 需要满足 your/path/filename.at3d.json_xxxxxx,
|
|
1375
|
+
* 通过 json_xxxxxx(<dataURL>) 方式返回。
|
|
1376
|
+
*/
|
|
1377
|
+
export declare class Model extends PBMContainer implements Subscribe<ModelEventType> {
|
|
1378
|
+
/** 是否加载完成 */
|
|
1379
|
+
loaded: boolean;
|
|
1380
|
+
/** 是否未加载 */
|
|
1381
|
+
empty: boolean;
|
|
1382
|
+
/** 外接盒子的大小 */
|
|
1383
|
+
bounding: THREE_2.Box3;
|
|
1384
|
+
/** 当前显示的楼层 */
|
|
1385
|
+
shownFloor: number | null;
|
|
1386
|
+
/** 楼层的数量 */
|
|
1387
|
+
floorLength: number;
|
|
1388
|
+
/**
|
|
1389
|
+
* 判断是否注册了事件
|
|
1390
|
+
* 具体可查看 {@link Subscribe.hasListener}
|
|
1391
|
+
*/
|
|
1392
|
+
hasListener: SubscribeMixinType.hasListener<ModelEventType>;
|
|
1393
|
+
/**
|
|
1394
|
+
* 注册事件
|
|
1395
|
+
* 具体可查看 {@link Subscribe.on}
|
|
1396
|
+
*/
|
|
1397
|
+
on: SubscribeMixinType.on<ModelEventType>;
|
|
1398
|
+
/**
|
|
1399
|
+
* 注册事件(是否只执行一次)
|
|
1400
|
+
* 具体可查看 {@link Subscribe.once}
|
|
1401
|
+
*/
|
|
1402
|
+
once: SubscribeMixinType.once<ModelEventType>;
|
|
1403
|
+
/**
|
|
1404
|
+
* 解除事件
|
|
1405
|
+
* 具体可查看 {@link Subscribe.off}
|
|
1406
|
+
*/
|
|
1407
|
+
off: SubscribeMixinType.off<ModelEventType>;
|
|
1408
|
+
/**
|
|
1409
|
+
* 触发事件
|
|
1410
|
+
* 具体可查看 {@link Subscribe.emit}
|
|
1411
|
+
*/
|
|
1412
|
+
emit: SubscribeMixinType.emit<ModelEventType>;
|
|
1413
|
+
/** bvh 树的计算结果 */
|
|
1414
|
+
bvhs: BVH[] & {
|
|
1415
|
+
loaded: boolean;
|
|
1416
|
+
};
|
|
1417
|
+
/** 网络跟踪 */
|
|
1418
|
+
private networkSubscribe?;
|
|
1419
|
+
/** 安全域名 */
|
|
1420
|
+
private allowHosts?;
|
|
1421
|
+
constructor(options?: {
|
|
1422
|
+
networkSubscribe?: NetworkSubscribe;
|
|
1423
|
+
allowHosts?: string[];
|
|
1424
|
+
});
|
|
1425
|
+
/**
|
|
1426
|
+
* 当前显示的楼层
|
|
1427
|
+
* @deprecated
|
|
1428
|
+
* 请用 shwonFloor 代替
|
|
1429
|
+
*/
|
|
1430
|
+
get shownfloor(): number | null;
|
|
1431
|
+
/**
|
|
1432
|
+
* 获取模型边界线
|
|
1433
|
+
* @param threshold - 面片间夹角阈值
|
|
1434
|
+
* @returns 所有模型边界线
|
|
1435
|
+
*/
|
|
1436
|
+
getEdges(threshold?: number): THREE_2.Line3[];
|
|
1437
|
+
/**
|
|
1438
|
+
* 获取当前楼层数
|
|
1439
|
+
* @deprecated
|
|
1440
|
+
* 请使用 floorLength 参数代替
|
|
1441
|
+
*/
|
|
1442
|
+
hasFloors(): number;
|
|
1443
|
+
private hasFloors_;
|
|
1444
|
+
/**
|
|
1445
|
+
* 显示某楼层
|
|
1446
|
+
* @example
|
|
1447
|
+
* ```
|
|
1448
|
+
* model.show() //显示全部楼层
|
|
1449
|
+
* model.show(1) //显示第一楼层
|
|
1450
|
+
* model.show(1, 0) //显示第一楼层, 并且其他楼层透明度为 0
|
|
1451
|
+
* ```
|
|
1452
|
+
*/
|
|
1453
|
+
show(): void;
|
|
1454
|
+
show(floorIndex: number, hiddenOpacity?: number): void;
|
|
1455
|
+
/**
|
|
1456
|
+
* 计算模型射线碰撞检测
|
|
1457
|
+
* @param raycaster - THREE 射线对象
|
|
1458
|
+
* @param floors - 和某一楼层做碰撞检测, 不传为和所有楼层做碰撞检测
|
|
1459
|
+
* @returns 返回碰撞
|
|
1460
|
+
*/
|
|
1461
|
+
intersectRaycaster(raycaster: THREE_2.Raycaster, floors?: number | number[]): Intersection[];
|
|
1462
|
+
buildBVH(): void;
|
|
1463
|
+
/**
|
|
1464
|
+
* 加载模型
|
|
1465
|
+
* @param workModel - work 的 model 内容
|
|
1466
|
+
* @param imageOptions - 图片参数
|
|
1467
|
+
*/
|
|
1468
|
+
load(workModel: WorkModel, textureOptions?: TextureOptions): Promise<void>;
|
|
1469
|
+
/**
|
|
1470
|
+
* 析构函数
|
|
1471
|
+
* @description
|
|
1472
|
+
* 一旦析构,则不能使用
|
|
1473
|
+
*/
|
|
1474
|
+
dispose(): void;
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
export declare interface ModelControllerCustomInitArgs extends PanoramaLikeControllerCustomInitArgs {
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
/**
|
|
1481
|
+
* Five 模型事件列表
|
|
1482
|
+
* @description
|
|
1483
|
+
* 可以通过 `five.model.on(METHOD_NAME, METHOD)` 调用
|
|
1484
|
+
*/
|
|
1485
|
+
export declare interface ModelEventCallback extends ModelEventType {
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
/**
|
|
1489
|
+
* 模型事件列表
|
|
1490
|
+
* @description
|
|
1491
|
+
* 具体事件列表 请查看 {@link ModelEventCallback}
|
|
1492
|
+
*/
|
|
1493
|
+
export declare type ModelEventType = {
|
|
1494
|
+
/**
|
|
1495
|
+
* 模型 bvh树 计算完成
|
|
1496
|
+
* @description
|
|
1497
|
+
* bvh 树用于高效的碰撞检测,可以在 `model.bvh` 属性来设置是否开启。默认开启。
|
|
1498
|
+
* bvh 树计算需要一定事件,可能会暂时影响一些性能。计算完毕后,会对碰撞检测带来质的提升。
|
|
1499
|
+
*/
|
|
1500
|
+
bvhLoaded(): void;
|
|
1501
|
+
/** 模型三角面片结构加载完成 */
|
|
1502
|
+
geometryLoaded(): void;
|
|
1503
|
+
/** 模型材质结构加载完成 */
|
|
1504
|
+
materialLoaded(): void;
|
|
1505
|
+
/** 模型加载完成 */
|
|
1506
|
+
loaded(): void;
|
|
1507
|
+
/**
|
|
1508
|
+
* 显示楼层改变
|
|
1509
|
+
* @param shownFloor - 显示的楼层
|
|
1510
|
+
*/
|
|
1511
|
+
shownFloorChange(shownFloor: number | null, totalFloorLength: number): void;
|
|
1512
|
+
/**
|
|
1513
|
+
* 内部错误
|
|
1514
|
+
* @param error - 错误对象
|
|
1515
|
+
*/
|
|
1516
|
+
error(error: Error): void;
|
|
1517
|
+
};
|
|
1518
|
+
|
|
1519
|
+
/**
|
|
1520
|
+
* 点位移动参数
|
|
1521
|
+
*/
|
|
1522
|
+
export declare interface MovePanoOptions extends Partial<Omit<Pose, "offset">> {
|
|
1523
|
+
/** 是否通过初始化参数限制 fov, latitude */
|
|
1524
|
+
limit?: boolean;
|
|
1525
|
+
/**
|
|
1526
|
+
* 动画模式
|
|
1527
|
+
* @description
|
|
1528
|
+
* - `fly` 通过相机移动方式变化
|
|
1529
|
+
* - `fade` 通过渐变方式变化
|
|
1530
|
+
* - `instant` 通过插入黑屏方式变化
|
|
1531
|
+
*/
|
|
1532
|
+
effect?: "fly" | "fade" | "instant";
|
|
1533
|
+
/**
|
|
1534
|
+
* 运动耗时
|
|
1535
|
+
* @description
|
|
1536
|
+
* - `数字或者字符串类型` 直接当作运动耗时
|
|
1537
|
+
* - `函数类型` 传入 距离和速度(速度为five初始化设置) 返回运动耗时
|
|
1538
|
+
* - `不传或者null` 通过距离和速度(速度为five初始化设置)
|
|
1539
|
+
*/
|
|
1540
|
+
duration?: number | ((distance: number, speed: number) => number) | string | null;
|
|
1541
|
+
/** 运动曲线函数 */
|
|
1542
|
+
easing?: (k: number) => number;
|
|
1543
|
+
/** 运动开始回调 */
|
|
1544
|
+
moveStartCallback?: (panoIndex: number, toPose: Pose) => void;
|
|
1545
|
+
/** 运动结束回调 */
|
|
1546
|
+
moveEndCallback?: (panoIndex: number, pose: Pose) => void;
|
|
1547
|
+
/**
|
|
1548
|
+
* 运动被取消回调
|
|
1549
|
+
* @description
|
|
1550
|
+
* 这个有一些情况会导致
|
|
1551
|
+
* - 移动过程中切换模态
|
|
1552
|
+
* - 移动过程中 five 被析构
|
|
1553
|
+
* - 移动过程点击切换到另一个点位
|
|
1554
|
+
*/
|
|
1555
|
+
moveCancelCallback?: () => void;
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1558
|
+
export declare type NetWorkMeta = {
|
|
1559
|
+
source: string;
|
|
1560
|
+
headers: {
|
|
1561
|
+
[name: string]: string;
|
|
1562
|
+
};
|
|
1563
|
+
requestTime: number;
|
|
1564
|
+
responseTime: number;
|
|
1565
|
+
costs: number;
|
|
1566
|
+
size?: number;
|
|
1567
|
+
};
|
|
1568
|
+
|
|
1569
|
+
export declare type NetworkState = "ok" | "preload" | "error" | "timeout" | "forbidden";
|
|
1570
|
+
|
|
1571
|
+
export declare class NetworkSubscribe extends Subscribe<{
|
|
1572
|
+
network(source: string, type: NetworkType, state: NetworkState, detail: string): void;
|
|
1573
|
+
}> {
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
export declare type NetworkType = "XMLHttpRequest" | "Script" | "Image" | "Link";
|
|
1577
|
+
|
|
1578
|
+
export declare class PanoCircleMesh extends THREE_2.Object3D implements PanoCircleMeshInterface {
|
|
1579
|
+
needsRender: boolean;
|
|
1580
|
+
private loadingMesh;
|
|
1581
|
+
private disableMesh;
|
|
1582
|
+
private centerMesh;
|
|
1583
|
+
private ringMesh;
|
|
1584
|
+
private progressMesh;
|
|
1585
|
+
private ringRotateMotion;
|
|
1586
|
+
private tapMotion;
|
|
1587
|
+
private progressMotion;
|
|
1588
|
+
private progressOpacityMotion;
|
|
1589
|
+
private opacityMotion;
|
|
1590
|
+
progress: number;
|
|
1591
|
+
opacity: number;
|
|
1592
|
+
current: boolean;
|
|
1593
|
+
loading: boolean;
|
|
1594
|
+
disabled: boolean;
|
|
1595
|
+
constructor();
|
|
1596
|
+
setProgress(progress: number): void;
|
|
1597
|
+
setOpacity(opacity: number): void;
|
|
1598
|
+
setCurrent(current: boolean): void;
|
|
1599
|
+
setLoading(loading: boolean): void;
|
|
1600
|
+
setDisabled(disabled: boolean): void;
|
|
1601
|
+
tap(): Promise<void>;
|
|
1602
|
+
updateTime(time: number, deltaTime: number): void;
|
|
1603
|
+
dispose(): void;
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
/**
|
|
1607
|
+
* 地面提示点位接口
|
|
1608
|
+
*
|
|
1609
|
+
* 点位状态
|
|
1610
|
+
* 1. 默认状态: 无任何操作的情况
|
|
1611
|
+
* 2. 高亮状态: 高亮,认为是合适的下一个点位,或者设备选中了某个点位
|
|
1612
|
+
* 3. 进度状态: 点位加载中,存在进度的情况
|
|
1613
|
+
* 4. 加载状态: 点位加载中,不存在进度的情况
|
|
1614
|
+
* 5. 不可用状态:点位不可用,存在点位,但是点位是个摆设
|
|
1615
|
+
* 6. 点击动画: 点位被选择,触发全景图切换
|
|
1616
|
+
* 7. 透明度改变: 一般会处理为近的点位透明度高,远的点位透明度低
|
|
1617
|
+
*/
|
|
1618
|
+
export declare interface PanoCircleMeshInterface extends THREE_2.Object3D {
|
|
1619
|
+
needsRender: boolean;
|
|
1620
|
+
hitTestMesh?: THREE_2.Mesh;
|
|
1621
|
+
/** 当前高亮 */
|
|
1622
|
+
current: boolean;
|
|
1623
|
+
/** 是否当前高亮 */
|
|
1624
|
+
setCurrent(current: boolean): void;
|
|
1625
|
+
loading: boolean;
|
|
1626
|
+
setLoading(loading: boolean): void;
|
|
1627
|
+
disabled: boolean;
|
|
1628
|
+
setDisabled(disabled: boolean): void;
|
|
1629
|
+
progress: number;
|
|
1630
|
+
setProgress(progress: number): void;
|
|
1631
|
+
opacity: number;
|
|
1632
|
+
setOpacity(opacity: number): void;
|
|
1633
|
+
updateTime?(time: number, deltaTime: number): void;
|
|
1634
|
+
/** 点击交互 */
|
|
1635
|
+
tap?(): Promise<void>;
|
|
1636
|
+
dispose(): void;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
export declare interface PanoramaControllerCustomInitArgs extends PanoramaLikeControllerCustomInitArgs {
|
|
1640
|
+
/** 最远可移动观察点距离 */
|
|
1641
|
+
maxAccessibleDistance?: number;
|
|
1642
|
+
/**
|
|
1643
|
+
* 点击地面观察点标识的判定范围
|
|
1644
|
+
* @description
|
|
1645
|
+
* 如果在判定范围内则确定去到目标点,
|
|
1646
|
+
* 否则寻找点击位置方向最适合的点(可能会走到一个离相机更近的点)。
|
|
1647
|
+
*/
|
|
1648
|
+
panoTapTriggerRadius?: number;
|
|
1649
|
+
/** 地面观察点标识自定义创建器 */
|
|
1650
|
+
panoCircleMeshCreator?: () => PanoCircleMeshInterface;
|
|
1651
|
+
tileLevelForFov?: false | ((fov: number, viewSize: THREE_2.Vector2) => number);
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
export declare interface PanoramaLikeControllerCustomInitArgs {
|
|
1655
|
+
/** 默认相机偏航角 */
|
|
1656
|
+
defaultLongitude?: number;
|
|
1657
|
+
/** 默认相机俯仰角 */
|
|
1658
|
+
defaultLatitude?: number;
|
|
1659
|
+
/** 最大相机俯仰角 */
|
|
1660
|
+
maxLatitude?: number;
|
|
1661
|
+
/** 最小相机俯仰角 */
|
|
1662
|
+
minLatitude?: number;
|
|
1663
|
+
/** 默认相机可视角度(垂直),可作为 `zoom` */
|
|
1664
|
+
defaultFov?: number;
|
|
1665
|
+
/** 最大默认相机可视角度(垂直) */
|
|
1666
|
+
maxFov?: number;
|
|
1667
|
+
/** 最小默认相机可视角度(垂直) */
|
|
1668
|
+
minFov?: number;
|
|
1669
|
+
/**
|
|
1670
|
+
* 点位间移动动画速度 单位 m/s
|
|
1671
|
+
* @description
|
|
1672
|
+
* 这边设置的是速度,整体耗时会通过距离除速度计算得到
|
|
1673
|
+
*/
|
|
1674
|
+
moveSpeed?: number;
|
|
1675
|
+
/** 鼠标焦点环自定义创建器 */
|
|
1676
|
+
intersectMeshCreator?: () => IntersectMeshInterface;
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1679
|
+
/**
|
|
1680
|
+
* 解析 Work 数据
|
|
1681
|
+
* @param obj - work 数据,从如数开发者平台获取
|
|
1682
|
+
* @param options - 配置参数, 可以在此二次设置 baseURL 等参数
|
|
1683
|
+
* @param urlTransform - 配置参数, URL 解析规则
|
|
1684
|
+
* @returns - 签署过的 Work 数据结构
|
|
1685
|
+
*/
|
|
1686
|
+
export declare function parseWork(obj: Work | LooseWork | string | any, options?: ParseWorkOptions, urlTransform?: (origin: string, absolute: string, relative: string, type: "panorama" | "texture" | "model") => void): Work;
|
|
1687
|
+
|
|
1688
|
+
export declare type ParseWorkOptions = {
|
|
1689
|
+
/** 重写 work 中的资源前缀 */
|
|
1690
|
+
baseURL?: string;
|
|
1691
|
+
/** work 中的资源地址使用短地址 */
|
|
1692
|
+
shortPath?: boolean;
|
|
1693
|
+
/** work 中的资源使用 jsonp 方式发布 */
|
|
1694
|
+
jsonp?: boolean;
|
|
1695
|
+
/** work 中模型是否计算bvh碰撞数,默认计算 true */
|
|
1696
|
+
modelBvh?: boolean;
|
|
1697
|
+
};
|
|
1698
|
+
|
|
1699
|
+
/** PBM 模型组 */
|
|
1700
|
+
export declare class PBMContainer extends THREE_2.Group {
|
|
1701
|
+
/** 是否需要更新按需渲染 */
|
|
1702
|
+
needsRender: boolean;
|
|
1703
|
+
private enableTransparent;
|
|
1704
|
+
/** 获取是否有透明参数 */
|
|
1705
|
+
getTransparent(): boolean;
|
|
1706
|
+
/** 设置透明参数 */
|
|
1707
|
+
setTransparent(bool: boolean): void;
|
|
1708
|
+
/** 获取材质参数 */
|
|
1709
|
+
getMaterial(): PBMParameters | null;
|
|
1710
|
+
/** 设置材质参数 */
|
|
1711
|
+
setMaterial(parameters: Partial<PBMParameters>): void;
|
|
1712
|
+
/** 析构材质 */
|
|
1713
|
+
disposeMaterial(): void;
|
|
1714
|
+
/** 析构模型网格 */
|
|
1715
|
+
disposeGeometry(): void;
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
/** PBM 模型组 */
|
|
1719
|
+
export declare class PBMGroup extends PBMContainer {
|
|
1720
|
+
/** 楼层序号 */
|
|
1721
|
+
floorIndex: number;
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
/** PBM 材质 */
|
|
1725
|
+
export declare class PBMMaterial extends THREE_2.ShaderMaterial implements PBMParameters {
|
|
1726
|
+
/** 起始点 */
|
|
1727
|
+
pano0: PBMPanoPicture | null;
|
|
1728
|
+
/** 结束点 */
|
|
1729
|
+
pano1: PBMPanoPicture | null;
|
|
1730
|
+
/** 模型贴图和全景图的混合程度 [0-1] */
|
|
1731
|
+
modelAlpha: number;
|
|
1732
|
+
/** 全景图混合程度 [0-1] */
|
|
1733
|
+
progress: number;
|
|
1734
|
+
/** 全景图通过过度黑色混合 */
|
|
1735
|
+
useBlackTransition: boolean;
|
|
1736
|
+
perspToOrtho: number;
|
|
1737
|
+
/** 模型透明度 */
|
|
1738
|
+
opacity: number;
|
|
1739
|
+
originOpacity: number;
|
|
1740
|
+
constructor(parameters?: Partial<PBMParameters>);
|
|
1741
|
+
}
|
|
1742
|
+
|
|
1743
|
+
/** PBM 对象 */
|
|
1744
|
+
export declare class PBMMesh extends THREE_2.Mesh<THREE_2.BufferGeometry, PBMMaterial[]> {
|
|
1745
|
+
/** 楼层序号 */
|
|
1746
|
+
floorIndex: number;
|
|
1747
|
+
/** 是否需要更新按需渲染 */
|
|
1748
|
+
needsRender: boolean;
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1751
|
+
export declare interface PBMPanoPicture {
|
|
1752
|
+
/** 起始点位全景图 */
|
|
1753
|
+
map: THREE_2.CubeTexture;
|
|
1754
|
+
/** 亮度增益 */
|
|
1755
|
+
luminanceMap: THREE_2.CubeTexture | null;
|
|
1756
|
+
/** 起始点全景图变换矩阵 4x4 */
|
|
1757
|
+
matrix: THREE_2.Matrix4;
|
|
1758
|
+
}
|
|
1759
|
+
|
|
1760
|
+
/** PBM 材质参数 */
|
|
1761
|
+
export declare interface PBMParameters {
|
|
1762
|
+
/** 起始点 */
|
|
1763
|
+
pano0: PBMPanoPicture | null;
|
|
1764
|
+
/** 结束点 */
|
|
1765
|
+
pano1: PBMPanoPicture | null;
|
|
1766
|
+
/** 模型贴图和全景图的混合程度 [0-1] */
|
|
1767
|
+
modelAlpha: number;
|
|
1768
|
+
/** 全景图混合程度 [0-1] */
|
|
1769
|
+
progress: number;
|
|
1770
|
+
/** 全景图通过过度黑色混合 */
|
|
1771
|
+
useBlackTransition: boolean;
|
|
1772
|
+
perspToOrtho: number;
|
|
1773
|
+
/** 模型透明度 */
|
|
1774
|
+
opacity: number;
|
|
1775
|
+
}
|
|
1776
|
+
|
|
1777
|
+
/**
|
|
1778
|
+
* 相机位姿
|
|
1779
|
+
* [[include: coordinate.md]]
|
|
1780
|
+
*/
|
|
1781
|
+
export declare interface Pose {
|
|
1782
|
+
/** 相机俯仰角 */
|
|
1783
|
+
longitude: number;
|
|
1784
|
+
/** 相机偏航角 */
|
|
1785
|
+
latitude: number;
|
|
1786
|
+
/** 相机可视角度(垂直)*/
|
|
1787
|
+
fov: number;
|
|
1788
|
+
/** 相机位置*/
|
|
1789
|
+
offset: THREE_2.Vector3;
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
export declare const PROXY_CONTROLLER_EVENT_NAMES: readonly ["cameraDirectionUpdate", "cameraUpdate", "cameraPositionUpdate", "panoSelected", "moveToPano", "moveToPanoCanceled", "panoWillArrive", "movingToPano", "panoArrived", "panoWillLoad", "panoLoaded", "panoLoadError", "initAnimationEnded", "initAnimationWillStart", "wantsGesture", "gesture", "wantsTapGesture", "tapGesture", "wantsPressGesture", "pressGesture", "wantsPanGesture", "wantsInteriaPan", "panGesture", "interiaPan", "wantsPinchGesture", "pinchGesture", "wantsMouseWheel", "mouseWheel", "wantsShowIntersectionOnModel", "intersectionOnModelUpdate", "intersectionHidden", "textureStartLoad", "textureLoading", "textureAbort", "textureLoaded", "textureError"];
|
|
1793
|
+
|
|
1794
|
+
/** Five 场景*/
|
|
1795
|
+
export declare class Scene extends THREE_2.Scene {
|
|
1796
|
+
add(...objects: AddableObject[]): this;
|
|
1797
|
+
remove(...objects: AddableObject[]): this;
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
/**
|
|
1801
|
+
* 显示区域裁剪参数
|
|
1802
|
+
* @description
|
|
1803
|
+
* 可通过初始化,或者 setScissor 方式设置
|
|
1804
|
+
* `scissor` 是将屏幕中的内容渲染到 `renderer` 的指定区域。
|
|
1805
|
+
* 页面整体长宽均为 `1`。通过类似 css 的 `left` `bottom` `width` `height` 来确定区域。
|
|
1806
|
+
*/
|
|
1807
|
+
export declare interface Scissor {
|
|
1808
|
+
/** 距离左侧 */
|
|
1809
|
+
left: number;
|
|
1810
|
+
/** 距离下侧 */
|
|
1811
|
+
bottom: number;
|
|
1812
|
+
/** 宽度 */
|
|
1813
|
+
width: number;
|
|
1814
|
+
/** 高度 */
|
|
1815
|
+
height: number;
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
/**
|
|
1819
|
+
* 状态
|
|
1820
|
+
* @description
|
|
1821
|
+
* ```text
|
|
1822
|
+
* 可以通过 five.state 和 five.setState 来获取和设置。
|
|
1823
|
+
* 通过 state 设置后,five 会通过合适的动画运动来达到设置的位置。
|
|
1824
|
+
* 来迎合一些通过数据驱动的场景。
|
|
1825
|
+
* ```
|
|
1826
|
+
*/
|
|
1827
|
+
export declare interface State extends Pose {
|
|
1828
|
+
/** 模态 */
|
|
1829
|
+
mode: Mode;
|
|
1830
|
+
/** 观察点序号 */
|
|
1831
|
+
panoIndex: number;
|
|
1832
|
+
}
|
|
1833
|
+
|
|
1834
|
+
/**
|
|
1835
|
+
* 监听者模式
|
|
1836
|
+
* @template T - 预设的监听回调类型
|
|
1837
|
+
* @example
|
|
1838
|
+
* ```
|
|
1839
|
+
* new Subscribe<{
|
|
1840
|
+
* "foo": [arg1: number, arg2: string],
|
|
1841
|
+
* "bar": [arg: boolean],
|
|
1842
|
+
* }>()
|
|
1843
|
+
* ```
|
|
1844
|
+
*/
|
|
1845
|
+
export declare class Subscribe<T extends SubscribeEventMap> {
|
|
1846
|
+
/**
|
|
1847
|
+
* 判断是否注册了事件
|
|
1848
|
+
* @param name - 事件类型
|
|
1849
|
+
*/
|
|
1850
|
+
hasListener(name: keyof T): boolean;
|
|
1851
|
+
/**
|
|
1852
|
+
* 注册事件
|
|
1853
|
+
* @param name - 事件类型
|
|
1854
|
+
* @param callback - 事件回调函数
|
|
1855
|
+
* @param once - 是否只执行一次
|
|
1856
|
+
* @returns 解除事件
|
|
1857
|
+
* @template K - 预设的监听事件名称
|
|
1858
|
+
* @template C - 回调函数函数上下文
|
|
1859
|
+
*/
|
|
1860
|
+
on<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>, once?: boolean): () => void;
|
|
1861
|
+
/**
|
|
1862
|
+
* 注册事件(是否只执行一次)
|
|
1863
|
+
* @param name - 事件类型
|
|
1864
|
+
* @param callback - 事件回调函数
|
|
1865
|
+
* @returns 解除事件
|
|
1866
|
+
* @template K - 预设的监听事件名称
|
|
1867
|
+
* @template C - 回调函数函数上下文
|
|
1868
|
+
*/
|
|
1869
|
+
once<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>): () => void;
|
|
1870
|
+
/**
|
|
1871
|
+
* 解除事件
|
|
1872
|
+
*
|
|
1873
|
+
* 如果 name 不传的话解除对应所有事件
|
|
1874
|
+
* 如果 name, callback 不传的话解除所有name的所有事件
|
|
1875
|
+
* @param name - 事件类型
|
|
1876
|
+
* @param callback - 事件回调函数
|
|
1877
|
+
* @template K - 预设的监听事件名称
|
|
1878
|
+
*/
|
|
1879
|
+
off<K extends keyof T>(name?: K, callback?: (...args: Parameters<T[K]>) => ReturnType<T[K]>): void;
|
|
1880
|
+
/**
|
|
1881
|
+
* 触发事件
|
|
1882
|
+
* @param name - 事件类型
|
|
1883
|
+
* @param data - 触发事件的数据
|
|
1884
|
+
* @returns canceled 是否被触发取消
|
|
1885
|
+
* @template K - 预设的监听事件名称
|
|
1886
|
+
*/
|
|
1887
|
+
emit<K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean;
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1890
|
+
export declare type SubscribeEventMap = {
|
|
1891
|
+
[name: string]: (...args: any[]) => void | boolean;
|
|
1892
|
+
};
|
|
1893
|
+
|
|
1894
|
+
export declare namespace SubscribeMixinType {
|
|
1895
|
+
export interface hasListener<T extends SubscribeEventMap> {
|
|
1896
|
+
(name: keyof T): boolean;
|
|
1897
|
+
}
|
|
1898
|
+
export interface on<T extends SubscribeEventMap> {
|
|
1899
|
+
<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>, once?: boolean): () => void;
|
|
1900
|
+
}
|
|
1901
|
+
export interface once<T extends SubscribeEventMap> {
|
|
1902
|
+
<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>): () => void;
|
|
1903
|
+
}
|
|
1904
|
+
export interface off<T extends SubscribeEventMap> {
|
|
1905
|
+
<K extends keyof T>(names?: K | K[], callback?: (...args: any[]) => any): void;
|
|
1906
|
+
}
|
|
1907
|
+
export interface emit<T extends SubscribeEventMap> {
|
|
1908
|
+
<K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean;
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
|
|
1912
|
+
/**
|
|
1913
|
+
* 图片参数
|
|
1914
|
+
*/
|
|
1915
|
+
export declare interface TextureOptions {
|
|
1916
|
+
/**
|
|
1917
|
+
* url 地址转化
|
|
1918
|
+
* @param url - 原始地址
|
|
1919
|
+
* @param options - 当前地址参数
|
|
1920
|
+
* @returns 转化后地址
|
|
1921
|
+
*/
|
|
1922
|
+
transform?: (url: string, options: ImageURLOptions) => string;
|
|
1923
|
+
/** 图片尺寸参数 尽量使用 2 的幂次 如 256 512 1024 */
|
|
1924
|
+
size?: number;
|
|
1925
|
+
/** 图片质量参数(0-100) */
|
|
1926
|
+
quality?: number;
|
|
1927
|
+
/** 图片格式参数 */
|
|
1928
|
+
format?: "jpg" | "png" | "heif" | "webp" | "avif";
|
|
1929
|
+
/** 针对 textureOptions 是否自动通过模型贴图的数量计算需要的模型贴图的尺寸 默认 true */
|
|
1930
|
+
autoResize?: boolean;
|
|
1931
|
+
}
|
|
1932
|
+
|
|
1933
|
+
export declare interface TopviewControllerCustomInitArgs extends Omit<FloorplanControllerCustomInitArgs, "defaultLongitude" | "defaultLatitude" | "maxLatitude" | "minLatitude"> {
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
export declare interface VRPanoramaControllerCustomInitArgs extends Omit<PanoramaControllerCustomInitArgs, "maxLatitude" | "minLatitude"> {
|
|
1937
|
+
}
|
|
1938
|
+
|
|
1939
|
+
export declare class Work {
|
|
1940
|
+
/** 名称 */
|
|
1941
|
+
name: string;
|
|
1942
|
+
/** 编号 */
|
|
1943
|
+
workCode: string;
|
|
1944
|
+
/** 允许访问的安全域名 */
|
|
1945
|
+
allowHosts: string[];
|
|
1946
|
+
/** 过期时间 */
|
|
1947
|
+
expire: Date;
|
|
1948
|
+
/** 初始化参数 */
|
|
1949
|
+
initial: WorkInitial;
|
|
1950
|
+
/** 模型参数 */
|
|
1951
|
+
model?: WorkModel;
|
|
1952
|
+
/** 全景点位信息 */
|
|
1953
|
+
observers: WorkObserver[];
|
|
1954
|
+
/** 数据签发人 */
|
|
1955
|
+
issuer: string;
|
|
1956
|
+
/** 原始数据 */
|
|
1957
|
+
raw: {
|
|
1958
|
+
works: string[];
|
|
1959
|
+
options: string;
|
|
1960
|
+
};
|
|
1961
|
+
/**
|
|
1962
|
+
* 解析 Work 数据
|
|
1963
|
+
* @param obj - work 数据,从如数开发者平台获取
|
|
1964
|
+
* @param options - 配置参数, 可以在此二次设置 baseURL 等参数
|
|
1965
|
+
* @param urlTransform - 配置参数, URL 解析规则
|
|
1966
|
+
* @returns - 签署过的 Work 数据结构
|
|
1967
|
+
*/
|
|
1968
|
+
static parse: typeof parseWork;
|
|
1969
|
+
constructor();
|
|
1970
|
+
toJSON(): any;
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
export declare interface WorkCubeImage {
|
|
1974
|
+
/** 全景图 up */
|
|
1975
|
+
up: string;
|
|
1976
|
+
/** 全景图 down */
|
|
1977
|
+
down: string;
|
|
1978
|
+
/** 全景图 right */
|
|
1979
|
+
right: string;
|
|
1980
|
+
/** 全景图 left */
|
|
1981
|
+
left: string;
|
|
1982
|
+
/** 全景图 front */
|
|
1983
|
+
front: string;
|
|
1984
|
+
/** 全景图 back */
|
|
1985
|
+
back: string;
|
|
1986
|
+
}
|
|
1987
|
+
|
|
1988
|
+
/** 全景图 */
|
|
1989
|
+
export declare interface WorkImage extends WorkCubeImage {
|
|
1990
|
+
/** 深度图 */
|
|
1991
|
+
depth?: string;
|
|
1992
|
+
/** 光照强度图 */
|
|
1993
|
+
luminance?: WorkCubeImage;
|
|
1994
|
+
/** 瓦片信息 */
|
|
1995
|
+
tiles?: WorkTile[];
|
|
1996
|
+
}
|
|
1997
|
+
|
|
1998
|
+
/** 初始化位姿参数 */
|
|
1999
|
+
export declare interface WorkInitial extends Omit<State, "offset"> {
|
|
2000
|
+
}
|
|
2001
|
+
|
|
2002
|
+
/** 模型数据 */
|
|
2003
|
+
export declare interface WorkModel {
|
|
2004
|
+
/** 模型文件地址 at3d / domez */
|
|
2005
|
+
file: string;
|
|
2006
|
+
/** 模型贴图文件地址 */
|
|
2007
|
+
textures: string[];
|
|
2008
|
+
/** 模型贴图文件地址的父目录 */
|
|
2009
|
+
textureBase: string;
|
|
2010
|
+
/** 是否开启 bvh 碰撞树,开启会大大加快射线碰撞的执行效率 */
|
|
2011
|
+
bvh: boolean;
|
|
2012
|
+
}
|
|
2013
|
+
|
|
2014
|
+
/** 每个点位的数据 */
|
|
2015
|
+
export declare interface WorkObserver {
|
|
2016
|
+
/** 点位序号 */
|
|
2017
|
+
panoIndex: number;
|
|
2018
|
+
/** 点位是否激活可用 */
|
|
2019
|
+
active: boolean;
|
|
2020
|
+
/** 点位是否可加载 */
|
|
2021
|
+
loadable: boolean;
|
|
2022
|
+
/** 点位全景图 */
|
|
2023
|
+
images: WorkImage;
|
|
2024
|
+
/** 点位视频 */
|
|
2025
|
+
video?: WorkVideo;
|
|
2026
|
+
/** 可以看到的相关点位序号 */
|
|
2027
|
+
visibleNodes: number[];
|
|
2028
|
+
/** 可以连通的相关点位序号 */
|
|
2029
|
+
accessibleNodes: number[];
|
|
2030
|
+
/** 点位和模型的旋转对齐关系四元数 */
|
|
2031
|
+
quaternion: THREE_2.Quaternion;
|
|
2032
|
+
/** 点位和模型的地面位置坐标关系 */
|
|
2033
|
+
standingPosition: THREE_2.Vector3;
|
|
2034
|
+
/** 点位和模型的观察点坐标关系 */
|
|
2035
|
+
position: THREE_2.Vector3;
|
|
2036
|
+
/** 点位所在楼层 */
|
|
2037
|
+
floorIndex: number;
|
|
2038
|
+
}
|
|
2039
|
+
|
|
2040
|
+
export declare interface WorkTile {
|
|
2041
|
+
level: number;
|
|
2042
|
+
size: number;
|
|
2043
|
+
up: string;
|
|
2044
|
+
down: string;
|
|
2045
|
+
right: string;
|
|
2046
|
+
left: string;
|
|
2047
|
+
front: string;
|
|
2048
|
+
back: string;
|
|
2049
|
+
}
|
|
2050
|
+
|
|
2051
|
+
/** 全景视频贴片 */
|
|
2052
|
+
export declare interface WorkVideo {
|
|
2053
|
+
/** 视频源 url */
|
|
2054
|
+
source: string;
|
|
2055
|
+
/** 视频源变化矩阵 */
|
|
2056
|
+
matrix: THREE_2.Matrix4;
|
|
2057
|
+
/** 视频源长宽尺寸 */
|
|
2058
|
+
size: THREE_2.Vector2;
|
|
2059
|
+
}
|
|
2060
|
+
|
|
2061
|
+
export { }
|