@openheart/tavio-renderer 2.3.29-with-wasm → 2.4.0

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 (55) hide show
  1. package/build/esm/assets/{tavio-BvEEQQX4.js → tavio-DVLlyem4.js} +211 -211
  2. package/build/esm/assets/{workerHelpers-CHsFxiyH.js → workerHelpers-BWRcUO-d.js} +1 -1
  3. package/build/esm/index.js +9209 -11301
  4. package/build/esm/types/{src/editor → editor}/selector/boxSelector.d.ts +4 -3
  5. package/build/esm/types/module.d.ts +7 -0
  6. package/build/esm/types/viewer/canvas.d.ts +233 -0
  7. package/build/esm/types/viewer/constants.d.ts +99 -0
  8. package/build/esm/types/{src/viewer/canvas.d.ts → viewer/driver/coreDriver.d.ts} +423 -505
  9. package/build/esm/types/viewer/driver/iCoreDriver.d.ts +206 -0
  10. package/build/esm/types/viewer/driver/offscreenDriver.d.ts +222 -0
  11. package/build/esm/types/viewer/driver/rpcBridge.d.ts +39 -0
  12. package/build/esm/types/viewer/driver/workerElementAdapter.d.ts +66 -0
  13. package/build/esm/types/{src/viewer → viewer}/materialGenerator.d.ts +36 -36
  14. package/build/esm/types/{src/viewer → viewer}/renderView.d.ts +5 -4
  15. package/build/esm/types/viewer/shaderRegistry.d.ts +22 -0
  16. package/build/esm/types/viewer/tavioMesh/localTransform.d.ts +65 -0
  17. package/build/esm/types/viewer/tavioMesh/minMaxRange.d.ts +47 -0
  18. package/build/esm/types/viewer/tavioMesh/parsers/imageParser.d.ts +14 -0
  19. package/build/esm/types/{src/utility/plyDecoder.d.ts → viewer/tavioMesh/parsers/plyParser.d.ts} +4 -15
  20. package/build/esm/types/viewer/tavioMesh/parsers/splatParser.d.ts +12 -0
  21. package/build/esm/types/viewer/tavioMesh/selection.d.ts +39 -0
  22. package/build/esm/types/{src/viewer → viewer/tavioMesh}/tavioMesh.d.ts +153 -60
  23. package/build/esm/types/viewer/types.d.ts +376 -0
  24. package/build/esm/types/worker/renderingWorker.d.ts +8 -0
  25. package/build/esm/types/{src/worker → worker}/tavioWorker.d.ts +1 -1
  26. package/build/esm/wasm/pkg/no-thread/tavio.d.ts +13 -13
  27. package/build/esm/wasm/pkg/no-thread/tavio.js +125 -125
  28. package/build/esm/wasm/pkg/no-thread/tavio_bg.wasm +0 -0
  29. package/build/esm/wasm/pkg/no-thread/tavio_bg.wasm.d.ts +13 -13
  30. package/build/esm/wasm/pkg/thread/tavio.d.ts +17 -17
  31. package/build/esm/wasm/pkg/thread/tavio.js +154 -154
  32. package/build/esm/wasm/pkg/thread/tavio_bg.wasm +0 -0
  33. package/build/esm/wasm/pkg/thread/tavio_bg.wasm.d.ts +17 -17
  34. package/package.json +1 -1
  35. package/build/esm/types/src/animation/animationController.d.ts +0 -146
  36. package/build/esm/types/src/module.d.ts +0 -5
  37. /package/build/esm/types/{src/camera → camera}/cameraCollider.d.ts +0 -0
  38. /package/build/esm/types/{src/camera → camera}/cameraPath.d.ts +0 -0
  39. /package/build/esm/types/{src/camera → camera}/cameraPathControls.d.ts +0 -0
  40. /package/build/esm/types/{src/camera → camera}/cameraPathManager.d.ts +0 -0
  41. /package/build/esm/types/{src/camera → camera}/flightControls.d.ts +0 -0
  42. /package/build/esm/types/{src/camera → camera}/orbitControls.d.ts +0 -0
  43. /package/build/esm/types/{src/camera → camera}/transferControls.d.ts +0 -0
  44. /package/build/esm/types/{src/editor → editor}/selector/selector.d.ts +0 -0
  45. /package/build/esm/types/{src/editor → editor}/selector/sphereSelector.d.ts +0 -0
  46. /package/build/esm/types/{src/extension → extension}/InstancedMeshEX.d.ts +0 -0
  47. /package/build/esm/types/{src/loader → loader}/streamLoader.d.ts +0 -0
  48. /package/build/esm/types/{src/math → math}/easing.d.ts +0 -0
  49. /package/build/esm/types/{src/math → math}/interpolation.d.ts +0 -0
  50. /package/build/esm/types/{src/utility → utility}/console.d.ts +0 -0
  51. /package/build/esm/types/{src/utility → utility}/utility.d.ts +0 -0
  52. /package/build/esm/types/{src/wasm-bindings → wasm-bindings}/wasm-handlers.d.ts +0 -0
  53. /package/build/esm/types/{src/wasm-bindings → wasm-bindings}/wasm-worker-client.d.ts +0 -0
  54. /package/build/esm/types/{src/wasm-bindings → wasm-bindings}/wasm-worker.d.ts +0 -0
  55. /package/build/esm/types/{src/wasm-bindings → wasm-bindings}/wasm.d.ts +0 -0
