@openheart/tavio-renderer 2.2.12-without-wasm → 2.3.1-withWasm

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 - 距離
@@ -1,9 +1,13 @@
1
- declare module '*.vert' {
2
- const content: any;
1
+ declare module '*.vert?raw' {
2
+ const content: string;
3
3
  export default content;
4
4
  }
5
- declare module '*.frag' {
6
- const content: any;
5
+ declare module '*.frag?raw' {
6
+ const content: string;
7
+ export default content;
8
+ }
9
+ declare module '*.glsl?raw' {
10
+ const content: string;
7
11
  export default content;
8
12
  }
9
13
 
@@ -14,6 +14,7 @@ import { iBoxSelectorOption } from '../editor/selector/boxSelector';
14
14
  import { Selector } from '../editor/selector/selector';
15
15
  import { TavioMesh } from './tavioMesh';
16
16
  import { iAnimationConfig } from '../animation/animationController';
17
+ import { iMaterialOption } from './materialGenerator';
17
18
  /**
18
19
  * Tavio Viewer のエラーコード
19
20
  */
@@ -59,6 +60,7 @@ interface iCameraPathOption {
59
60
  interface iCameraParameter {
60
61
  position?: number[];
61
62
  eye?: number[];
63
+ target?: number[];
62
64
  fov?: number;
63
65
  }
64
66
  /**
@@ -94,6 +96,13 @@ export interface iViewerOption {
94
96
  enableOrbitCursor?: boolean;
95
97
  orbitCursorScale?: number;
96
98
  }
99
+ /**
100
+ * ビューアのマテリアルオプション
101
+ */
102
+ export interface iViewerMaterialOption {
103
+ materialOption: iMaterialOption | iMaterialOption[];
104
+ isDebug?: boolean;
105
+ }
97
106
  /**
98
107
  * セレクターの情報
99
108
  */
@@ -208,6 +217,32 @@ export declare class Core extends EventEmitter {
208
217
  * 対応する Controls 種別
209
218
  */
210
219
  static CONTROLS: string[];
220
+ /**
221
+ * シェーダチャンク関連(定義は MaterialGenerator.ts 内)
222
+ */
223
+ static CHUNK_TARGET: {
224
+ readonly ANY: 0;
225
+ readonly BASIC: 1;
226
+ readonly PICKING: 2;
227
+ };
228
+ static SHADER_STAGE: {
229
+ readonly VERTEX_PRECISION: 0;
230
+ readonly VERTEX_DECLARATION: 1;
231
+ readonly VERTEX_FUNCTION: 2;
232
+ readonly VERTEX_MAIN_BEGIN: 3;
233
+ readonly VERTEX_MAIN_TRANSFORM: 4;
234
+ readonly VERTEX_MAIN_SIGMA: 5;
235
+ readonly VERTEX_MAIN_OUT: 6;
236
+ readonly VERTEX_MAIN_END: 7;
237
+ readonly FRAGMENT_PRECISION: 8;
238
+ readonly FRAGMENT_DECLARATION: 9;
239
+ readonly FRAGMENT_FUNCTION: 10;
240
+ readonly FRAGMENT_MAIN_BEGIN: 11;
241
+ readonly FRAGMENT_MAIN_IN: 12;
242
+ readonly FRAGMENT_MAIN_OUT: 13;
243
+ /** Float16Array 未対応環境 */
244
+ readonly FRAGMENT_MAIN_END: 14;
245
+ };
211
246
  /**
212
247
  * @constructor
213
248
  * @param viewerOption - ビューア実装の初期化オプション
@@ -228,8 +263,14 @@ export declare class Core extends EventEmitter {
228
263
  /**
229
264
  * 各種初期化処理を行う
230
265
  * @param canvas - WebGL コンテキストを取得する対象となる canvas 要素
266
+ * @param materialOption - シェーダチャンクなどの情報を含むマテリアルオプション
231
267
  */
232
- init(canvas: HTMLCanvasElement): void;
268
+ init(canvas: HTMLCanvasElement, materialOption?: iViewerMaterialOption): void;
269
+ /**
270
+ * マテリアルをセットアップする
271
+ * @param option - シェーダチャンクなどの情報を含むマテリアルオプション
272
+ */
273
+ setupMaterial(option?: iViewerMaterialOption): void;
233
274
  /**
234
275
  * カメラコントロール・カメラコライダーをセットアップする
235
276
  */
@@ -307,7 +348,7 @@ export declare class Core extends EventEmitter {
307
348
  /**
308
349
  * 既存の TavioMesh のインスタンスにデータを統合する
309
350
  * @param name - このメッシュの固有名
310
- * @param url - 読み込む .tavio ファイル
351
+ * @param url - 読み込む .ply ファイル
311
352
  * @param option - ロード・パース関連のオプション
312
353
  */
313
354
  concatPly(name: string, url: string, option?: iLoadingOption): Promise<void>;
@@ -320,10 +361,33 @@ export declare class Core extends EventEmitter {
320
361
  /**
321
362
  * 既存の TavioMesh のインスタンスにデータを統合する
322
363
  * @param name - このメッシュの固有名
323
- * @param url - 読み込む .tavio ファイル
324
- * @param option - ロード・パース関連のオプション
364
+ * @param url - 読み込む .splat ファイル
325
365
  */
326
366
  concatSplat(name: string, url: string): Promise<void>;
367
+ /**
368
+ * TavioMesh のインスタンスを生成し画像形式のリソースをロード、シーンに追加する
369
+ * @param name - このメッシュの固有名
370
+ * @param url - 読み込む画像ファイル
371
+ */
372
+ loadImage(name: string, url: string): Promise<void>;
373
+ /**
374
+ * 既存の TavioMesh のインスタンスにデータを統合する
375
+ * @param name - このメッシュの固有名
376
+ * @param url - 読み込む画像ファイル
377
+ */
378
+ concatImage(name: string, url: string): Promise<void>;
379
+ /**
380
+ * canvas 要素から TavioMesh のインスタンスを生成し、シーンに追加する
381
+ * @param name - このメッシュの固有名
382
+ * @param canvas - 処理の対象となる canvas 要素
383
+ */
384
+ loadCanvas(name: string, canvas: HTMLCanvasElement): Promise<void>;
385
+ /**
386
+ * 既存の TavioMesh のインスタンスにデータを統合する
387
+ * @param name - このメッシュの固有名
388
+ * @param canvas - 処理の対象となる canvas 要素
389
+ */
390
+ concatCanvas(name: string, canvas: HTMLCanvasElement): Promise<void>;
327
391
  /**
328
392
  * tavio 形式のリソースをロードする
329
393
  * @param name - このメッシュの固有名
@@ -335,13 +399,49 @@ export declare class Core extends EventEmitter {
335
399
  * @param name - このメッシュの固有名
336
400
  * @see {@link TavioMesh.prototype.loadPlyWasm}
337
401
  */
338
- loadPlyWasm(name: string, ...args: Parameters<typeof TavioMesh.prototype.loadPlyWasm>): Promise<void>;
402
+ loadPlyWasm(name: string, url: string, options?: Parameters<typeof TavioMesh.prototype.loadMeshWasm>[2]): Promise<void>;
403
+ /**
404
+ * splat 形式のリソースをロードする
405
+ * @param name - このメッシュの固有名
406
+ * @see {@link TavioMesh.prototype.loadSplatWasm}
407
+ */
408
+ loadSplatWasm(name: string, url: string, options?: Parameters<typeof TavioMesh.prototype.loadMeshWasm>[2]): Promise<void>;
339
409
  /**
340
- * tavio 形式のリソースをセーブする
410
+ * spz 形式のリソースをロードする
341
411
  * @param name - このメッシュの固有名
342
- * @see {@link TavioMesh.prototype.saveTavioWasm}
412
+ * @see {@link TavioMesh.prototype.loadSpzWasm}
343
413
  */
344
- saveTavioWasm(name: string, ...args: Parameters<typeof TavioMesh.prototype.saveTavioWasm>): Promise<void>;
414
+ loadSpzWasm(name: string, url: string, options?: Parameters<typeof TavioMesh.prototype.loadMeshWasm>[2]): Promise<void>;
415
+ /**
416
+ * sog 形式のリソースをロードする
417
+ * @param name - このメッシュの固有名
418
+ * @see {@link TavioMesh.prototype.loadSogWasm}
419
+ */
420
+ loadSogWasm(name: string, url: string, options?: Parameters<typeof TavioMesh.prototype.loadMeshWasm>[2]): Promise<void>;
421
+ /**
422
+ * tavio 形式のリソースを保存する
423
+ * @param name - このメッシュの固有名
424
+ * @param fileName - 保存ファイル名
425
+ */
426
+ saveTavioWasm(name: string, fileName: string): Promise<void>;
427
+ /**
428
+ * splat 形式のリソースを保存する
429
+ * @param name - このメッシュの固有名
430
+ * @param fileName - 保存ファイル名
431
+ */
432
+ saveSplatWasm(name: string, fileName: string): Promise<void>;
433
+ /**
434
+ * ply 形式のリソースを保存する
435
+ * @param name - このメッシュの固有名
436
+ * @param fileName - 保存ファイル名
437
+ */
438
+ savePlyWasm(name: string, fileName: string): Promise<void>;
439
+ /**
440
+ * spz 形式のリソースを保存する
441
+ * @param name - このメッシュの固有名
442
+ * @param fileName - 保存ファイル名
443
+ */
444
+ saveSpzWasm(name: string, fileName: string): Promise<void>;
345
445
  /**
346
446
  * 名前を指定してロード済み TavioMesh をシーンに追加する
347
447
  * @param name - 対象の名前
@@ -376,14 +476,14 @@ export declare class Core extends EventEmitter {
376
476
  setBackgroundOpacity(opacity: number): void;
377
477
  /**
378
478
  * 名前を指定した TavioMesh に含まれるインスタンスを、インデックスで指定して動かす
379
- * ※ここでいうインデックスとは load/concat した順番を意味する整数値
479
+ * ※ここでいうインデックスとは load/concat した順番を意味する整数値(concat していない場合常に 0)
380
480
  * @param name - 対象の名前
381
481
  * @param index - インデックス
382
482
  * @param translation - 平行移動
383
483
  * @param rotation - 回転(オイラー角)
384
484
  * @param scale - 拡大縮小(XYZ で統一のスケール)
385
485
  */
386
- setTransform(name: string, index: number, translation: Vector3, rotation: Euler, scale: number): void;
486
+ setTransform(name: string, index: number, translation: iVectorLike, rotation: iVectorLike, scale: number): void;
387
487
  /**
388
488
  * 名前を指定した TavioMesh に含まれるインスタンスの、指定されたインデックスの座標変換情報を返す
389
489
  * ※ここでいうインデックスとは load/concat した順番を意味する整数値
@@ -391,6 +491,14 @@ export declare class Core extends EventEmitter {
391
491
  * @param index - インデックス
392
492
  */
393
493
  getTransform(name: string, index: number): iTransform;
494
+ /**
495
+ * 名前を指定した TavioMesh に含まれるインスタンスをビルボードとして扱うかどうかを設定する
496
+ * ※ここでいうインデックスとは load/concat した順番を意味する整数値
497
+ * @param name - 対象の名前
498
+ * @param index - インデックス
499
+ * @param flag - ビルボードとして扱うかどうか
500
+ */
501
+ setBillboard(name: string, index: number, flag: boolean): void;
394
502
  /**
395
503
  * ==========================================================================
396
504
  * general
@@ -458,22 +566,28 @@ export declare class Core extends EventEmitter {
458
566
  * @private
459
567
  */
460
568
  private _updateViewportUniforms;
569
+ /**
570
+ * 座標を焼き込むレンダリング処理を実行しソートを実行させる
571
+ * @param isForce - 強制的に実行するかどうか
572
+ */
573
+ private _renderDepthRenderTarget;
461
574
  /**
462
575
  * ==========================================================================
463
576
  * camera
464
577
  * ==========================================================================
465
578
  */
466
579
  /**
467
- * カメラの現在の座標と注視点、視野角を取得する
580
+ * カメラの現在の座標と視線方向、視野角を取得する
468
581
  */
469
582
  getCameraParameter(): iCameraParameter;
470
583
  /**
471
- * カメラの現在の座標と注視点、視野角を取得する
584
+ * カメラの現在の座標と注視点、視野角を設定する
585
+ * ※このメソッドは設定時、その値が即座に反映される
472
586
  * @param position - 設定する座標
473
- * @param eye - 設定する注視点
587
+ * @param target - 設定する注視点
474
588
  * @param fov - 設定する視野角
475
589
  */
476
- setCameraParameter(position: iVectorLike, eye: iVectorLike, fov?: number): void;
590
+ setCameraParameter(position: iVectorLike | null, target?: iVectorLike | null, fov?: number | null): void;
477
591
  /**
478
592
  * ==========================================================================
479
593
  * controls
@@ -498,23 +612,6 @@ export declare class Core extends EventEmitter {
498
612
  * orbit controls
499
613
  * ==========================================================================
500
614
  */
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
615
  /**
519
616
  * オービットコントロールのズーム使用可否を設定する
520
617
  * @param enable - 使用可否を意味する真偽値
@@ -731,6 +828,12 @@ export declare class Core extends EventEmitter {
731
828
  * @param isForce - トランジションせず即座に強制上書きするかどうか
732
829
  */
733
830
  setTransferRelativePosition(position: iVectorLike, isForce?: boolean): void;
831
+ /**
832
+ * TransferControls に fov を設定する
833
+ * @param fov - 設定する fov
834
+ * @param isForce - トランジションせず即座に強制上書きするかどうか
835
+ */
836
+ setTransferFov(fov: number, isForce?: boolean): void;
734
837
  /**
735
838
  * TransferControls に、現在の位置と向きに応じて移動するよう設定する
736
839
  * @param offset - 移動する量
@@ -758,12 +861,6 @@ export declare class Core extends EventEmitter {
758
861
  * @param isForce - トランジションせず即座に強制上書きするかどうか
759
862
  */
760
863
  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
864
  /**
768
865
  * ==========================================================================
769
866
  * camera collider
@@ -791,6 +888,11 @@ export declare class Core extends EventEmitter {
791
888
  * @param uniforms - 設定する値を定義したオブジェクト
792
889
  */
793
890
  private _setPointUniforms;
891
+ /**
892
+ * MaterialGenerator で独自に拡張した uniform 変数を更新する
893
+ * @param customUniforms - 設定・更新する uniform 変数
894
+ */
895
+ setCustomUniforms(customUniforms: any): void;
794
896
  /**
795
897
  * ガウシアンの大きさの基本係数を設定する
796
898
  * @param value - 設定する係数(0.0 to 1.0)
@@ -0,0 +1,120 @@
1
+ import { RawShaderMaterial } from 'three';
2
+ /**
3
+ * MaterialGenerator は原則として static なメソッドのみで実装しステートを持たない。
4
+ *
5
+ * ビューアの基本機能については src/shaderChunk 以下にシェーダのチャンクとなる各部品を置く。
6
+ * src/shaderChunk/common 以下にあるシェーダは 3DGS を描画するのみで色もつかない、最もシンプルな形。
7
+ * src/shaderChunk/viewer は直流成分および交流成分の計算など、ビューアの基本機能を拡張する。
8
+ * src/shaderChunk/editor はカラーグレーディングなどのエディタ用機能。
9
+ * src/shaderChunk/picking は座標をレンダリングするピッキング用のシェーダ。
10
+ *
11
+ * 独自に拡張する場合は、iMaterialOption 単体またはその配列を定義し MaterialGenerator.generate() に渡す。
12
+ * iMaterialOption.target で、ベーシックやピッキングなどのシェーダを結合する対象を(CHUNK_TARGET の論理和で)指定する。
13
+ * iMaterialOption.uniforms で拡張部分で用いる uniform 変数を定義。
14
+ * iMaterialOption.vertex / fragment でシェーダのチャンク情報を iShaderChunk 単体または配列で指定する。
15
+ *
16
+ * iShaderChunk.stage は SHADER_STAGE で定義されているシェーダ内のステージの指定。
17
+ * iShaderChunk.source はシェーダのソースコード。
18
+ *
19
+ * このファイル内で定義されているシェーダのチャンクは src/shaderChunk/common 以下にあるもののみ。
20
+ * それ以外のチャンクは canvas.ts など、ビューア実装側で付与する。
21
+ */
22
+ /**
23
+ * チャンクをどのシェーダに反映するかを表す
24
+ * これらの値は論理和を用いて組み合わせて指定できる
25
+ */
26
+ export declare const CHUNK_TARGET: {
27
+ readonly ANY: 0;
28
+ readonly BASIC: 1;
29
+ readonly PICKING: 2;
30
+ };
31
+ export type tChunkTarget = typeof CHUNK_TARGET[keyof typeof CHUNK_TARGET];
32
+ /**
33
+ * チャンクがどのステージにあたるかを表す
34
+ * 指定されたステージの末尾に処理が追加される
35
+ */
36
+ export declare const SHADER_STAGE: {
37
+ readonly VERTEX_PRECISION: 0;
38
+ readonly VERTEX_DECLARATION: 1;
39
+ readonly VERTEX_FUNCTION: 2;
40
+ readonly VERTEX_MAIN_BEGIN: 3;
41
+ readonly VERTEX_MAIN_TRANSFORM: 4;
42
+ readonly VERTEX_MAIN_SIGMA: 5;
43
+ readonly VERTEX_MAIN_OUT: 6;
44
+ readonly VERTEX_MAIN_END: 7;
45
+ readonly FRAGMENT_PRECISION: 8;
46
+ readonly FRAGMENT_DECLARATION: 9;
47
+ readonly FRAGMENT_FUNCTION: 10;
48
+ readonly FRAGMENT_MAIN_BEGIN: 11;
49
+ readonly FRAGMENT_MAIN_IN: 12;
50
+ readonly FRAGMENT_MAIN_OUT: 13;
51
+ readonly FRAGMENT_MAIN_END: 14;
52
+ };
53
+ export type tShaderStage = typeof SHADER_STAGE[keyof typeof SHADER_STAGE];
54
+ /**
55
+ * シェーダのソースコード定義
56
+ */
57
+ export interface iShaderSource {
58
+ vertex: string;
59
+ fragment: string;
60
+ }
61
+ /**
62
+ * 生成したマテリアル群
63
+ */
64
+ export interface iMaterials {
65
+ basic: RawShaderMaterial;
66
+ picking: RawShaderMaterial;
67
+ }
68
+ /**
69
+ * マテリアル生成に使われるシェーダチャンク
70
+ */
71
+ export interface iShaderChunk {
72
+ stage: tShaderStage;
73
+ source: string;
74
+ }
75
+ /**
76
+ * マテリアルを生成するためのオプション
77
+ */
78
+ export interface iMaterialOption {
79
+ target: tChunkTarget;
80
+ uniforms?: any;
81
+ vertex?: iShaderChunk | iShaderChunk[];
82
+ fragment?: iShaderChunk | iShaderChunk[];
83
+ }
84
+ /**
85
+ * 複数のシェーダチャンクを組み合わせてマテリアルを生成する
86
+ */
87
+ export declare class MaterialGenerator {
88
+ /**
89
+ * shaderChunk/common に含まれる頂点シェーダのチャンクをセットした Map オブジェクトを生成する
90
+ */
91
+ private static _createVertexMap;
92
+ /**
93
+ * shaderChunk/common に含まれるフラグメントシェーダのチャンクをセットした Map オブジェクトを生成する
94
+ */
95
+ private static _createFragmentMap;
96
+ /**
97
+ * シェーダチャンクに iMaterialOption.vertex / fragment に含まれるソースコードを結合する
98
+ * @param option - シェーダチャンクを含むマテリアルオプション
99
+ * @param vsMap - 頂点シェーダ用
100
+ * @param fsMap - フラグメントシェーダ用
101
+ * @return 各ステージに何回チャンクが結合されたかを表す配列
102
+ */
103
+ private static _mergeShaderSource;
104
+ /**
105
+ * uniform 変数用の雛形を生成する(src/shderChunk/common 以下で定義される最低限のもの)
106
+ */
107
+ private static _createUniforms;
108
+ /**
109
+ * Map オブジェクトに含まれるソースコードを結合する
110
+ * @param map - 処理の対象となる Map オブジェクト
111
+ * @param isDebug - デバッグ用にコンソールにソースコードを出力するかどうか
112
+ */
113
+ private static _createShaderSource;
114
+ /**
115
+ * マテリアルを生成する
116
+ * @param option - シェーダチャンクなどの情報を含むマテリアルオプション
117
+ * @param isDebug - デバッグ用にコンソールにソースコードを出力するかどうか
118
+ */
119
+ static generate(option?: iMaterialOption | iMaterialOption[], isDebug?: boolean): iMaterials;
120
+ }
@@ -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;
@@ -98,7 +120,7 @@ export declare class TavioMesh extends EventEmitter {
98
120
  * @param material - メッシュの生成に使うマテリアルは上の層から指定されたものを使う
99
121
  * @param pickingMaterial - メッシュの生成に使うマテリアルは上の層から指定されたものを使う
100
122
  */
101
- constructor(index: number, camera: PerspectiveCamera, material: RawShaderMaterial, pinckingMaterial: RawShaderMaterial, viewerOption: iViewerOption);
123
+ constructor(index: number, camera: PerspectiveCamera, material: RawShaderMaterial, pickingMaterial: RawShaderMaterial, viewerOption: iViewerOption);
102
124
  /**
103
125
  * ==========================================================================
104
126
  * loader
@@ -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 ファイル
@@ -142,38 +169,36 @@ export declare class TavioMesh extends EventEmitter {
142
169
  isEncodeEnabled?: boolean;
143
170
  }): Promise<void>;
144
171
  /**
145
- * ply 形式のリソースをロードする
146
- * @param url - 読み込む .ply ファイル
147
- * @param option - ロード・パース関連のオプション
148
- * @param options.decodeMode - デコードモード. "sync", "concurrent", "parallel" を指定
149
- * @param options.maxThreads - decodeMode が "parallel" のときに使用されるスレッド数の上限
150
- * @param options.maxDecodePoints - 最大デコード点数. これを超える点は読み込まれない
172
+ * 様々な形式のリソースをロードする
173
+ * @param url - 読み込むファイル
174
+ * @param format - ファイル形式
175
+ * @param options - ロード・パース関連のオプション
151
176
  * @param options.useSphericalHarmonics - 球面調和関数を使用
152
177
  */
153
- loadPlyWasm(url: string, options?: ({
154
- decodeMode?: "sync" | "concurrent";
155
- } | {
156
- decodeMode: "parallel";
157
- maxThreads?: number;
158
- }) & {
159
- maxDecodePoints?: number;
178
+ loadMeshWasm(url: string, format: "splat" | "ply" | "spz" | "sog", options?: {
160
179
  useSphericalHarmonics?: boolean;
161
180
  }): Promise<void>;
162
181
  /**
163
- * tavio 形式のリソースをセーブする
164
- * @param filename - 保存する .tavio ファイル名
165
- * @param option - セーブ関連のオプション
166
- * @param option.version - バージョン番号
167
- * @param option.useSphericalHarmonics - 球面調和関数を使用する
168
- * @param option.useGeneralData - 編集データを反映する
169
- * @param option.featureFlags - tavio形式のフィーチャーフラグ
182
+ * 様々な形式のリソースをセーブする
183
+ * @param filename - 保存ファイル名
170
184
  */
171
- saveTavioWasm(filename: string, options?: {
172
- version?: String;
173
- useSphericalHarmonics?: boolean;
174
- useGeneralData?: boolean;
175
- featureFlags?: number;
176
- }): Promise<void>;
185
+ saveTavioWasm(filename: string): Promise<void>;
186
+ /**
187
+ * 様々な形式のリソースをセーブする
188
+ * @param filename - 保存ファイル名
189
+ * @param format - ファイル形式
190
+ */
191
+ saveMeshWasm(filename: string, format: "splat" | "ply" | "spz" | "sog"): Promise<void>;
192
+ /**
193
+ * canvas 要素からガウシアンを生成してシーンに追加する
194
+ * @param canvas - 対象となる canvas 要素
195
+ */
196
+ loadCanvas(canvas: HTMLCanvasElement): Promise<void>;
197
+ /**
198
+ * 画像や canvas 要素をパースし変換する
199
+ * @param imageSource - 対象となる画像や canvas
200
+ */
201
+ convertImageSource(imageSource: tImageSource): iSplatSource;
177
202
  /**
178
203
  * ==========================================================================
179
204
  * getter / setter
@@ -264,13 +289,30 @@ export declare class TavioMesh extends EventEmitter {
264
289
  * @param translation - 平行移動
265
290
  * @param rotation - 回転(オイラー角)
266
291
  * @param scale - 拡大縮小(XYZ で統一のスケール)
292
+ * @param force - 同時にテクスチャの内容を強制的に書き換えるかどうか
267
293
  */
268
- setTransform(index: number, translation: Vector3, rotation: Euler, scale: number): void;
294
+ setTransform(index: number, translation: Vector3, rotation: Euler, scale: number, isForce?: boolean): void;
269
295
  /**
270
296
  * 指定されたインデックスの座標変換情報を返す
271
297
  * @param index - インデックス
272
298
  */
273
299
  getTransform(index: number): iTransform;
300
+ /**
301
+ * インデックスを指定してビルボードの設定を行う
302
+ * @param index - インデックス
303
+ * @param flag - ビルボードとして扱うかどうか
304
+ */
305
+ setBillboard(index: number, flag: boolean): void;
306
+ /**
307
+ * ビルボードのための transform 情報の更新を行う
308
+ * @param camera - カメラのワールド空間上の位置
309
+ */
310
+ updateBillboard(camera: PerspectiveCamera): void;
311
+ /**
312
+ * インスタンスごとの transform 情報をテクスチャに適用し更新する
313
+ * @private
314
+ */
315
+ private _updateTransformData;
274
316
  /**
275
317
  * 自身のプロパティの状態に応じて球面調和関数に関連する uniform 変数の更新を行う
276
318
  * @private
@@ -325,6 +367,10 @@ export declare class TavioMesh extends EventEmitter {
325
367
  * setup
326
368
  * ==========================================================================
327
369
  */
370
+ /**
371
+ * データのロード前に各種フラグをセットアップする
372
+ */
373
+ setupFlags(): void;
328
374
  /**
329
375
  * tavio 形式用の worker をセットアップする
330
376
  */