@openheart/tavio-renderer 2.2.9-without-wasm

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.
Files changed (32) hide show
  1. package/README.md +25 -0
  2. package/build/esm/index.js +41928 -0
  3. package/build/esm/types/animation/animationController.d.ts +133 -0
  4. package/build/esm/types/camera/cameraCollider.d.ts +54 -0
  5. package/build/esm/types/camera/cameraPath.d.ts +120 -0
  6. package/build/esm/types/camera/cameraPathControls.d.ts +73 -0
  7. package/build/esm/types/camera/cameraPathManager.d.ts +67 -0
  8. package/build/esm/types/camera/flightControls.d.ts +76 -0
  9. package/build/esm/types/camera/orbitControls.d.ts +192 -0
  10. package/build/esm/types/camera/transferControls.d.ts +122 -0
  11. package/build/esm/types/editor/selector/boxSelector.d.ts +45 -0
  12. package/build/esm/types/editor/selector/selector.d.ts +145 -0
  13. package/build/esm/types/editor/selector/sphereSelector.d.ts +45 -0
  14. package/build/esm/types/extension/InstancedMeshEX.d.ts +101 -0
  15. package/build/esm/types/global.iife.d.ts +9 -0
  16. package/build/esm/types/loader/streamLoader.d.ts +21 -0
  17. package/build/esm/types/main.d.ts +0 -0
  18. package/build/esm/types/math/easing.d.ts +18 -0
  19. package/build/esm/types/math/interpolation.d.ts +70 -0
  20. package/build/esm/types/module.d.ts +5 -0
  21. package/build/esm/types/types/global.d.ts +23 -0
  22. package/build/esm/types/utility/console.d.ts +6 -0
  23. package/build/esm/types/utility/plyDecoder.d.ts +97 -0
  24. package/build/esm/types/utility/utility.d.ts +47 -0
  25. package/build/esm/types/viewer/canvas.d.ts +1108 -0
  26. package/build/esm/types/viewer/tavioMesh.d.ts +436 -0
  27. package/build/esm/types/wasm-bindings/wasm-worker-client.d.ts +57 -0
  28. package/build/esm/types/wasm-bindings/wasm-worker.d.ts +49 -0
  29. package/build/esm/types/wasm-bindings/wasm.d.ts +5 -0
  30. package/build/esm/types/worker/splatWorker.d.ts +16 -0
  31. package/build/esm/types/worker/tavioWorker.d.ts +61 -0
  32. package/package.json +46 -0
