@openheart/tavio-renderer 2.2.12-without-wasm → 2.2.13-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.
@@ -1,9 +1,15 @@
1
- import { PerspectiveCamera, Vector3 } from 'three';
1
+ import { PerspectiveCamera, Vector2, Vector3 } from 'three';
2
2
  import { default as EventEmitter } from 'eventemitter3';
3
3
  interface iOrbitState {
4
4
  position: Vector3;
5
5
  target: Vector3;
6
6
  }
7
+ interface iThetaPhi {
8
+ theta: number;
9
+ phi: number;
10
+ eye?: Vector3;
11
+ eyeXZ?: Vector2;
12
+ }
7
13
  /**
8
14
  * カメラを中心に首振りや仰角方向の視線制御を可能とするカメラコントロール
9
15
  * @class
@@ -64,15 +70,16 @@ export declare class OrbitControls extends EventEmitter {
64
70
  private _quatX;
65
71
  private _quatY;
66
72
  static EVENTS: string[];
73
+ /**
74
+ * 与えられた三次元ベクトル(要正規化)から theta と phi を計算する
75
+ * @param eye - 正規化されたベクトル
76
+ */
77
+ static calcThetaPhi(eye: Vector3): iThetaPhi;
67
78
  /**
68
79
  * @constructor
69
80
  * @param camera - 制御の対象となるカメラ
70
81
  */
71
82
  constructor(camera: PerspectiveCamera);
72
- /**
73
- * 現在の視線から theta と phi を計算する
74
- */
75
- private _getTP;
76
83
  /**
77
84
  * 大きなラジアンをクランプする
78
85
  * @param value - 処理対象となる値
@@ -116,6 +123,10 @@ export declare class OrbitControls extends EventEmitter {
116
123
  * 注視点とカメラの距離を設定する
117
124
  */
118
125
  setDistance(distance: number): void;
126
+ /**
127
+ * 現在の向き(ラジアンでの緯度経度)
128
+ */
129
+ getAngle(): iThetaPhi;
119
130
  /**
120
131
  * 前後移動(相対指定)
121
132
  * @param value - 距離
@@ -59,6 +59,7 @@ interface iCameraPathOption {
59
59
  interface iCameraParameter {
60
60
  position?: number[];
61
61
  eye?: number[];
62
+ target?: number[];
62
63
  fov?: number;
63
64
  }
64
65
  /**
@@ -307,7 +308,7 @@ export declare class Core extends EventEmitter {
307
308
  /**
308
309
  * 既存の TavioMesh のインスタンスにデータを統合する
309
310
  * @param name - このメッシュの固有名
310
- * @param url - 読み込む .tavio ファイル
311
+ * @param url - 読み込む .ply ファイル
311
312
  * @param option - ロード・パース関連のオプション
312
313
  */
313
314
  concatPly(name: string, url: string, option?: iLoadingOption): Promise<void>;