@@ -1,5 +1,5 @@
1
- import { Group, SpotLight, PerspectiveCamera, Quaternion, Scene, Vector3, AmbientLight, CameraHelper } from 'three';
2
- import { tControlInstance, tControlsType } from './canvas';
1
+ import { AxesHelper, Group, SpotLight, PerspectiveCamera, Quaternion, Scene, Vector3, AmbientLight, CameraHelper } from 'three';
2
+ import { tControlInstance, tControlsType } from './types';
3
3
  import { CameraCollider } from '../camera/cameraCollider';
4
4
  import { TransferControls } from '../camera/transferControls';
5
5
  import { CameraPathManager } from '../camera/cameraPathManager';
@@ -23,7 +23,7 @@ export declare class RenderView {
23
23
  * このクラス内ではその中身が undefined でないかどうかは担保しない点に注意
24
24
  */
25
25
  scene: Scene;
26
- pickingScene: Scene;
26
+ queryScene: Scene;
27
27
  shadowingScene: Scene;
28
28
  gaussianGroup: Group;
29
29
  meshGroup: Group;
@@ -43,9 +43,10 @@ export declare class RenderView {
43
43
  previousRotation: Quaternion;
44
44
  previousFov: number;
45
45
  orbitCursor: Group;
46
- previousOrbitTarget: Vector3;
47
46
  orbitCursorAutoDisplay: boolean;
48
47
  orbitCursorDisplay: boolean;
48
+ previousOrbitTarget: Vector3;
49
+ axesHelper?: AxesHelper;
49
50
  /**
50
51
  * @param name - レンダービューの名前
51
52
  */
@@ -0,0 +1,22 @@
1
+ import { RawShaderMaterial } from 'three';
2
+ import { iViewerMaterialOption, iViewerOption } from './types';
3
+ /**
4
+ * シェーダマテリアルの生成およびレジストリ管理を行う
5
+ */
6
+ export declare class ShaderRegistry {
7
+ gaussianMaterial: RawShaderMaterial;
8
+ gaussianPickingMaterial: RawShaderMaterial;
9
+ gaussianShadowingMaterial: RawShaderMaterial;
10
+ gaussianIndexSelectionMaterial: RawShaderMaterial;
11
+ gaussianPointMaterial: RawShaderMaterial;
12
+ /**
13
+ * マテリアルをセットアップする
14
+ * @param viewerOption - ビューアのオプション
15
+ * @param option - シェーダチャンクなどの情報を含むマテリアルオプション
16
+ */
17
+ setupMaterial(viewerOption: iViewerOption, option?: iViewerMaterialOption): void;
18
+ /**
19
+ * 保持しているマテリアルリソースを破棄する
20
+ */
21
+ dispose(): void;
22
+ }
@@ -0,0 +1,65 @@
1
+ import { Vector3, Quaternion, DataTexture, RawShaderMaterial } from 'three';
2
+ import { iLocalTransformInfo, iSourceProperty } from '../types';
3
+ import { InstancedMeshEX } from '../../extension/InstancedMeshEX';
4
+ /**
5
+ * スプラット個別のローカル座標変換(平行移動・回転・スケール)を管理するクラス
6
+ */
7
+ export declare class LocalTransform {
8
+ /** ローカルモデル変換用データ */
9
+ data: Uint32Array | null;
10
+ /** 複数選択時の相対変形基準用退避バッファ */
11
+ temporaryData: Uint32Array | null;
12
+ /** ローカルモデル変換データ用の GPU テクスチャ */
13
+ texture: DataTexture | null;
14
+ /** テクスチャの一辺の幅 */
15
+ textureWidth: number;
16
+ /** ローカル変換が更新されたかどうかのフラグ(ソート同期用) */
17
+ updated: boolean;
18
+ /**
19
+ * ローカル変換バッファを初期化する
20
+ * @param count - 全スプラット数
21
+ * @param generalData - 汎用データバッファ(選択状態の判定用)
22
+ * @param offset - 処理開始オフセット
23
+ * @param onlySelected - 選択中のスプラットのみ初期化するかどうか
24
+ */
25
+ init(count: number, generalData: Uint8Array | null, offset?: number, onlySelected?: boolean): void;
26
+ /**
27
+ * ローカル変換用テクスチャを生成・更新し、対象マテリアルの uniform 変数へ反映する
28
+ * @param count - 全スプラット数
29
+ * @param materials - 反映対象の RawShaderMaterial の配列
30
+ */
31
+ updateTexture(count: number, materials: (RawShaderMaterial | null)[]): void;
32
+ /**
33
+ * 現在のローカル変換データを退避バッファへバックアップする
34
+ */
35
+ backup(): void;
36
+ /**
37
+ * 選択中のスプラットに対してローカル変換を絶対値で設定する
38
+ * @param count - 全スプラット数
39
+ * @param generalData - 汎用データバッファ(選択判定用)
40
+ * @param translation - 平行移動量
41
+ * @param rotation - クォータニオン回転
42
+ * @param scale - 3軸スケール
43
+ */
44
+ applyToSelected(count: number, generalData: Uint8Array, translation: Vector3, rotation: Quaternion, scale: Vector3): void;
45
+ /**
46
+ * 選択中のスプラットに対して、退避バッファを基準とした相対的なローカル変換を適用する
47
+ * @param count - 全スプラット数
48
+ * @param generalData - 汎用データバッファ
49
+ * @param sourceProperty - 各ソースファイルのプロパティ
50
+ * @param mesh - メインメッシュ(スケール計算用)
51
+ * @param translation - 相対平行移動
52
+ * @param rotation - 相対回転
53
+ * @param scale - 相対スケール
54
+ * @param initialQuaternion - 単体選択時の初期クォータニオン
55
+ */
56
+ applyToSelectedRelative(count: number, generalData: Uint8Array, sourceProperty: iSourceProperty[], mesh: InstancedMeshEX | null, translation: Vector3, rotation: Quaternion, scale: Vector3, initialQuaternion?: Quaternion): void;
57
+ /**
58
+ * 現在選択されているスプラットのトランスフォーム情報を計算して返す
59
+ */
60
+ getSelectedTransformInfo(count: number, generalData: Uint8Array, dataTexture: DataTexture, sourceProperty: iSourceProperty[], mesh: InstancedMeshEX | null): iLocalTransformInfo | null;
61
+ /**
62
+ * リソースを解放する
63
+ */
64
+ dispose(): void;
65
+ }
@@ -0,0 +1,47 @@
1
+ import { iParsedSplatData } from '../types';
2
+ export interface iMinMaxMergeProps {
3
+ scale: {
4
+ min: [number, number, number];
5
+ max: [number, number, number];
6
+ };
7
+ alpha: {
8
+ min: [number];
9
+ max: [number];
10
+ };
11
+ previousScale: {
12
+ min: [number, number, number];
13
+ max: [number, number, number];
14
+ };
15
+ previousAlpha: {
16
+ min: [number];
17
+ max: [number];
18
+ };
19
+ }
20
+ /**
21
+ * スプラットの min-max をマテリアルの uniform に反映し、
22
+ * 既存データとの統合時(isFirst === false)に必要な再スケーリング用プロパティを生成する。
23
+ *
24
+ * @param uniforms - gaussianMaterial の uniforms オブジェクト
25
+ * @param minMax - パースされた新規スプラットの minMax
26
+ * @param isFirst - これが最初のデータかどうか
27
+ * @returns 既存データとの統合時に Worker へ送る再スケーリング用パラメータ(初回は null)
28
+ */
29
+ export declare function applyMinMax(uniforms: {
30
+ [key: string]: any;
31
+ scaleAlphaMin?: {
32
+ value: {
33
+ x: number;
34
+ y: number;
35
+ z: number;
36
+ w: number;
37
+ };
38
+ };
39
+ scaleAlphaMax?: {
40
+ value: {
41
+ x: number;
42
+ y: number;
43
+ z: number;
44
+ w: number;
45
+ };
46
+ };
47
+ }, minMax: iParsedSplatData["minMax"], isFirst: boolean): iMinMaxMergeProps | null;
@@ -0,0 +1,14 @@
1
+ import { iParsedSplatData, tImageSource } from '../../types';
2
+ /**
3
+ * 画像および Canvas 要素(ビットマップソース)のパーサー
4
+ */
5
+ export declare class ImageParser {
6
+ /**
7
+ * 画像や canvas のビットマップからスプラット用のデータを生成する
8
+ * ※ OffscreenCanvas 環境(Worker スレッド)およびメインスレッド環境の双方に対応
9
+ * @param imageSource - 対象となる画像や canvas、ImageBitmap
10
+ */
11
+ static parse(imageSource: tImageSource | ImageBitmap | OffscreenCanvas): iParsedSplatData;
12
+ }
13
+ /** 互換用の関数エクスポート */
14
+ export declare const convertImageSource: typeof ImageParser.parse;
@@ -1,3 +1,4 @@
1
+ import { iParsedSplatData } from '../../types';
1
2
  type tTypedArray = Float64Array | Float32Array | Int32Array | Uint32Array | Int16Array | Uint16Array | Uint8Array;
2
3
  type tTypedArrayConstructor = Float64ArrayConstructor | Float32ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Uint8ArrayConstructor;
3
4
  export interface iPlyElement {
@@ -18,22 +19,10 @@ export interface iSplatData {
18
19
  sphericalHarmonicsBuffer: Float32Array;
19
20
  sphericalHarmonicsDegrees: number;
20
21
  }
21
- export interface iTavioData extends iSplatData {
22
- position: Float32Array;
23
- color: Uint8ClampedArray;
24
- scaleMinX: number;
25
- scaleMinY: number;
26
- scaleMinZ: number;
27
- alphaMin: number;
28
- scaleMaxX: number;
29
- scaleMaxY: number;
30
- scaleMaxZ: number;
31
- alphaMax: number;
32
- }
33
22
  /**
34
- * PLY 形式の中身確認用簡易デコーダ
23
+ * PLY 形式の中身確認用簡易パーサー
35
24
  */
36
- export declare class PlyDecoder {
25
+ export declare class PlyParser {
37
26
  /** ヘッダとして読み込むバイト長 */
38
27
  static HEADER_READ_BYTE_LENGTH: number;
39
28
  /** splat データの1つあたりのバイトサイズ */
@@ -81,6 +70,6 @@ export declare class PlyDecoder {
81
70
  * @param start - 対象のスプラットの開始インデックス
82
71
  * @param end - 対象のスプラットの終了インデックス
83
72
  */
84
- static createTavio(data: iPlyData): iTavioData;
73
+ static createTavio(data: iPlyData): iParsedSplatData;
85
74
  }
86
75
  export {};
@@ -0,0 +1,12 @@
1
+ import { iParsedSplatData } from '../../types';
2
+ /**
3
+ * .splat 形式(32 バイト/スプラット)のバイナリパーサー
4
+ */
5
+ export declare class SplatParser {
6
+ /**
7
+ * .splat 形式のバイナリデータをパースし、ROW_LENGTH_TAVIO 形式のバッファおよび min-max を生成する
8
+ * @param source - .splat バイナリ全体の ArrayBufferLike または Uint8Array
9
+ * @param count - スプラットの総数(省略時は byteLength / ROW_LENGTH_SPLAT)
10
+ */
11
+ static parse(source: ArrayBufferLike | Uint8Array, count?: number): iParsedSplatData;
12
+ }
@@ -0,0 +1,39 @@
1
+ import { DataTexture, RawShaderMaterial } from 'three';
2
+ /**
3
+ * スプラットの選択状態(R チャンネル)および削除世代(G チャンネル)を管理するクラス
4
+ */
5
+ export declare class Selection {
6
+ /** 汎用データバッファ(RGBA Uint8) */
7
+ generalData: Uint8Array | null;
8
+ /** 汎用データテクスチャ */
9
+ generalDataTexture: DataTexture | null;
10
+ /** 現在選択されているスプラットの総数 */
11
+ selectionCount: number;
12
+ /**
13
+ * 汎用データテクスチャを生成・更新し、対象マテリアルの uniform 変数へ反映する
14
+ * @param count - 全スプラット数
15
+ * @param materials - 反映対象の RawShaderMaterial の配列
16
+ */
17
+ updateTexture(count: number, materials: (RawShaderMaterial | null)[]): void;
18
+ /**
19
+ * 現在の衝突判定・選択状態を解除する
20
+ */
21
+ resetCollision(): void;
22
+ /**
23
+ * 現在選択しているスプラットを削除状態とする
24
+ * @returns 削除が実行されたかどうか(選択スプラットが存在したか)
25
+ */
26
+ deleteSelected(): boolean;
27
+ /**
28
+ * 削除状態を一世代前に戻す(Undo)
29
+ */
30
+ undoDeleted(): void;
31
+ /**
32
+ * すべての削除状態をリセットする
33
+ */
34
+ resetDeleted(): void;
35
+ /**
36
+ * リソースを解放する
37
+ */
38
+ dispose(): void;
39
+ }
@@ -1,30 +1,23 @@
1
- import { Camera, CubeTexture, DataTexture, Euler, PerspectiveCamera, Points, RawShaderMaterial, Texture, Vector2, Vector3, WebGLRenderer } from 'three';
1
+ import { Camera, CubeTexture, DataTexture, Euler, PerspectiveCamera, Points, Quaternion, RawShaderMaterial, Texture, Vector2, Vector3, WebGLRenderer } from 'three';
2
2
  import { default as EventEmitter } from 'eventemitter3';
3
- import { iLoadingOption, iViewerOption, iHeaderInfo, iTransform, iVectorLike } from './canvas';
4
- import { iCollisionTarget } from '../worker/tavioWorker';
5
- import { InstancedMeshEX } from '../extension/InstancedMeshEX';
6
- import { RenderView } from './renderView';
3
+ import { iLoadingOption, iViewerOption, iHeaderInfo, iTransform, tSelectionMode, iLocalTransformInfo, tUniformValue, tCustomDefines } from '../types';
4
+ import { iCollisionTarget } from '../../worker/tavioWorker';
5
+ import { InstancedMeshEX } from '../../extension/InstancedMeshEX';
6
+ import { RenderView } from '../renderView';
7
7
  /**
8
- * 画素情報として扱えるオブジェクト
8
+ * 32bit 符号なし整数テクスチャ (RGBA32UI) を生成する
9
+ * @param data - 書き込むデータ
10
+ * @param width - テクスチャの幅
11
+ * @param height - テクスチャの高さ
9
12
  */
10
- type tImageSource = HTMLImageElement | HTMLCanvasElement;
13
+ export declare const createUint32DataTexture: (data: Uint32Array, width: number, height: number) => DataTexture;
11
14
  /**
12
- * 画像や canvas 要素をパースした結果
15
+ * 8bit 符号なし整数テクスチャ (RGBA8UI) を生成する
16
+ * @param data - 書き込むデータ
17
+ * @param width - テクスチャの幅
18
+ * @param height - テクスチャの高さ
13
19
  */
14
- interface iSplatSource {
15
- count: number;
16
- position32: Float32Array;
17
- color8: Uint8ClampedArray;
18
- converted: Uint8Array;
19
- min: {
20
- alpha: number;
21
- scale: iVectorLike;
22
- };
23
- max: {
24
- alpha: number;
25
- scale: iVectorLike;
26
- };
27
- }
20
+ export declare const createUint8DataTexture: (data: Uint8Array, width: number, height: number) => DataTexture;
28
21
  export declare class TavioMesh extends EventEmitter {
29
22
  private worker;
30
23
  private meshIndex;
@@ -49,10 +42,26 @@ export declare class TavioMesh extends EventEmitter {
49
42
  private sortMap;
50
43
  private defaultRenderViewSymbol;
51
44
  private gaussianOrderData;
52
- private gaussianGeneralData;
53
45
  private gaussianTransformData;
54
46
  private transformTextureWidth;
55
- private currentSelectionCount;
47
+ private localTransform;
48
+ private selection;
49
+ private get gaussianLocalTransformData();
50
+ private set gaussianLocalTransformData(value);
51
+ private get temporaryLocalTransformData();
52
+ private set temporaryLocalTransformData(value);
53
+ private get localTransformTextureWidth();
54
+ private set localTransformTextureWidth(value);
55
+ private get gaussianLocalTransformTexture();
56
+ private set gaussianLocalTransformTexture(value);
57
+ private get localTransformUpdated();
58
+ private set localTransformUpdated(value);
59
+ private get gaussianGeneralData();
60
+ private set gaussianGeneralData(value);
61
+ private get currentSelectionCount();
62
+ private set currentSelectionCount(value);
63
+ private get gaussianGeneralDataTexture();
64
+ private set gaussianGeneralDataTexture(value);
56
65
  private gaussianDataTexture;
57
66
  private gaussianCompressedDataTexture0;
58
67
  private gaussianCompressedDataTexture1;
@@ -60,7 +69,6 @@ export declare class TavioMesh extends EventEmitter {
60
69
  private gaussianCompressedDataTexture3;
61
70
  private currentVertexCount;
62
71
  private maxDistance;
63
- private gaussianGeneralDataTexture;
64
72
  private gaussianTransformDataTexture;
65
73
  private initializedTexture;
66
74
  private initializedColorTexture;
@@ -74,13 +82,14 @@ export declare class TavioMesh extends EventEmitter {
74
82
  private gaussianMaterial;
75
83
  private gaussianPickingMaterial;
76
84
  private gaussianShadowingMaterial;
85
+ private gaussianIndexSelectionMaterial;
77
86
  private gaussianMesh;
78
87
  private gaussianPickingMesh;
79
88
  private gaussianShadowingMesh;
89
+ private gaussianIndexSelectionMesh;
80
90
  private gaussianPoints;
81
91
  private gaussianPointGeometry;
82
92
  private gaussianPointMaterial;
83
- private gaussianPointUniforms;
84
93
  private mainProperties;
85
94
  private backgroundTexture;
86
95
  private environmentTexture;
@@ -113,6 +122,19 @@ export declare class TavioMesh extends EventEmitter {
113
122
  * B: クォータニオンの WX
114
123
  * A: クォータニオンの YZ
115
124
  */
125
+ /**
126
+ * this.gaussianLocalTransformData についての覚書
127
+ * RGBA がそれぞれ Uint32 で、1画素が1スプラットに対応する
128
+ * position.xyz はそれぞれ 16bit、scale.xyz も同様に 16bit で先頭から並ぶ(RGB に相当するチャンネル)
129
+ * 残りの A チャンネルの 32bit には convertQuaternion で変換したオクタへドラルクォータニオン 24bit が入る
130
+ */
131
+ /**
132
+ * this.temporaryLocalTransformData についての覚書
133
+ * RGBA がそれぞれ Uint32 で、1画素が1スプラットに対応する(つまり this.gaussianLocalTransformData と同じ)
134
+ * このバッファは「スプラットが複数選択された」場合に、その選択された瞬間の状態をステートとして保持しておくために利用される
135
+ * このような退避バッファを使わないと、複数回選択・移動されたときに、前回の状態からどれくらい動いたか、を考えることができなくなる
136
+ * スプラットが選択された際に内容が更新され、ギズモから手が離れた瞬間に、この退避バッファの内容を踏まえてローカルトランスフォームする
137
+ */
116
138
  /**
117
139
  * インスタンスが発火するイベント
118
140
  */
@@ -124,8 +146,14 @@ export declare class TavioMesh extends EventEmitter {
124
146
  * @param material - メッシュの生成に使うマテリアルは上の層から指定されたものを使う
125
147
  * @param pickingMaterial - メッシュの生成に使うマテリアルは上の層から指定されたものを使う
126
148
  * @param shadowingMaterial - メッシュの生成に使うマテリアルは上の層から指定されたものを使う
149
+ * @param indexSelectionMaterial - メッシュの生成に使うマテリアルは上の層から指定されたものを使う
150
+ * @param viewerOption - 上の層で用いているオプション
127
151
  */
128
- constructor(index: number, material: RawShaderMaterial, pickingMaterial: RawShaderMaterial, shadowingMaterial: RawShaderMaterial, viewerOption: iViewerOption);
152
+ constructor(index: number, material: RawShaderMaterial, pickingMaterial: RawShaderMaterial, shadowingMaterial: RawShaderMaterial, indexSelectionMaterial: RawShaderMaterial, pointMaterial: RawShaderMaterial, viewerOption: iViewerOption);
153
+ /**
154
+ * マテリアルでローカル変換が有効化されているかどうか
155
+ */
156
+ get enableLocalTransform(): boolean;
129
157
  /**
130
158
  * ==========================================================================
131
159
  * loader
@@ -133,31 +161,46 @@ export declare class TavioMesh extends EventEmitter {
133
161
  */
134
162
  /**
135
163
  * tavio 形式のリソースをロードする
136
- * @param source - 読み込む .tavio ファイル。URL 文字列に加え、事前に取得済みの
137
- * Blob / ArrayBuffer を渡すこともできる
164
+ * ※ply splat、画像・canvas 要素などのリソースは CPU 側で TavioMesh 用のバイナリを生成する処理を行うが、
165
+ * tavio 形式の場合はバイナリから TavioMesh 用のデータを生成する部分が worker 側にあるため、他のロード系
166
+ * メソッドと比較するとやや固有の処理が多いことに注意する
167
+ * @param source - 読み込む .tavio ファイル。URL 文字列に加え、事前に取得済みの Blob / ArrayBuffer を渡すこともできる
138
168
  * @param option - ロード・パース関連のオプション
139
169
  */
140
170
  loadTavio(source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
141
171
  /**
142
172
  * ply 形式のリソースをロードする
143
- * @param url - 読み込む .ply ファイル
173
+ * @param source - 読み込む .ply ファイル(URL文字列、Blob、または ArrayBuffer)
144
174
  * @param option - ロード・パース関連のオプション
145
175
  */
146
- loadPly(url: string, option?: iLoadingOption): Promise<void>;
176
+ loadPly(source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
147
177
  /**
148
178
  * splat 形式のリソースをロードする
149
- * @param url - 読み込む .splat ファイル
179
+ * @param source - 読み込む .splat ファイル(URL文字列、Blob、または ArrayBuffer)
150
180
  */
151
- loadSplat(url: string): Promise<void>;
181
+ loadSplat(source: string | Blob | ArrayBuffer): Promise<void>;
152
182
  /**
153
183
  * 画像形式のリソースをロードする
154
- * @param url - 読み込む画像ファイル
184
+ * @param source - 読み込む画像ファイル(URL文字列、Blob、ArrayBuffer、または ImageBitmap)
155
185
  */
156
- loadImage(url: string): Promise<void>;
186
+ loadImage(source: string | Blob | ArrayBuffer | ImageBitmap): Promise<void>;
187
+ /**
188
+ * canvas 形式のリソースをロードする
189
+ * @param canvas - 対象となる canvas 要素、または OffscreenCanvas / ImageBitmap
190
+ */
191
+ loadCanvas(canvas: HTMLCanvasElement | OffscreenCanvas | ImageBitmap): Promise<void>;
192
+ /**
193
+ * 画像や Canvas などのビットマップソースからスプラットを共通シーケンスで生成・ロードする
194
+ * ※ OffscreenCanvas モード(Worker スレッド)およびメインスレッドの双方に対応
195
+ * @param source - 画像・Canvas・ImageBitmap などのソース
196
+ * @param type - ソース種別('image' | 'canvas')
197
+ * @param byte - リソースのバイト長(不明時は null)
198
+ * @private
199
+ */
200
+ private _loadFromBitmapSource;
157
201
  /**
158
202
  * tavio 形式のリソースをロードする
159
- * @param source - 読み込む .tavio ファイル。URL 文字列に加え、事前に取得済みの
160
- * Blob / ArrayBuffer を渡すこともできる(内部で Object URL 化して WASM デコーダに渡す)
203
+ * @param source - 読み込む .tavio ファイル。URL 文字列に加え、事前に取得済みの Blob / ArrayBuffer を渡すこともできる(内部で Object URL 化して WASM デコーダに渡す)
161
204
  * @param option - ロード・パース関連のオプション
162
205
  * @param options.decodeMode - デコードモード. "sync", "concurrent", "parallel" を指定
163
206
  * @param options.maxThreads - decodeMode が "parallel" のときに使用されるスレッド数の上限
@@ -216,16 +259,6 @@ export declare class TavioMesh extends EventEmitter {
216
259
  * @param format - ファイル形式
217
260
  */
218
261
  saveMeshWasm(filename: string, format: "splat" | "ply" | "spz" | "sog"): Promise<void>;
219
- /**
220
- * canvas 要素からスプラットを生成してシーンに追加する
221
- * @param canvas - 対象となる canvas 要素
222
- */
223
- loadCanvas(canvas: HTMLCanvasElement): Promise<void>;
224
- /**
225
- * 画像や canvas 要素をパースし変換する
226
- * @param imageSource - 対象となる画像や canvas
227
- */
228
- convertImageSource(imageSource: tImageSource): iSplatSource;
229
262
  /**
230
263
  * ==========================================================================
231
264
  * getter / setter
@@ -247,6 +280,10 @@ export declare class TavioMesh extends EventEmitter {
247
280
  * 影描画用メッシュのインスタンスを返す
248
281
  */
249
282
  getShadowingMesh(): InstancedMeshEX | null;
283
+ /**
284
+ * インデックス選択用メッシュのインスタンスを返す
285
+ */
286
+ getIndexSelectionMesh(): InstancedMeshEX | null;
250
287
  /**
251
288
  * 背景用テクスチャを返す
252
289
  */
@@ -267,11 +304,15 @@ export declare class TavioMesh extends EventEmitter {
267
304
  * uniform 変数を返す
268
305
  */
269
306
  getUniforms(): any;
307
+ /**
308
+ * 現在選択されているスプラットのトランスフォーム情報を返す
309
+ */
310
+ getSelectedSplatTransformInfo(): iLocalTransformInfo | null;
270
311
  /**
271
312
  * uniform 変数を設定する
272
313
  * @param values - 設定する uniform 変数をキーとするオブジェクト
273
314
  */
274
- setUniforms(values: any): void;
315
+ setUniforms(values: Record<string, tUniformValue>): void;
275
316
  /**
276
317
  * 点描画用のマテリアルに紐づいている uniform 変数を返す
277
318
  */
@@ -280,7 +321,7 @@ export declare class TavioMesh extends EventEmitter {
280
321
  * 点描画用のマテリアルに uniform 変数を設定する
281
322
  * @param values - 設定する uniform 変数をキーとするオブジェクト
282
323
  */
283
- setPointUniforms(values: any): void;
324
+ setPointUniforms(values: Record<string, any>): void;
284
325
  /**
285
326
  * defines の定義を返す
286
327
  */
@@ -289,7 +330,7 @@ export declare class TavioMesh extends EventEmitter {
289
330
  * defines を設定する
290
331
  * @param values - 設定する defines をキーとするオブジェクト
291
332
  */
292
- setDefines(values: any): void;
333
+ setDefines(values: tCustomDefines): void;
293
334
  /**
294
335
  * 点描画用のマテリアルに紐づいている defines の定義を返す
295
336
  */
@@ -298,7 +339,7 @@ export declare class TavioMesh extends EventEmitter {
298
339
  * 点描画用のマテリアルに defines を設定する
299
340
  * @param values - 設定する defines をキーとするオブジェクト
300
341
  */
301
- setPointDefines(values: any): void;
342
+ setPointDefines(values: tCustomDefines): void;
302
343
  /**
303
344
  * カメラ関係のパラメータを深度書き込み用に設定する
304
345
  * @param viewProjectionMatrix - 要素の配列
@@ -368,6 +409,46 @@ export declare class TavioMesh extends EventEmitter {
368
409
  * @private
369
410
  */
370
411
  private _updateTransformData;
412
+ /**
413
+ * ローカルモデル変換用のバッファを初期化する
414
+ * @param offset - 処理対象を限定するオフセット
415
+ * @param onlySelected - 現在選択状態のものだけを処理するかどうか
416
+ */
417
+ initLocalTransformData(offset?: number, onlySelected?: boolean): void;
418
+ /**
419
+ * ローカルモデル変換用のテクスチャを更新し uniform 変数へ反映する
420
+ */
421
+ updateLocalTransformTexture(): void;
422
+ /**
423
+ * スクリーン空間上の領域情報に基づいてスプラットを選択する
424
+ * @param buffer - ReadPixels の結果の Uint8Array をソースとする ArrayBuffer
425
+ * @param nw - フレームバッファ上の選択領域幅
426
+ * @param nh - フレームバッファ上の選択領域高さ
427
+ * @param mode - 選択モード
428
+ * @param maskBuffer - 範囲選択用のアルファマスクデータ (nw * nh * 4 バイト)
429
+ */
430
+ selectGaussiansByScreenArea(buffer: ArrayBuffer, nw: number, nh: number, mode: tSelectionMode, maskBuffer: ArrayBuffer): void;
431
+ /**
432
+ * 現在のローカル変換のデータを退避バッファにバックアップする。
433
+ * 複数選択時に、各スプラットの相対的な位置関係を維持したままトランスフォームを累積適用するための基準値となる。
434
+ * 非編集時はメモリを確保せず、必要になったタイミングで初めてバッファを遅延確保(Lazy Allocation)する。
435
+ */
436
+ backupLocalTransform(): void;
437
+ /**
438
+ * 現在選択しているスプラットに対してローカル変換を設定する(指定された値で完全に上書きする)
439
+ * @param translation - 平行移動
440
+ * @param rotation - 回転
441
+ * @param scale - スケール
442
+ */
443
+ applyLocalTransformToSelected(translation: Vector3, rotation: Quaternion, scale: Vector3): void;
444
+ /**
445
+ * 現在選択しているスプラットに対して、退避バッファを基準とした相対的なローカル変換を適用する
446
+ * @param translation - 相対平行移動
447
+ * @param rotation - 相対回転
448
+ * @param scale - 相対スケール
449
+ * @param initialQuaternion - 初期姿勢を意味するクォータニオン(単体選択時に考慮する必要がある)
450
+ */
451
+ applyLocalTransformToSelectedRelative(translation: Vector3, rotation: Quaternion, scale: Vector3, initialQuaternion?: Quaternion): void;
371
452
  /**
372
453
  * 自身のプロパティの状態に応じて球面調和関数に関連する uniform 変数の更新を行う
373
454
  * @private
@@ -393,6 +474,15 @@ export declare class TavioMesh extends EventEmitter {
393
474
  * shadowing 用マテリアルに uniform 変数を同期する
394
475
  */
395
476
  syncShadowingMaterial(): void;
477
+ /**
478
+ * indexSelection 用マテリアルに uniform 変数を同期する
479
+ * @param camera - 対象となるカメラ
480
+ */
481
+ syncIndexSelectionMaterial(camera: PerspectiveCamera): void;
482
+ /**
483
+ * gaussianMesh のモデル変換をすべての補助メッシュに同期する
484
+ */
485
+ syncModelTransform(): void;
396
486
  /**
397
487
  * shadowing 用マテリアルに uniform 変数を設定する
398
488
  * @param camera - 対象となるカメラ
@@ -417,7 +507,7 @@ export declare class TavioMesh extends EventEmitter {
417
507
  * @param pointCount - 該当ファイルのスプラットの個数
418
508
  * @param isEncodeEnable - エンコード可能とするかどうか(WASM 用)
419
509
  */
420
- allocateSharedData(index: number, offset: number, chunkCount: number, pointCount: number, isEncodeEnabled: Boolean): SharedData;
510
+ allocateSharedData(index: number, offset: number, chunkCount: number, pointCount: number, isEncodeEnabled: boolean): SharedData;
421
511
  /**
422
512
  * テクスチャのセットアップが完了しているかどうかを返す
423
513
  * @private
@@ -514,8 +604,9 @@ export declare class TavioMesh extends EventEmitter {
514
604
  /**
515
605
  * 衝突判定を設定する
516
606
  * @param collision - 設定する衝突判定、またはその配列
607
+ * @param mode - 選択モード(SELECTION_MODE)
517
608
  */
518
- setCollision(collision: iCollisionTarget | iCollisionTarget[]): void;
609
+ setCollision(collision: iCollisionTarget | iCollisionTarget[], mode: tSelectionMode): void;
519
610
  /**
520
611
  * 現在の衝突判定を解除する
521
612
  */
@@ -545,13 +636,15 @@ declare class SharedData {
545
636
  sharedSphericalHarmonicsData: SharedArrayBuffer;
546
637
  sharedSphericalHarmonicsLabel: SharedArrayBuffer;
547
638
  sharedSphericalHarmonicsMaxQuantizationIndex: SharedArrayBuffer;
548
- constructor(gaussianDataSize: number, gaussianGeneralDataSize: number, chunkCount: number, pointCount: number, isEncodeEnabled: Boolean);
549
- get gaussianData(): Uint8Array;
550
- get gaussianOrderData(): Uint8Array;
551
- get gaussianGeneralData(): Uint8Array;
552
- get sphericalHarmonicsData(): Float32Array;
553
- get sphericalHarmonicsLabel(): Uint16Array;
554
- get sphericalHarmonicsMaxQuantizationIndex(): Uint32Array;
639
+ sharedGaussianLocalTransformData: SharedArrayBuffer;
640
+ gaussianData: Uint8Array;
641
+ gaussianOrderData: Uint8Array;
642
+ gaussianGeneralData: Uint8Array;
643
+ sphericalHarmonicsData: Float32Array;
644
+ sphericalHarmonicsLabel: Uint16Array;
645
+ sphericalHarmonicsMaxQuantizationIndex: Uint32Array;
646
+ gaussianLocalTransformData: Uint32Array;
647
+ constructor(gaussianDataSize: number, gaussianGeneralDataSize: number, chunkCount: number, pointCount: number, isEncodeEnabled: boolean, enableLocalTransform: boolean);
555
648
  get isEncodeEnabled(): boolean;
556
649
  }
557
650
  export {};