@@ -0,0 +1,1108 @@
1
+ import { Euler, Group, Matrix4, PerspectiveCamera, Quaternion, RawShaderMaterial, Scene, Vector3, WebGLRenderTarget, WebGLRenderer, PMREMGenerator } from 'three';
2
+ import { default as EventEmitter } from 'eventemitter3';
3
+ import { iCollisionTarget } from '../worker/tavioWorker';
4
+ import { CameraPath } from '../camera/cameraPath';
5
+ import { CameraPathControls } from '../camera/cameraPathControls';
6
+ import { CameraPathManager } from '../camera/cameraPathManager';
7
+ import { FlightControls, iLatitudeLongitude } from '../camera/flightControls';
8
+ import { TransferControls } from '../camera/transferControls';
9
+ import { OrbitControls } from '../camera/orbitControls';
10
+ import { CameraCollider } from '../camera/cameraCollider';
11
+ import { ConsoleOutput } from '../utility/console';
12
+ import { iSphereSelectorOption } from '../editor/selector/sphereSelector';
13
+ import { iBoxSelectorOption } from '../editor/selector/boxSelector';
14
+ import { Selector } from '../editor/selector/selector';
15
+ import { TavioMesh } from './tavioMesh';
16
+ import { iAnimationConfig } from '../animation/animationController';
17
+ /**
18
+ * Tavio Viewer のエラーコード
19
+ */
20
+ export declare const TavioErrorCode: {
21
+ /** Float16Array 未対応環境 */
22
+ readonly FLOAT16_NOT_SUPPORTED: "E001";
23
+ };
24
+ /**
25
+ * Tavio Viewer のカスタムエラークラス
26
+ */
27
+ export declare class TavioError extends Error {
28
+ /** エラーコード */
29
+ code: string;
30
+ constructor(code: string, message: string);
31
+ }
32
+ /**
33
+ * カメラコントロールの種類
34
+ */
35
+ type tControlsType = "orbit" | "path" | "flight";
36
+ /**
37
+ * カメラコントロールの型チェック用定義
38
+ */
39
+ type tControlInstance = OrbitControls | CameraPathControls | FlightControls;
40
+ /**
41
+ * Vector3 と同様に外部データを扱うための型定義
42
+ */
43
+ export interface iVectorLike {
44
+ x: number;
45
+ y: number;
46
+ z: number;
47
+ }
48
+ /**
49
+ * カメラパスコントロールのオプション
50
+ */
51
+ interface iCameraPathOption {
52
+ attenuation?: number;
53
+ scaleX?: number;
54
+ scaleY?: number;
55
+ }
56
+ /**
57
+ * 汎用カメラパラメータ
58
+ */
59
+ interface iCameraParameter {
60
+ position?: number[];
61
+ eye?: number[];
62
+ fov?: number;
63
+ }
64
+ /**
65
+ * ビューアオプション
66
+ */
67
+ export interface iViewerOption {
68
+ usingSharedArrayBuffer?: boolean;
69
+ controlsType?: tControlsType;
70
+ gaussianScale?: number;
71
+ minimumScale?: number;
72
+ distanceEffectPoint?: number;
73
+ distanceEffectPointNear?: number;
74
+ distanceEffectBase?: number;
75
+ distanceEffectRange?: number;
76
+ distanceColorEffect?: number;
77
+ distanceColorEffectNear?: number;
78
+ effectSonar?: number;
79
+ effectSonarRange?: number;
80
+ worldOrigin?: iVectorLike;
81
+ opacityPoints?: number;
82
+ opacityAdditive?: number;
83
+ opacityMultiplier?: number;
84
+ colorTemperature?: number;
85
+ colorTint?: number;
86
+ colorContrast?: number;
87
+ colorHSV?: iVectorLike;
88
+ colorRGB?: iVectorLike;
89
+ colorBlur?: number;
90
+ colorSharpness?: number;
91
+ backgroundOpacity?: number;
92
+ disableBackground?: boolean;
93
+ consoleOutput?: boolean;
94
+ enableOrbitCursor?: boolean;
95
+ orbitCursorScale?: number;
96
+ }
97
+ /**
98
+ * セレクターの情報
99
+ */
100
+ interface iSelectorInfo {
101
+ name: string;
102
+ visible: boolean;
103
+ position?: iVectorLike;
104
+ rotation?: iVectorLike;
105
+ scale?: iVectorLike;
106
+ }
107
+ /**
108
+ * ファイルのロードオプション
109
+ */
110
+ export interface iLoadingOption {
111
+ useSphericalHarmonics?: boolean;
112
+ }
113
+ /**
114
+ * ファイル内に含まれる 3DGS の原点からの距離と割合
115
+ */
116
+ export interface iDistanceInfo {
117
+ per50?: number;
118
+ per70?: number;
119
+ per90?: number;
120
+ per100: number;
121
+ }
122
+ /**
123
+ * ファイル内のヘッダ及び頂点情報
124
+ */
125
+ export interface iHeaderInfo {
126
+ majorVersionNumber: number;
127
+ minorVersionNumber: number;
128
+ featureBits: any;
129
+ distance: iDistanceInfo;
130
+ }
131
+ /**
132
+ * ファイルに対する座標変換情報
133
+ */
134
+ export interface iTransform {
135
+ translation: Vector3;
136
+ rotation: Euler;
137
+ scale: number;
138
+ }
139
+ /**
140
+ * ビューア実装本体
141
+ */
142
+ export declare class Core extends EventEmitter {
143
+ canvas: HTMLCanvasElement;
144
+ gl: WebGL2RenderingContext;
145
+ uniforms: any;
146
+ viewerOption: iViewerOption;
147
+ meshMap: Map<string, TavioMesh>;
148
+ controlsMap: Map<string, tControlInstance>;
149
+ enableControlsMap: Map<string, boolean>;
150
+ currentControlsType: tControlsType;
151
+ transferControls: TransferControls;
152
+ selectorMap: Map<string, Selector>;
153
+ cameraColliderEnabled: boolean;
154
+ cameraCollider: CameraCollider;
155
+ cameraPathCollisionRadius: number;
156
+ cameraPathManager: CameraPathManager;
157
+ reversedCollision: boolean;
158
+ previousPosition: Vector3;
159
+ previousRotation: Quaternion;
160
+ previousFov: number;
161
+ maxDistance: number;
162
+ isInteractive: boolean;
163
+ isRendering: boolean;
164
+ startRendering: number;
165
+ isDown: boolean;
166
+ isWheel: boolean;
167
+ isLoading: boolean;
168
+ onPointerDown: (evt: PointerEvent) => void;
169
+ onPointerUp: (evt: PointerEvent) => void;
170
+ onWheel: (evt: WheelEvent) => void;
171
+ renderer: WebGLRenderer;
172
+ scene: Scene;
173
+ pmremGenerator: PMREMGenerator;
174
+ gaussianGroup: Group;
175
+ meshGroup: Group;
176
+ interfaceGroup: Group;
177
+ perspectiveCamera: PerspectiveCamera;
178
+ gaussianMaterial: RawShaderMaterial;
179
+ gaussianPickingMaterial: RawShaderMaterial;
180
+ pickingRenderTarget: WebGLRenderTarget;
181
+ pickingScene: Scene;
182
+ parameters: any;
183
+ console: ConsoleOutput;
184
+ consoleOutput: boolean;
185
+ private orbitCursor;
186
+ private orbitCursorMaterial;
187
+ private orbitCursorGeometry;
188
+ private orbitCursorEnabled;
189
+ private orbitCursorHorizontal;
190
+ private orbitCursorCenter;
191
+ private previousOrbitTarget;
192
+ private animationController;
193
+ private pathAnimationLocked;
194
+ /**
195
+ * インスタンスが発火するイベント
196
+ * ※実際には TavioMesh が発火するイベントをリレーする
197
+ */
198
+ static EVENTS: string[];
199
+ /**
200
+ * 対応する Controls 種別
201
+ */
202
+ static CONTROLS: string[];
203
+ /**
204
+ * @constructor
205
+ * @param viewerOption - ビューア実装の初期化オプション
206
+ * @throws Float16Array 未対応環境ではエラーをスローする
207
+ */
208
+ constructor(viewerOption?: iViewerOption);
209
+ /**
210
+ * ==========================================================================
211
+ * setup
212
+ * ==========================================================================
213
+ */
214
+ /**
215
+ * コンストラクタ内のセットアップ
216
+ * ※一度 dispose した場合、コンストラクタを再度実行することはできないのでこのメソッドで復帰させる
217
+ * @param viewerOption - ビューア実装の初期化オプション
218
+ */
219
+ setupOnConstructor(viewerOption?: iViewerOption): void;
220
+ /**
221
+ * 各種初期化処理を行う
222
+ * @param canvas - WebGL コンテキストを取得する対象となる canvas 要素
223
+ */
224
+ init(canvas: HTMLCanvasElement): void;
225
+ /**
226
+ * カメラコントロール・カメラコライダーをセットアップする
227
+ */
228
+ setupControls(): void;
229
+ /**
230
+ * OrbitControls をセットアップする
231
+ */
232
+ setupOrbitControls(): void;
233
+ /**
234
+ * CameraPathControls をセットアップする
235
+ */
236
+ setupCameraPathControls(): void;
237
+ /**
238
+ * FlightControls をセットアップする
239
+ */
240
+ setupFlightControls(): void;
241
+ /**
242
+ * TransferControls をセットアップする
243
+ */
244
+ setupTransferControls(): void;
245
+ /**
246
+ * CameraCollider をセットアップする
247
+ */
248
+ setupCameraCollider(): void;
249
+ /**
250
+ * セレクターをセットアップする
251
+ */
252
+ setupSelector(): void;
253
+ /**
254
+ * イベントのセットアップ
255
+ */
256
+ setupEvent(): void;
257
+ /**
258
+ * デバッグ用インターフェースのセットアップ
259
+ */
260
+ setupPane(): void;
261
+ /**
262
+ * ==========================================================================
263
+ * TavioMesh / loader
264
+ * ==========================================================================
265
+ */
266
+ /**
267
+ * TavioMesh を生成しロード前の共通処理を行う
268
+ * @private
269
+ * @param name - このメッシュの固有名
270
+ */
271
+ private _beforeLoadMesh;
272
+ /**
273
+ * TavioMesh のロード後の共通処理を行う
274
+ * @private
275
+ * @param name - 設定する名前
276
+ */
277
+ private _afterLoadMesh;
278
+ /**
279
+ * TavioMesh のインスタンスを生成し tavio 形式のリソースをロード、シーンに追加する
280
+ * @param name - このメッシュの固有名
281
+ * @param url - 読み込む .tavio ファイル
282
+ * @param option - ロード・パース関連のオプション
283
+ */
284
+ loadTavio(name: string, url: string, option?: iLoadingOption): Promise<void>;
285
+ /**
286
+ * 既存の TavioMesh のインスタンスにデータを統合する
287
+ * @param name - このメッシュの固有名
288
+ * @param url - 読み込む .tavio ファイル
289
+ * @param option - ロード・パース関連のオプション
290
+ */
291
+ concatTavio(name: string, url: string, option?: iLoadingOption): Promise<void>;
292
+ /**
293
+ * TavioMesh のインスタンスを生成し ply 形式のリソースをロード、シーンに追加する
294
+ * @param name - このメッシュの固有名
295
+ * @param url - 読み込む .ply ファイル
296
+ * @param option - ロード・パース関連のオプション
297
+ */
298
+ loadPly(name: string, url: string, option?: iLoadingOption): Promise<void>;
299
+ /**
300
+ * 既存の TavioMesh のインスタンスにデータを統合する
301
+ * @param name - このメッシュの固有名
302
+ * @param url - 読み込む .tavio ファイル
303
+ * @param option - ロード・パース関連のオプション
304
+ */
305
+ concatPly(name: string, url: string, option?: iLoadingOption): Promise<void>;
306
+ /**
307
+ * TavioMesh のインスタンスを生成し splat 形式のリソースをロード、シーンに追加する
308
+ * @param name - このメッシュの固有名
309
+ * @param url - 読み込む .splat ファイル
310
+ */
311
+ loadSplat(name: string, url: string): Promise<void>;
312
+ /**
313
+ * 既存の TavioMesh のインスタンスにデータを統合する
314
+ * @param name - このメッシュの固有名
315
+ * @param url - 読み込む .tavio ファイル
316
+ * @param option - ロード・パース関連のオプション
317
+ */
318
+ concatSplat(name: string, url: string): Promise<void>;
319
+ /**
320
+ * tavio 形式のリソースをロードする
321
+ * @param name - このメッシュの固有名
322
+ * @see {@link TavioMesh.prototype.loadTavioWasm}
323
+ */
324
+ loadTavioWasm(name: string, ...args: Parameters<typeof TavioMesh.prototype.loadTavioWasm>): Promise<void>;
325
+ /**
326
+ * ply 形式のリソースをロードする
327
+ * @param name - このメッシュの固有名
328
+ * @see {@link TavioMesh.prototype.loadPlyWasm}
329
+ */
330
+ loadPlyWasm(name: string, ...args: Parameters<typeof TavioMesh.prototype.loadPlyWasm>): Promise<void>;
331
+ /**
332
+ * tavio 形式のリソースをセーブする
333
+ * @param name - このメッシュの固有名
334
+ * @see {@link TavioMesh.prototype.saveTavioWasm}
335
+ */
336
+ saveTavioWasm(name: string, ...args: Parameters<typeof TavioMesh.prototype.saveTavioWasm>): Promise<void>;
337
+ /**
338
+ * 名前を指定してロード済み TavioMesh をシーンに追加する
339
+ * @param name - 対象の名前
340
+ */
341
+ addTavioMesh(name: string): Promise<void>;
342
+ /**
343
+ * 名前を指定してロード済み TavioMesh をシーンから取り除く
344
+ * @param name - 対象の名前
345
+ */
346
+ removeTavioMesh(name: string): Promise<void>;
347
+ /**
348
+ * 名前を指定して TavioMesh を削除・解放する
349
+ * @param name - 対象の名前
350
+ */
351
+ disposeTavioMesh(name: string): void;
352
+ /**
353
+ * 名前を指定して TavioMesh の表示・非表示を設定する
354
+ * @param name - 対象の名前
355
+ * @param visibility - 可視状態
356
+ */
357
+ setVisibilityTavioMesh(name: string, visibility: boolean): Promise<void>;
358
+ /**
359
+ * 名前を指定して TavioMesh の点描画用 Points の表示・非表示を設定する
360
+ * @param name - 対象の名前
361
+ * @param visibility - 可視状態
362
+ */
363
+ setVisibilityPoints(name: string, visibility: boolean): void;
364
+ /**
365
+ * 背景球(シーンの背景)の透明度を指定する(0.0 ~ 1.0)
366
+ * @param opacity - 透明度
367
+ */
368
+ setBackgroundOpacity(opacity: number): void;
369
+ /**
370
+ * 名前を指定した TavioMesh に含まれるインスタンスを、インデックスで指定して動かす
371
+ * ※ここでいうインデックスとは load/concat した順番を意味する整数値
372
+ * @param name - 対象の名前
373
+ * @param index - インデックス
374
+ * @param translation - 平行移動
375
+ * @param rotation - 回転(オイラー角)
376
+ * @param scale - 拡大縮小(XYZ で統一のスケール)
377
+ */
378
+ setTransform(name: string, index: number, translation: Vector3, rotation: Euler, scale: number): void;
379
+ /**
380
+ * 名前を指定した TavioMesh に含まれるインスタンスの、指定されたインデックスの座標変換情報を返す
381
+ * ※ここでいうインデックスとは load/concat した順番を意味する整数値
382
+ * @param name - 対象の名前
383
+ * @param index - インデックス
384
+ */
385
+ getTransform(name: string, index: number): iTransform;
386
+ /**
387
+ * ==========================================================================
388
+ * general
389
+ * ==========================================================================
390
+ */
391
+ /**
392
+ * ウィンドウのリサイズ処理
393
+ * @param width - 幅
394
+ * @param height - 高さ
395
+ * @param start - リサイズと同時に描画を開始するかどうか
396
+ */
397
+ resize(width?: number, height?: number, start?: boolean): void;
398
+ /**
399
+ * 描画を開始する
400
+ */
401
+ start(): void;
402
+ /**
403
+ * 描画処理
404
+ * @private
405
+ */
406
+ private _render;
407
+ /**
408
+ * DevicePixelRatio をレンダラーに対して設定する
409
+ * @param value - 設定する DevicePixelRatio
410
+ */
411
+ setDevicePixelRatio(value: number): void;
412
+ /**
413
+ * 現在設定されている DevicePixelRatio を返す
414
+ */
415
+ getDevicePixelRatio(): number;
416
+ /**
417
+ * インタラクティブに描画するモードを用いるかどうかを設定する
418
+ * @param isInteractive - 有効とするかどうか
419
+ */
420
+ setInteractiveMode(isInteractive: boolean): void;
421
+ /**
422
+ * 球面調和関数の交流成分を利用するかどうかを設定する
423
+ * @param isUsing - 利用するかどうかのフラグ
424
+ */
425
+ setUsingSphericalHarmonics(isUsing: boolean): void;
426
+ /**
427
+ * 球面調和関数の交流成分に対する係数を設定する(0.0 ~ 1.0)
428
+ * @param intensity - 0.0 で交流成分の効果が完全に不可視化される
429
+ */
430
+ setSphericalHarmonicsIntensity(intensity: number): void;
431
+ /**
432
+ * ファイルに含まれるヘッダ情報及び頂点の情報などを取得する
433
+ */
434
+ getHeaderInfo(name: string): iHeaderInfo;
435
+ /**
436
+ * フレームバッファに 3DGS のワールド座標をレンダリングし指定されたスクリーン座標から取得する
437
+ * @param x - 取得する X 座標(スクリーン空間を -1.0 ~ 1.0 に正規化した座標)
438
+ * @param y - 取得する Y 座標(スクリーン空間を -1.0 ~ 1.0 に正規化した座標, Y-down)
439
+ */
440
+ getWorldPositionByScreen(x: number, y: number): Promise<Float32Array>;
441
+ /**
442
+ * 各種リソースを解放する
443
+ * ※このメソッドを呼び出すと、それまで利用していた canvas は再利用できなくなる
444
+ * ※別の canvas を渡して setupOnConstructor や init、render を呼ぶことで再度描画を行うことができる
445
+ */
446
+ dispose(): void;
447
+ /**
448
+ * ビューポートの情報を uniform 変数に設定する
449
+ * @private
450
+ */
451
+ private _updateViewportUniforms;
452
+ /**
453
+ * ==========================================================================
454
+ * camera
455
+ * ==========================================================================
456
+ */
457
+ /**
458
+ * カメラの現在の座標と注視点、視野角を取得する
459
+ */
460
+ getCameraParameter(): iCameraParameter;
461
+ /**
462
+ * カメラの現在の座標と注視点、視野角を取得する
463
+ * @param position - 設定する座標
464
+ * @param eye - 設定する注視点
465
+ * @param fov - 設定する視野角
466
+ */
467
+ setCameraParameter(position: iVectorLike, eye: iVectorLike, fov?: number): void;
468
+ /**
469
+ * ==========================================================================
470
+ * controls
471
+ * ==========================================================================
472
+ */
473
+ /**
474
+ * Controls タイプを設定する
475
+ * @param type - 設定するタイプを意味する文字列
476
+ */
477
+ setControlsType(type: tControlsType): void;
478
+ /**
479
+ * 現在のカメラコントロールを意味する文字列を返す
480
+ */
481
+ getControlsType(): tControlsType;
482
+ /**
483
+ * FlightControls と TransferControls に減衰を設定する
484
+ * @param attenuation - 減衰(0.0 以上 ~ 1.0 未満)
485
+ */
486
+ setControlsAttenuation(attenuation: number): void;
487
+ /**
488
+ * ==========================================================================
489
+ * orbit controls
490
+ * ==========================================================================
491
+ */
492
+ /**
493
+ * オービットコントロールの注視点の座標を取得する
494
+ * @returns 注視点の座標
495
+ */
496
+ getOrbitTarget(): iVectorLike;
497
+ /**
498
+ * オービットコントロールの注視点と座標を設定する
499
+ * @param position - カメラの座標
500
+ * @param target - 注視点の座標
501
+ * setTransferPositionのみ呼び出した場合、見た目が変わらなかったため本関数を作成。
502
+ */
503
+ setOrbitPositionAndTarget(position: iVectorLike, target: iVectorLike): void;
504
+ /**
505
+ * オービットコントロールの注視点を設定する
506
+ * @param target - 注視点の座標
507
+ */
508
+ setOrbitTarget(target: iVectorLike): void;
509
+ /**
510
+ * オービットコントロールのズーム使用可否を設定する
511
+ * @param enable - 使用可否を意味する真偽値
512
+ */
513
+ setOrbitEnableZoom(enable: boolean): void;
514
+ /**
515
+ * オービットコントロールの平行移動使用可否を設定する
516
+ * @param enable - 使用可否を意味する真偽値
517
+ */
518
+ setOrbitEnablePan(enable: boolean): void;
519
+ /**
520
+ * オービットコントロールの可動範囲制限の可否を設定する
521
+ * @param enable - 使用可否を意味する真偽値
522
+ */
523
+ setOrbitEnableLimit(enable: boolean): void;
524
+ /**
525
+ * オービットコントロールの注視点と座標の距離を取得する
526
+ * @returns 注視点と座標の距離
527
+ */
528
+ getOrbitDistance(): number;
529
+ /**
530
+ * オービットコントロールの注視点から位置までの距離を設定する
531
+ * @param distance - 設定する距離
532
+ */
533
+ setOrbitDistance(distance: number): void;
534
+ /**
535
+ * オービットコントロールのピッチとヨーを相対的に移動する
536
+ * @param pitch - ピッチ角度の変化量(ラジアン)
537
+ * @param yaw - ヨー角度の変化量(ラジアン)
538
+ */
539
+ setOrbitRelativeRotation(pitch: number, yaw: number): void;
540
+ /**
541
+ * オービットコントロールのドリー(前後移動)を相対的に設定する
542
+ * @param value - 設定する値
543
+ */
544
+ setOrbitRelativeDollyOut(value: number): void;
545
+ /**
546
+ * オービットコントロールの上下の回転を相対的に設定する
547
+ * @param value - 設定する値
548
+ */
549
+ setOrbitRelativeRotateUp(value: number): void;
550
+ /**
551
+ * オービットコントロールの左右の回転を相対的に設定する
552
+ * @param value - 設定する値
553
+ */
554
+ setOrbitRelativeRotateLeft(value: number): void;
555
+ /**
556
+ * オービットコントロールの上下の移動を相対的に設定する
557
+ * @param value - 設定する値
558
+ */
559
+ setOrbitRelativeTranslateUp(value: number): void;
560
+ /**
561
+ * オービットコントロールの左右の移動を相対的に設定する
562
+ * @param value - 設定する値
563
+ */
564
+ setOrbitRelativeTranslateLeft(value: number): void;
565
+ /**
566
+ * オービットコントロールへポインターが押下中かどうかを設定する
567
+ * @param isDown - 設定する値
568
+ */
569
+ setOrbitPointerDown(isDown: boolean): void;
570
+ /**
571
+ * オービットコントロールの範囲外へはみ出すことができる範囲を設定する
572
+ * @param value - 設定する値
573
+ */
574
+ setOrbitOverflow(value: number): void;
575
+ /**
576
+ * オービットコントロールの北緯方向の可動範囲を設定する
577
+ * @param value - 設定する値
578
+ */
579
+ setOrbitUpLimit(value: number): void;
580
+ /**
581
+ * オービットコントロールの南緯方向の可動範囲を設定する
582
+ * @param value - 設定する値
583
+ */
584
+ setOrbitDownLimit(value: number): void;
585
+ /**
586
+ * オービットコントロールの西経方向の可動範囲を設定する
587
+ * @param value - 設定する値
588
+ */
589
+ setOrbitLeftLimit(value: number): void;
590
+ /**
591
+ * オービットコントロールの西経方向の可動範囲を設定する
592
+ * @param value - 設定する値
593
+ */
594
+ setOrbitRightLimit(value: number): void;
595
+ /**
596
+ * ==========================================================================
597
+ * camera path controls
598
+ * ==========================================================================
599
+ */
600
+ /**
601
+ * カメラパスを生成して返す
602
+ * @param position - カメラの座標({x, y, z} のオブジェクト、または [x, y, z] の数値の配列)の配列
603
+ * @param target - 注視点の座標({x, y, z} のオブジェクト、または [x, y, z] の数値の配列)の配列
604
+ * @param debug - デバッグモードをオンにすると、各点とその補間後の軌跡がシーンに追加される
605
+ */
606
+ createCameraPath(position: iVectorLike[] | number[][], target: iVectorLike[] | number[][], debug?: boolean): CameraPath;
607
+ /**
608
+ * カメラパスが有効な場合、指定された時間を設定し更新する
609
+ * @param time - 設定する時間(0.0 ~ 1.0)
610
+ */
611
+ updateCameraPath(time: number): void;
612
+ /**
613
+ * カメラパスを設定する
614
+ * @deprecated このメソッドは廃止されました。addCameraPath(name, path) と selectCameraPath(name) を使用してください。
615
+ * @param path - 設定する CameraPath
616
+ */
617
+ setCameraPath(path: CameraPath): void;
618
+ /**
619
+ * カメラパスを名前で追加する
620
+ * @param name - カメラパスの名前
621
+ * @param path - 追加する CameraPath
622
+ */
623
+ addCameraPath(name: string, path: CameraPath): void;
624
+ /**
625
+ * カメラパスを名前で削除する
626
+ * @param name - 削除するカメラパスの名前
627
+ */
628
+ removeCameraPath(name: string): void;
629
+ /**
630
+ * アクティブなカメラパスを選択する
631
+ * @param name - 選択するカメラパスの名前
632
+ */
633
+ selectCameraPath(name: string): void;
634
+ /**
635
+ * 現在アクティブなカメラパスを取得する
636
+ * @returns アクティブなカメラパス、または null
637
+ */
638
+ getActiveCameraPath(): CameraPath | null;
639
+ /**
640
+ * すべてのカメラパス名を取得する
641
+ * @returns カメラパス名の配列
642
+ */
643
+ getPathNames(): string[];
644
+ /**
645
+ * カメラパスのオプションを設定する
646
+ * @param option - カメラパスに設定するオプション
647
+ */
648
+ setCameraPathOption(option: iCameraPathOption): void;
649
+ /**
650
+ * カメラパスのインタラクション用の座標を設定する
651
+ * @param x - 設定する X 座標(スクリーン空間を -1.0 ~ 1.0 に正規化した座標)
652
+ * @param y - 設定する Y 座標(スクリーン空間を -1.0 ~ 1.0 に正規化した座標, Y-down)
653
+ */
654
+ setCameraPathInteraction(x: number, y: number): void;
655
+ /**
656
+ * カメラパスの可動領域(カプセル型)の半径を設定する
657
+ * @param radius - 設定する半径
658
+ */
659
+ setCameraPathCollisionRadius(radius: number): void;
660
+ /**
661
+ * ==========================================================================
662
+ * flight controls
663
+ * ==========================================================================
664
+ */
665
+ /**
666
+ * FlightControls に緯度を設定する
667
+ * @param latitude - 緯度(-90 ~ 90)
668
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
669
+ */
670
+ setFlightLatitude(latitude: number, isForce?: boolean): void;
671
+ /**
672
+ * FlightControls に経度を設定する
673
+ * @param longitude - 経度(0 ~ 360)
674
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
675
+ */
676
+ setFlightLongitude(longitude: number, isForce?: boolean): void;
677
+ /**
678
+ * FlightControls に緯度を相対的に設定する
679
+ * @param latitude - 相対値
680
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
681
+ */
682
+ setFlightRelativeLatitude(latitude: number, isForce?: boolean): void;
683
+ /**
684
+ * FlightControls に経度を相対的に設定する
685
+ * @param longitude - 相対値
686
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
687
+ */
688
+ setFlightRelativeLongitude(longitude: number, isForce?: boolean): void;
689
+ /**
690
+ * FlightControls から緯度経度を取得する
691
+ */
692
+ getFlightParameter(): iLatitudeLongitude;
693
+ /**
694
+ * ==========================================================================
695
+ * transfer controls
696
+ * ==========================================================================
697
+ */
698
+ /**
699
+ * TransferControls に位置を設定する
700
+ * @param position - 位置
701
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
702
+ */
703
+ setTransferPosition(position: iVectorLike, isForce?: boolean): void;
704
+ /**
705
+ * TransferControls に位置を相対的に設定する
706
+ * @param position - 相対値
707
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
708
+ */
709
+ setTransferRelativePosition(position: iVectorLike, isForce?: boolean): void;
710
+ /**
711
+ * TransferControls に、現在の位置と向きに応じて移動するよう設定する
712
+ * @param offset - 移動する量
713
+ * @param scale - 移動するスケール
714
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
715
+ */
716
+ moveTransferByDirection(offset: iVectorLike, scale: number, isForce?: boolean): void;
717
+ /**
718
+ * TransferControls に、現在の位置と向きに応じて水平に移動するよう設定する
719
+ * @param x - 右を正とした横方向
720
+ * @param y - 奥を正とした前後方向
721
+ * @param scale - 移動するスケール
722
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
723
+ */
724
+ moveTransferByHorizontalDirection(x: number, y: number, scale: number, isForce?: boolean): void;
725
+ /**
726
+ * TransferControls に、XZ 平面に対して上昇するよう設定する
727
+ * @param scale - 移動するスケール
728
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
729
+ */
730
+ moveTransferToTop(scale: number, isForce?: boolean): void;
731
+ /**
732
+ * TransferControls に、XZ 平面に対して下降するよう設定する
733
+ * @param scale - 移動するスケール
734
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
735
+ */
736
+ moveTransferToBottom(scale: number, isForce?: boolean): void;
737
+ /**
738
+ * TransferControls に fov を設定する
739
+ * @param fov - 設定する fov
740
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
741
+ */
742
+ setTransferFov(fov: number, isForce?: boolean): void;
743
+ /**
744
+ * ==========================================================================
745
+ * camera collider
746
+ * ==========================================================================
747
+ */
748
+ /**
749
+ * カメラコライダーの有効・無効を設定する
750
+ * @param enabled - 有効化するかどうか
751
+ */
752
+ setCameraColliderEnabled(enabled: boolean): void;
753
+ /**
754
+ * カメラコライダーの有効・無効状態を取得する
755
+ * @returns カメラコライダーが有効かどうか
756
+ */
757
+ getCameraColliderEnabled(): boolean;
758
+ /**
759
+ * ==========================================================================
760
+ * shader effects
761
+ * ==========================================================================
762
+ */
763
+ /**
764
+ * 点描画用の Points に対して uniform 変数の値を設定する
765
+ * ※あくまでも private なメソッドであり、値設定後に自動で start() はコールされない
766
+ * @private
767
+ * @param uniforms - 設定する値を定義したオブジェクト
768
+ */
769
+ private _setPointUniforms;
770
+ /**
771
+ * ガウシアンの大きさの基本係数を設定する
772
+ * @param value - 設定する係数(0.0 to 1.0)
773
+ */
774
+ setGaussianScale(value: number): void;
775
+ /**
776
+ * 距離に応じたガウシアンの大きさにおける最小値を設定する
777
+ * @param value - 設定する係数(0.0 to 1.0)
778
+ */
779
+ setEffectMinimumScale(value: number): void;
780
+ /**
781
+ * 距離に応じたガウシアンの大きさ係数を設定する
782
+ * @param value - 設定する係数(0.0 to 1.0)
783
+ */
784
+ setEffectDistanceBase(value: number): void;
785
+ /**
786
+ * 距離に応じたガウシアンの範囲係数を設定する
787
+ * @param value - 設定する係数(0.0 < n <= 1.0)
788
+ */
789
+ setEffectDistanceRange(value: number): void;
790
+ /**
791
+ * シェーダーで使用するワールド原点を設定する
792
+ * @param x - X座標
793
+ * @param y - Y座標
794
+ * @param z - Z座標
795
+ */
796
+ setWorldOrigin(x: number, y: number, z: number): void;
797
+ /**
798
+ * シェーダ上で作用する加減算アルファ値を設定する
799
+ * @param alpha - アルファ(適切な範囲はおよそ -3.0 ~ 3.0)
800
+ */
801
+ setOpacityAdditive(alpha: number): void;
802
+ /**
803
+ * シェーダ上で作用する乗算アルファ値を設定する
804
+ * @param alpha - アルファ(適切な範囲はおよそ -3.0 ~ 3.0)
805
+ */
806
+ setOpacityMultiplier(alpha: number): void;
807
+ /**
808
+ * 点描画用の Points に対して距離に応じたエフェクトの範囲係数を設定する(外側)
809
+ * @param value - 設定する係数(0.0 < n <= 1.0)
810
+ */
811
+ setEffectDistancePoints(value: number): void;
812
+ /**
813
+ * 点描画用の Points に対して距離に応じたエフェクトの範囲係数を設定する(内側)
814
+ * @param value - 設定する係数(0.0 < n <= 1.0)
815
+ */
816
+ setEffectDistanceNearPoints(value: number): void;
817
+ /**
818
+ * 色エフェクトの範囲を設定する(外側)
819
+ * @param value - 設定する係数(0.0 < n <= 1.0)
820
+ */
821
+ setEffectDistanceColor(value: number): void;
822
+ /**
823
+ * 色エフェクトの範囲を設定する(内側)
824
+ * @param value - 設定する係数(0.0 < n <= 1.0)
825
+ */
826
+ setEffectDistanceColorNear(value: number): void;
827
+ /**
828
+ * ソナーエフェクトを設定する(外側)
829
+ * @param value - 設定する係数(0.0 < n <= 1.0)
830
+ */
831
+ setEffectSonar(value: number): void;
832
+ /**
833
+ * ソナーエフェクトの範囲を設定する
834
+ * @param value - 設定する範囲(0.0 < n <= 1.0)
835
+ */
836
+ setEffectSonarRange(value: number): void;
837
+ /**
838
+ * 点描画用の Points に対してアルファを設定する
839
+ * @param alpha - アルファ(0.0 ~ 1.0)
840
+ */
841
+ setOpacityPoints(alpha: number): void;
842
+ /**
843
+ * シェーダ上で作用する色温度を設定する
844
+ * @param temperature - 色温度(適切な範囲はおよそ -1.0 ~ 1.0)
845
+ */
846
+ setColorTemperature(temperature: number): void;
847
+ /**
848
+ * シェーダ上で作用するティントを設定する
849
+ * @param tint - ティント(適切な範囲はおよそ -1.0 ~ 1.0)
850
+ */
851
+ setColorTint(tint: number): void;
852
+ /**
853
+ * シェーダ上で作用するコントラストを設定する
854
+ * @param contrast - コントラスト(適切な範囲はおよそ 0.0 ~ 1.0)
855
+ */
856
+ setColorContrast(contrast: number): void;
857
+ /**
858
+ * シェーダ上で作用する HSV を設定する
859
+ * @param hsv - 変換に用いる係数を Vector3 で表したもの
860
+ */
861
+ setHSVColor(hsv: iVectorLike): void;
862
+ /**
863
+ * シェーダ上で作用する RGB を設定する
864
+ * @param rgb - 変換に用いる係数を Vector3 で表したもの(rgb-R, rgb-G, rgb-B)
865
+ */
866
+ setColorRGB(rgb: iVectorLike): void;
867
+ /**
868
+ * シェーダ上で作用する blur を設定する
869
+ * @param blur - ガウシアン内で色をぼかす係数(適切な範囲はおよそ 0.0 ~ 1.0)
870
+ */
871
+ setColorBlur(blur: number): void;
872
+ /**
873
+ * シェーダ上で作用する sharpness を設定する
874
+ * @param sharpness - ガウシアン内で色を強調する係数(適切な範囲はおよそ 0.0 ~ 1.0)
875
+ */
876
+ setColorSharpness(sharpness: number): void;
877
+ /**
878
+ * ==========================================================================
879
+ * animation
880
+ * ==========================================================================
881
+ */
882
+ /**
883
+ * アニメーションがアクティブかどうかを返す
884
+ * @returns アニメーションがアクティブかどうか
885
+ */
886
+ isAnimating(): boolean;
887
+ /**
888
+ * 点描画の開花効果をアニメーションする
889
+ * @param duration - アニメーションの継続時間(ミリ秒)
890
+ */
891
+ startBloomPoints(duration: number): void;
892
+ /**
893
+ * 点描画からガウシアンへの溶解効果をアニメーションする
894
+ * @param duration - アニメーションの継続時間(ミリ秒)
895
+ */
896
+ startDissolveToGaussian(duration: number): void;
897
+ /**
898
+ * ソナー波効果をアニメーションする
899
+ * @param duration - アニメーションの継続時間(ミリ秒)
900
+ */
901
+ startSonarWave(duration: number): void;
902
+ /**
903
+ * カメラパスをアニメーションする
904
+ * @param name - カメラパスの名前
905
+ * @param duration - アニメーションの継続時間(ミリ秒)
906
+ */
907
+ animatePath(name: string, duration: number): void;
908
+ /**
909
+ * アニメーション用の距離情報を設定する
910
+ * @param mainDistance - メインの範囲の距離(実際の距離値、distance50やdistance70など、nullの場合は距離マッピングを無効化)
911
+ * @param remainingDistance - 残りの範囲の距離(実際の距離値、effectDistanceMaxと同じ、通常はdistance100、nullの場合は距離マッピングを無効化)
912
+ * @param splitPoint - 分割点(0.0~1.0、デフォルト0.8。progressがこの値まででmainDistance、それ以降でremainingDistanceまで)
913
+ * @note mainDistanceまたはremainingDistanceがnullの場合、距離マッピングは無効化され、progressがそのまま使用されます
914
+ * @deprecated setAnimationConfig を使用してください
915
+ */
916
+ setDistanceInfoForAnimation(mainDistance: number | null, remainingDistance: number | null, splitPoint?: number): void;
917
+ /**
918
+ * アニメーションの最大描画距離を取得する
919
+ * @returns 最大描画距離(0.0~1.0)
920
+ * @deprecated getAnimationConfig を使用してください
921
+ */
922
+ getMaxRenderDistanceForAnimation(): number;
923
+ /**
924
+ * アニメーションの最大描画距離を設定する
925
+ * progressが1.0に達したときにこの値がゴールとなる
926
+ * @param value - 最大描画距離(0.0~1.0)
927
+ * @deprecated setAnimationConfig を使用してください
928
+ */
929
+ setMaxRenderDistanceForAnimation(value: number): void;
930
+ /**
931
+ * アニメーション設定を一括で取得する
932
+ * @returns 現在のアニメーション設定
933
+ */
934
+ getAnimationConfig(): iAnimationConfig;
935
+ /**
936
+ * アニメーション設定を一括で設定する
937
+ * @param config - アニメーション設定オブジェクト
938
+ * @example
939
+ * // 最大描画距離のみ設定
940
+ * tvv.setAnimationConfig({ maxRenderDistance: 0.5 });
941
+ *
942
+ * // 距離マッピングと最大描画距離を設定
943
+ * tvv.setAnimationConfig({
944
+ * maxRenderDistance: 0.5,
945
+ * mainDistance: 50,
946
+ * remainingDistance: 100,
947
+ * splitPoint: 0.8
948
+ * });
949
+ */
950
+ setAnimationConfig(config: iAnimationConfig): void;
951
+ /**
952
+ * ==========================================================================
953
+ * collision
954
+ * ==========================================================================
955
+ */
956
+ /**
957
+ * セレクターから球の衝突判定を生成する
958
+ * @private
959
+ * @param selector - 対象となるセレクター
960
+ */
961
+ private _createCollisionSphereFromSelector;
962
+ /**
963
+ * セレクターから箱の衝突判定を生成する
964
+ * @private
965
+ * @param selector - 対象となるセレクター
966
+ */
967
+ private _createCollisionBoxFromSelector;
968
+ /**
969
+ * 衝突判定を設定する
970
+ * @param collision - 設定する衝突判定、またはその配列
971
+ */
972
+ setCollision(collision: iCollisionTarget | iCollisionTarget[]): void;
973
+ /**
974
+ * 現在の衝突判定を解除する
975
+ */
976
+ resetCollision(): void;
977
+ /**
978
+ * 現在選択しているガウシアンを削除状態とする
979
+ */
980
+ deleteSelectedGaussian(): void;
981
+ /**
982
+ * 削除状態を一世代前に戻す
983
+ */
984
+ undoDeletedGaussian(): void;
985
+ /**
986
+ * すべての削除状態をリセットする
987
+ */
988
+ resetDeletedGaussian(): void;
989
+ /**
990
+ * セレクターによる衝突判定の反転フラグを設定する
991
+ * @param reversed - 設定する反転属性
992
+ */
993
+ setCollisionReversed(reversed: boolean): void;
994
+ /**
995
+ * 名前を指定してセレクターで衝突判定を行う
996
+ * @param name - 対象となるセレクターの名前
997
+ */
998
+ checkCollisionBySelector(name: string): void;
999
+ /**
1000
+ * 名前を複数(配列で)指定して対象のセレクターで衝突判定を行う
1001
+ * @param names - 対象となるセレクターの名前の配列
1002
+ */
1003
+ checkCollisionBySelectors(names: string[]): void;
1004
+ /**
1005
+ * 現在追加されているすべてのセレクターで衝突判定を行う
1006
+ */
1007
+ checkCollisionByAllSelectors(): void;
1008
+ /**
1009
+ * 球の衝突判定パラメータ(Worker に渡すフォーマット)を生成する
1010
+ * @param radius - 半径
1011
+ * @param position - ワールド空間における位置
1012
+ * @param scale - ワールド空間における拡大縮小(スケール)
1013
+ * @param inverseMatrix - ワールド変換の逆行列
1014
+ * @param reversed - 判定の反転(球に内包されている状態を規定とし、それを反転するかどうか)
1015
+ */
1016
+ createCollisionSphere(radius: number, position: iVectorLike, scale: iVectorLike, inverseMatrix: Matrix4, reversed?: boolean): iCollisionTarget;
1017
+ /**
1018
+ * 箱の衝突判定パラメータ(Worker に渡すフォーマット)を生成する
1019
+ * @param width - 一辺の幅
1020
+ * @param position - ワールド空間における位置
1021
+ * @param scale - ワールド空間における拡大縮小(スケール)
1022
+ * @param inverseMatrix - ワールド変換の逆行列
1023
+ * @param reversed - 判定の反転(球に内包されている状態を規定とし、それを反転するかどうか)
1024
+ */
1025
+ createCollisionBox(width: number, position: iVectorLike, scale: iVectorLike, inverseMatrix: Matrix4, reversed?: boolean): iCollisionTarget;
1026
+ /**
1027
+ * ==========================================================================
1028
+ * selector
1029
+ * ==========================================================================
1030
+ */
1031
+ /**
1032
+ * すべての生成済みセレクターの諸情報を返す
1033
+ */
1034
+ getAllSelectorInfo(): iSelectorInfo[];
1035
+ /**
1036
+ * 名前を指定してセレクターの可視性を設定する
1037
+ * @param name - 設定するセレクターの名前
1038
+ * @param visible - 設定する可視性
1039
+ */
1040
+ setSelectorVisible(name: string, visible: boolean): void;
1041
+ /**
1042
+ * 名前を指定してセレクターを平行移動モードにする
1043
+ * @param name - 設定するセレクターの名前
1044
+ */
1045
+ setSelectorModeTranslate(name: string): void;
1046
+ /**
1047
+ * 名前を指定してセレクターを拡大縮小モードにする
1048
+ * @param name - 設定するセレクターの名前
1049
+ */
1050
+ setSelectorModeScale(name: string): void;
1051
+ /**
1052
+ * 名前を指定してセレクターを回転モードにする
1053
+ * @param name - 設定するセレクターの名前
1054
+ */
1055
+ setSelectorModeRotate(name: string): void;
1056
+ /**
1057
+ * 名前を指定してセレクターの位置を設定する
1058
+ * @param name - 設定するセレクターの名前
1059
+ * @param position - 設定する位置
1060
+ */
1061
+ setSelectorPosition(name: string, position: iVectorLike): void;
1062
+ /**
1063
+ * 名前を指定してセレクターの回転を設定する
1064
+ * @param name - 設定するセレクターの名前
1065
+ * @param rotation - 設定する回転(Euler)
1066
+ */
1067
+ setSelectorRotation(name: string, rotation: iVectorLike): void;
1068
+ /**
1069
+ * 名前を指定してセレクターのスケールを設定する
1070
+ * @param name - 設定するセレクターの名前
1071
+ * @param position - 設定するスケール
1072
+ */
1073
+ setSelectorScale(name: string, scale: iVectorLike): void;
1074
+ /**
1075
+ * 名前を指定してセレクターを削除する
1076
+ * @param name - 削除するセレクターの名前
1077
+ */
1078
+ deleteSelector(name: string): void;
1079
+ /**
1080
+ * 名前を指定して球のセレクターを追加する(既定の状態では visible が false である点に注意)
1081
+ * @param name - 追加するセレクターに付与する名前
1082
+ * @param option - セレクターに対するオプション
1083
+ */
1084
+ addSphereSelector(name: string, option?: iSphereSelectorOption): void;
1085
+ /**
1086
+ * 名前を指定して箱のセレクターを追加する(既定の状態では visible が false である点に注意)
1087
+ * @param name - 追加するセレクターに付与する名前
1088
+ * @param option - セレクターに対するオプション
1089
+ */
1090
+ addBoxSelector(name: string, option?: iBoxSelectorOption): void;
1091
+ /**
1092
+ * OrbitControlsの注視点カーソル機能の有効・無効を設定する
1093
+ * orbitCursorが有効のとき、カメラモードがorbitかつ注視点の座標が変化したときに自動表示される
1094
+ * @param enabled - 有効にするかどうか
1095
+ */
1096
+ enableOrbitCursor(enabled: boolean): void;
1097
+ /**
1098
+ * OrbitControlsの注視点カーソル機能が有効かどうかを取得する
1099
+ * @returns 有効かどうか
1100
+ */
1101
+ isOrbitCursorEnabled(): boolean;
1102
+ /**
1103
+ * OrbitControlsの注視点カーソルのスケールを設定する
1104
+ * @param scale - 設定するスケール値
1105
+ */
1106
+ setOrbitCursorScale(scale: number): void;
1107
+ }
1108
+ export {};