@@ -320,10 +321,33 @@ export declare class Core extends EventEmitter {
320
321
  /**
321
322
  * 既存の TavioMesh のインスタンスにデータを統合する
322
323
  * @param name - このメッシュの固有名
323
- * @param url - 読み込む .tavio ファイル
324
- * @param option - ロード・パース関連のオプション
324
+ * @param url - 読み込む .splat ファイル
325
325
  */
326
326
  concatSplat(name: string, url: string): Promise<void>;
327
+ /**
328
+ * TavioMesh のインスタンスを生成し画像形式のリソースをロード、シーンに追加する
329
+ * @param name - このメッシュの固有名
330
+ * @param url - 読み込む画像ファイル
331
+ */
332
+ loadImage(name: string, url: string): Promise<void>;
333
+ /**
334
+ * 既存の TavioMesh のインスタンスにデータを統合する
335
+ * @param name - このメッシュの固有名
336
+ * @param url - 読み込む画像ファイル
337
+ */
338
+ concatImage(name: string, url: string): Promise<void>;
339
+ /**
340
+ * canvas 要素から TavioMesh のインスタンスを生成し、シーンに追加する
341
+ * @param name - このメッシュの固有名
342
+ * @param canvas - 処理の対象となる canvas 要素
343
+ */
344
+ loadCanvas(name: string, canvas: HTMLCanvasElement): Promise<void>;
345
+ /**
346
+ * 既存の TavioMesh のインスタンスにデータを統合する
347
+ * @param name - このメッシュの固有名
348
+ * @param canvas - 処理の対象となる canvas 要素
349
+ */
350
+ concatCanvas(name: string, canvas: HTMLCanvasElement): Promise<void>;
327
351
  /**
328
352
  * tavio 形式のリソースをロードする
329
353
  * @param name - このメッシュの固有名
@@ -376,14 +400,14 @@ export declare class Core extends EventEmitter {
376
400
  setBackgroundOpacity(opacity: number): void;
377
401
  /**
378
402
  * 名前を指定した TavioMesh に含まれるインスタンスを、インデックスで指定して動かす
379
- * ※ここでいうインデックスとは load/concat した順番を意味する整数値
403
+ * ※ここでいうインデックスとは load/concat した順番を意味する整数値(concat していない場合常に 0)
380
404
  * @param name - 対象の名前
381
405
  * @param index - インデックス
382
406
  * @param translation - 平行移動
383
407
  * @param rotation - 回転(オイラー角)
384
408
  * @param scale - 拡大縮小(XYZ で統一のスケール)
385
409
  */
386
- setTransform(name: string, index: number, translation: Vector3, rotation: Euler, scale: number): void;
410
+ setTransform(name: string, index: number, translation: iVectorLike, rotation: iVectorLike, scale: number): void;
387
411
  /**
388
412
  * 名前を指定した TavioMesh に含まれるインスタンスの、指定されたインデックスの座標変換情報を返す
389
413
  * ※ここでいうインデックスとは load/concat した順番を意味する整数値
@@ -391,6 +415,14 @@ export declare class Core extends EventEmitter {
391
415
  * @param index - インデックス
392
416
  */
393
417
  getTransform(name: string, index: number): iTransform;
418
+ /**
419
+ * 名前を指定した TavioMesh に含まれるインスタンスをビルボードとして扱うかどうかを設定する
420
+ * ※ここでいうインデックスとは load/concat した順番を意味する整数値
421
+ * @param name - 対象の名前
422
+ * @param index - インデックス
423
+ * @param flag - ビルボードとして扱うかどうか
424
+ */
425
+ setBillboard(name: string, index: number, flag: boolean): void;
394
426
  /**
395
427
  * ==========================================================================
396
428
  * general
@@ -458,22 +490,28 @@ export declare class Core extends EventEmitter {
458
490
  * @private
459
491
  */
460
492
  private _updateViewportUniforms;
493
+ /**
494
+ * 座標を焼き込むレンダリング処理を実行しソートを実行させる
495
+ * @param isForce - 強制的に実行するかどうか
496
+ */
497
+ private _renderDepthRenderTarget;
461
498
  /**
462
499
  * ==========================================================================
463
500
  * camera
464
501
  * ==========================================================================
465
502
  */
466
503
  /**
467
- * カメラの現在の座標と注視点、視野角を取得する
504
+ * カメラの現在の座標と視線方向、視野角を取得する
468
505
  */
469
506
  getCameraParameter(): iCameraParameter;
470
507
  /**
471
- * カメラの現在の座標と注視点、視野角を取得する
508
+ * カメラの現在の座標と注視点、視野角を設定する
509
+ * ※このメソッドは設定時、その値が即座に反映される
472
510
  * @param position - 設定する座標
473
- * @param eye - 設定する注視点
511
+ * @param target - 設定する注視点
474
512
  * @param fov - 設定する視野角
475
513
  */
476
- setCameraParameter(position: iVectorLike, eye: iVectorLike, fov?: number): void;
514
+ setCameraParameter(position: iVectorLike | null, target?: iVectorLike | null, fov?: number | null): void;
477
515
  /**
478
516
  * ==========================================================================
479
517
  * controls
@@ -498,23 +536,6 @@ export declare class Core extends EventEmitter {
498
536
  * orbit controls
499
537
  * ==========================================================================
500
538
  */
501
- /**
502
- * オービットコントロールの注視点の座標を取得する
503
- * @returns 注視点の座標
504
- */
505
- getOrbitTarget(): iVectorLike;
506
- /**
507
- * オービットコントロールの注視点と座標を設定する
508
- * @param position - カメラの座標
509
- * @param target - 注視点の座標
510
- * setTransferPositionのみ呼び出した場合、見た目が変わらなかったため本関数を作成。
511
- */
512
- setOrbitPositionAndTarget(position: iVectorLike, target: iVectorLike): void;
513
- /**
514
- * オービットコントロールの注視点を設定する
515
- * @param target - 注視点の座標
516
- */
517
- setOrbitTarget(target: iVectorLike): void;
518
539
  /**
519
540
  * オービットコントロールのズーム使用可否を設定する
520
541
  * @param enable - 使用可否を意味する真偽値
@@ -731,6 +752,12 @@ export declare class Core extends EventEmitter {
731
752
  * @param isForce - トランジションせず即座に強制上書きするかどうか
732
753
  */
733
754
  setTransferRelativePosition(position: iVectorLike, isForce?: boolean): void;
755
+ /**
756
+ * TransferControls に fov を設定する
757
+ * @param fov - 設定する fov
758
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
759
+ */
760
+ setTransferFov(fov: number, isForce?: boolean): void;
734
761
  /**
735
762
  * TransferControls に、現在の位置と向きに応じて移動するよう設定する
736
763
  * @param offset - 移動する量
@@ -758,12 +785,6 @@ export declare class Core extends EventEmitter {
758
785
  * @param isForce - トランジションせず即座に強制上書きするかどうか
759
786
  */
760
787
  moveTransferToBottom(scale: number, isForce?: boolean): void;
761
- /**
762
- * TransferControls に fov を設定する
763
- * @param fov - 設定する fov
764
- * @param isForce - トランジションせず即座に強制上書きするかどうか
765
- */
766
- setTransferFov(fov: number, isForce?: boolean): void;
767
788
  /**
768
789
  * ==========================================================================
769
790
  * camera collider
@@ -1,8 +1,29 @@
1
1
  import { CubeTexture, DataTexture, Euler, PerspectiveCamera, Points, RawShaderMaterial, Texture, Vector3, WebGLRenderer } from 'three';
2
2
  import { default as EventEmitter } from 'eventemitter3';
3
- import { iLoadingOption, iViewerOption, iHeaderInfo, iTransform } from './canvas';
3
+ import { iLoadingOption, iViewerOption, iHeaderInfo, iTransform, iVectorLike } from './canvas';
4
4
  import { iCollisionTarget } from '../worker/tavioWorker';
5
5
  import { InstancedMeshEX } from '../extension/InstancedMeshEX';
6
+ /**
7
+ * 画素情報として扱えるオブジェクト
8
+ */
9
+ type tImageSource = HTMLImageElement | HTMLCanvasElement;
10
+ /**
11
+ * 画像や canvas 要素をパースした結果
12
+ */
13
+ interface iSplatSource {
14
+ count: number;
15
+ position32: Float32Array;
16
+ color8: Uint8ClampedArray;
17
+ converted: Uint8Array;
18
+ min: {
19
+ alpha: number;
20
+ scale: iVectorLike;
21
+ };
22
+ max: {
23
+ alpha: number;
24
+ scale: iVectorLike;
25
+ };
26
+ }
6
27
  export declare class TavioMesh extends EventEmitter {
7
28
  private perspectiveCamera;
8
29
  private worker;
@@ -61,6 +82,7 @@ export declare class TavioMesh extends EventEmitter {
61
82
  private useWasmSort;
62
83
  private wasmSortClient;
63
84
  private isSorting;
85
+ private hasBillboard;
64
86
  private lastViewProjectionMatrix;
65
87
  private depthRenderTarget;
66
88
  private depthRenderScene;
@@ -121,6 +143,11 @@ export declare class TavioMesh extends EventEmitter {
121
143
  * @param url - 読み込む .splat ファイル
122
144
  */
123
145
  loadSplat(url: string): Promise<void>;
146
+ /**
147
+ * 画像形式のリソースをロードする
148
+ * @param url - 読み込む画像ファイル
149
+ */
150
+ loadImage(url: string): Promise<void>;
124
151
  /**
125
152
  * tavio 形式のリソースをロードする
126
153
  * @param url - 読み込む .tavio ファイル
@@ -174,6 +201,16 @@ export declare class TavioMesh extends EventEmitter {
174
201
  useGeneralData?: boolean;
175
202
  featureFlags?: number;
176
203
  }): Promise<void>;
204
+ /**
205
+ * canvas 要素からガウシアンを生成してシーンに追加する
206
+ * @param canvas - 対象となる canvas 要素
207
+ */
208
+ loadCanvas(canvas: HTMLCanvasElement): Promise<void>;
209
+ /**
210
+ * 画像や canvas 要素をパースし変換する
211
+ * @param imageSource - 対象となる画像や canvas
212
+ */
213
+ convertImageSource(imageSource: tImageSource): iSplatSource;
177
214
  /**
178
215
  * ==========================================================================
179
216
  * getter / setter
@@ -264,13 +301,30 @@ export declare class TavioMesh extends EventEmitter {
264
301
  * @param translation - 平行移動
265
302
  * @param rotation - 回転(オイラー角)
266
303
  * @param scale - 拡大縮小(XYZ で統一のスケール)
304
+ * @param force - 同時にテクスチャの内容を強制的に書き換えるかどうか
267
305
  */
268
- setTransform(index: number, translation: Vector3, rotation: Euler, scale: number): void;
306
+ setTransform(index: number, translation: Vector3, rotation: Euler, scale: number, isForce?: boolean): void;
269
307
  /**
270
308
  * 指定されたインデックスの座標変換情報を返す
271
309
  * @param index - インデックス
272
310
  */
273
311
  getTransform(index: number): iTransform;
312
+ /**
313
+ * インデックスを指定してビルボードの設定を行う
314
+ * @param index - インデックス
315
+ * @param flag - ビルボードとして扱うかどうか
316
+ */
317
+ setBillboard(index: number, flag: boolean): void;
318
+ /**
319
+ * ビルボードのための transform 情報の更新を行う
320
+ * @param camera - カメラのワールド空間上の位置
321
+ */
322
+ updateBillboard(camera: PerspectiveCamera): void;
323
+ /**
324
+ * インスタンスごとの transform 情報をテクスチャに適用し更新する
325
+ * @private
326
+ */
327
+ private _updateTransformData;
274
328
  /**
275
329
  * 自身のプロパティの状態に応じて球面調和関数に関連する uniform 変数の更新を行う
276
330
  * @private
@@ -325,6 +379,10 @@ export declare class TavioMesh extends EventEmitter {
325
379
  * setup
326
380
  * ==========================================================================
327
381
  */
382
+ /**
383
+ * データのロード前に各種フラグをセットアップする
384
+ */
385
+ setupFlags(): void;
328
386
  /**
329
387
  * tavio 形式用の worker をセットアップする
330
388
  */
@@ -56,28 +56,28 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
56
56
 
57
57
  export interface InitOutput {
58
58
  readonly memory: WebAssembly.Memory;
59
- readonly decodeTavio: (a: number, b: number, c: number) => number;
60
59
  readonly main: () => void;
61
60
  readonly registerEventHandler: (a: number) => number;
62
61
  readonly sort: (a: number, b: number, c: number) => number;
63
- readonly __wbg_intounderlyingsource_free: (a: number, b: number) => void;
64
- readonly intounderlyingsource_cancel: (a: number) => void;
65
- readonly intounderlyingsource_pull: (a: number, b: number) => number;
66
- readonly __wbg_intounderlyingbytesource_free: (a: number, b: number) => void;
62
+ readonly decodeTavio: (a: number, b: number, c: number) => number;
67
63
  readonly __wbg_intounderlyingsink_free: (a: number, b: number) => void;
64
+ readonly intounderlyingsink_abort: (a: number, b: number) => number;
65
+ readonly intounderlyingsink_close: (a: number) => number;
66
+ readonly intounderlyingsink_write: (a: number, b: number) => number;
67
+ readonly __wbg_intounderlyingbytesource_free: (a: number, b: number) => void;
68
68
  readonly intounderlyingbytesource_autoAllocateChunkSize: (a: number) => number;
69
69
  readonly intounderlyingbytesource_cancel: (a: number) => void;
70
70
  readonly intounderlyingbytesource_pull: (a: number, b: number) => number;
71
71
  readonly intounderlyingbytesource_start: (a: number, b: number) => void;
72
72
  readonly intounderlyingbytesource_type: (a: number) => number;
73
- readonly intounderlyingsink_abort: (a: number, b: number) => number;
74
- readonly intounderlyingsink_close: (a: number) => number;
75
- readonly intounderlyingsink_write: (a: number, b: number) => number;
76
- readonly __wasm_bindgen_func_elem_388: (a: number, b: number) => void;
77
- readonly __wasm_bindgen_func_elem_741: (a: number, b: number) => void;
78
- readonly __wasm_bindgen_func_elem_730: (a: number, b: number, c: number, d: number) => void;
79
- readonly __wasm_bindgen_func_elem_1624: (a: number, b: number, c: number, d: number) => void;
80
- readonly __wasm_bindgen_func_elem_400: (a: number, b: number, c: number) => void;
73
+ readonly __wbg_intounderlyingsource_free: (a: number, b: number) => void;
74
+ readonly intounderlyingsource_cancel: (a: number) => void;
75
+ readonly intounderlyingsource_pull: (a: number, b: number) => number;
76
+ readonly __wasm_bindgen_func_elem_398: (a: number, b: number) => void;
77
+ readonly __wasm_bindgen_func_elem_747: (a: number, b: number) => void;
78
+ readonly __wasm_bindgen_func_elem_737: (a: number, b: number, c: number, d: number) => void;
79
+ readonly __wasm_bindgen_func_elem_1574: (a: number, b: number, c: number, d: number) => void;
80
+ readonly __wasm_bindgen_func_elem_407: (a: number, b: number, c: number) => void;
81
81
  readonly __wbindgen_export: (a: number, b: number) => number;
82
82
  readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
83
83
  readonly __wbindgen_export3: (a: number) => void;