@openheart/tavio-renderer 1.0.12-with-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 (47) hide show
  1. package/README.md +25 -0
  2. package/build/esm/assets/tavio-B99BKbbN.js +971 -0
  3. package/build/esm/assets/workerHelpers-DWTUmD6Q.js +39 -0
  4. package/build/esm/index.js +45732 -0
  5. package/build/esm/types/animation/animationController.d.ts +133 -0
  6. package/build/esm/types/camera/cameraCollider.d.ts +54 -0
  7. package/build/esm/types/camera/cameraPath.d.ts +120 -0
  8. package/build/esm/types/camera/cameraPathControls.d.ts +73 -0
  9. package/build/esm/types/camera/cameraPathManager.d.ts +67 -0
  10. package/build/esm/types/camera/flightControls.d.ts +76 -0
  11. package/build/esm/types/camera/orbitControls.d.ts +216 -0
  12. package/build/esm/types/camera/transferControls.d.ts +122 -0
  13. package/build/esm/types/editor/selector/boxSelector.d.ts +60 -0
  14. package/build/esm/types/editor/selector/selector.d.ts +145 -0
  15. package/build/esm/types/editor/selector/sphereSelector.d.ts +45 -0
  16. package/build/esm/types/extension/InstancedMeshEX.d.ts +101 -0
  17. package/build/esm/types/global.iife.d.ts +9 -0
  18. package/build/esm/types/loader/streamLoader.d.ts +21 -0
  19. package/build/esm/types/math/easing.d.ts +18 -0
  20. package/build/esm/types/math/interpolation.d.ts +70 -0
  21. package/build/esm/types/module.d.ts +5 -0
  22. package/build/esm/types/types/global.d.ts +32 -0
  23. package/build/esm/types/types/wasm.d.ts +12 -0
  24. package/build/esm/types/utility/console.d.ts +7 -0
  25. package/build/esm/types/utility/plyDecoder.d.ts +103 -0
  26. package/build/esm/types/utility/utility.d.ts +58 -0
  27. package/build/esm/types/viewer/canvas.d.ts +1293 -0
  28. package/build/esm/types/viewer/materialGenerator.d.ts +121 -0
  29. package/build/esm/types/viewer/renderView.d.ts +67 -0
  30. package/build/esm/types/viewer/tavioMesh.d.ts +526 -0
  31. package/build/esm/types/wasm-bindings/wasm-handlers.d.ts +42 -0
  32. package/build/esm/types/wasm-bindings/wasm-worker-client.d.ts +123 -0
  33. package/build/esm/types/wasm-bindings/wasm-worker.d.ts +48 -0
  34. package/build/esm/types/wasm-bindings/wasm.d.ts +2 -0
  35. package/build/esm/types/worker/tavioWorker.d.ts +63 -0
  36. package/build/esm/wasm/pkg/no-thread/package.json +18 -0
  37. package/build/esm/wasm/pkg/no-thread/tavio.d.ts +127 -0
  38. package/build/esm/wasm/pkg/no-thread/tavio.js +1243 -0
  39. package/build/esm/wasm/pkg/no-thread/tavio_bg.wasm +0 -0
  40. package/build/esm/wasm/pkg/no-thread/tavio_bg.wasm.d.ts +39 -0
  41. package/build/esm/wasm/pkg/thread/package.json +18 -0
  42. package/build/esm/wasm/pkg/thread/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js +107 -0
  43. package/build/esm/wasm/pkg/thread/tavio.d.ts +150 -0
  44. package/build/esm/wasm/pkg/thread/tavio.js +1419 -0
  45. package/build/esm/wasm/pkg/thread/tavio_bg.wasm +0 -0
  46. package/build/esm/wasm/pkg/thread/tavio_bg.wasm.d.ts +47 -0
  47. package/package.json +52 -0
@@ -0,0 +1,526 @@
1
+ import { CubeTexture, DataTexture, Euler, PerspectiveCamera, Points, RawShaderMaterial, Texture, Vector3, WebGLRenderer } from 'three';
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';
7
+ /**
8
+ * 画素情報として扱えるオブジェクト
9
+ */
10
+ type tImageSource = HTMLImageElement | HTMLCanvasElement;
11
+ /**
12
+ * 画像や canvas 要素をパースした結果
13
+ */
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
+ }
28
+ export declare class TavioMesh extends EventEmitter {
29
+ private worker;
30
+ private meshIndex;
31
+ private featureBits;
32
+ private majorVersionNumber;
33
+ private minorVersionNumber;
34
+ private backgroundExists;
35
+ private containmentRadius;
36
+ private sourceProperty;
37
+ private viewerOption;
38
+ private sharedData;
39
+ private usingSharedArrayBuffer;
40
+ private usingSphericalHarmonics;
41
+ private sphericalHarmonicsData;
42
+ private currentDegrees;
43
+ private gaussianCount;
44
+ private gaussianDataLengthInChunk;
45
+ private gaussianCountInChunk;
46
+ private gaussianData;
47
+ private gaussianIndexMap;
48
+ private sortMap;
49
+ private defaultRenderViewSymbol;
50
+ private gaussianOrderData;
51
+ private gaussianGeneralData;
52
+ private gaussianTransformData;
53
+ private transformTextureWidth;
54
+ private currentSelectionCount;
55
+ private gaussianDataTexture;
56
+ private gaussianCompressedDataTexture0;
57
+ private gaussianCompressedDataTexture1;
58
+ private gaussianCompressedDataTexture2;
59
+ private gaussianCompressedDataTexture3;
60
+ private currentVertexCount;
61
+ private maxDistance;
62
+ private gaussianGeneralDataTexture;
63
+ private gaussianTransformDataTexture;
64
+ private initializedTexture;
65
+ private initializedColorTexture;
66
+ initialized: boolean;
67
+ initializedPoints: boolean;
68
+ initializedBackground: boolean;
69
+ sorted: boolean;
70
+ private positionAttribute;
71
+ private indexAttribute;
72
+ private gaussianGeometry;
73
+ private gaussianMaterial;
74
+ private gaussianPickingMaterial;
75
+ private gaussianMesh;
76
+ private gaussianPickingMesh;
77
+ private gaussianPoints;
78
+ private gaussianPointGeometry;
79
+ private gaussianPointMaterial;
80
+ private gaussianPointUniforms;
81
+ private mainProperties;
82
+ private backgroundTexture;
83
+ private environmentTexture;
84
+ private useWasmSort;
85
+ private wasmSortInstance;
86
+ private wasmSortClient;
87
+ private hasBillboard;
88
+ private lastViewProjectionMap;
89
+ private depthRenderTarget;
90
+ private depthRenderScene;
91
+ private depthRenderCamera;
92
+ private depthRenderGeometry;
93
+ private depthRenderMaterial;
94
+ private depthRenderPlane;
95
+ /**
96
+ * this.gaussianGeneralData についての覚書
97
+ * RGBA がそれぞれ Uint8 で1つのスプラットに対応するデータであるため、常に4の倍数の長さとなる
98
+ * R は選択されているかどうかを意味し、Uint8 の各ビットがどのセレクターによるものかを意味する
99
+ * G は削除されているかどうかを意味し、将来的に undo/redo に対応するため削除操作のたびにインクリメントする
100
+ * B は tavio 形式時の生アルファを保持し、min-max で復元する前の状態のままシェーダに送る
101
+ * A は何番目のメッシュなのか、を意味する整数と……
102
+ * 1つのメッシュに対して複数のデータを統合する際に何番目のデータであるかの整数インデックスを保持する
103
+ * データは 8bit のアルファチャンネル1つに対して 4bit 整数を2つパックして詰め込む
104
+ */
105
+ /**
106
+ * this.gaussianTransformData についての覚書
107
+ * RGBA がそれぞれ Uint32 で1つのファイルに対応するデータであるため、常に4の倍数の長さとなる
108
+ * 1つの画素に、16bit の浮動小数点を合計8個格納し内訳は以下のとおり(スプラット単位ではなく、ファイル単位)
109
+ * R: 平行移動成分の XY
110
+ * G: 平行移動成分の Z と、全体のスケール係数 S
111
+ * B: クォータニオンの WX
112
+ * A: クォータニオンの YZ
113
+ */
114
+ /**
115
+ * インスタンスが発火するイベント
116
+ */
117
+ static EVENTS: string[];
118
+ /**
119
+ * @constructor
120
+ * @param index - プロジェクト全体として何番目のメッシュのインスタンスかを意味するインデックス
121
+ * @param camera - worker の更新のためにカメラのインスタンスが必要
122
+ * @param material - メッシュの生成に使うマテリアルは上の層から指定されたものを使う
123
+ * @param pickingMaterial - メッシュの生成に使うマテリアルは上の層から指定されたものを使う
124
+ */
125
+ constructor(index: number, material: RawShaderMaterial, pickingMaterial: RawShaderMaterial, viewerOption: iViewerOption);
126
+ /**
127
+ * ==========================================================================
128
+ * loader
129
+ * ==========================================================================
130
+ */
131
+ /**
132
+ * tavio 形式のリソースをロードする
133
+ * @param url - 読み込む .tavio ファイル
134
+ * @param option - ロード・パース関連のオプション
135
+ */
136
+ loadTavio(url: string, option?: iLoadingOption): Promise<void>;
137
+ /**
138
+ * ply 形式のリソースをロードする
139
+ * @param url - 読み込む .ply ファイル
140
+ * @param option - ロード・パース関連のオプション
141
+ */
142
+ loadPly(url: string, option?: iLoadingOption): Promise<void>;
143
+ /**
144
+ * splat 形式のリソースをロードする
145
+ * @param url - 読み込む .splat ファイル
146
+ */
147
+ loadSplat(url: string): Promise<void>;
148
+ /**
149
+ * 画像形式のリソースをロードする
150
+ * @param url - 読み込む画像ファイル
151
+ */
152
+ loadImage(url: string): Promise<void>;
153
+ /**
154
+ * tavio 形式のリソースをロードする
155
+ * @param url - 読み込む .tavio ファイル
156
+ * @param option - ロード・パース関連のオプション
157
+ * @param options.decodeMode - デコードモード. "sync", "concurrent", "parallel" を指定
158
+ * @param options.maxThreads - decodeMode が "parallel" のときに使用されるスレッド数の上限
159
+ * @param options.maxDecodePoints - 最大デコード点数. これを超える点は読み込まれない
160
+ * @param options.useSphericalHarmonics - 球面調和関数の交流成分を使用
161
+ * @param options.isEncodeEnabled - エンコードを有効にする. 有効にするとエンコード時に必要なデータを読み込む
162
+ */
163
+ loadTavioWasm(url: string, options?: ({
164
+ decodeMode?: "sync";
165
+ } | {
166
+ decodeMode: "parallel";
167
+ maxThreads?: number;
168
+ }) & {
169
+ maxDecodePoints?: number;
170
+ useSphericalHarmonics?: boolean;
171
+ isEncodeEnabled?: boolean;
172
+ }): Promise<void>;
173
+ /**
174
+ * 様々な形式のリソースをロードする
175
+ * @param url - 読み込むファイル
176
+ * @param format - ファイル形式
177
+ * @param options - ロード・パース関連のオプション
178
+ * @param options.useSphericalHarmonics - 球面調和関数の交流成分を使用
179
+ */
180
+ loadMeshWasm(url: string, format: "splat" | "ply" | "spz" | "sog", options?: {
181
+ useSphericalHarmonics?: boolean;
182
+ }): Promise<void>;
183
+ /**
184
+ * 様々な形式のリソースをセーブする
185
+ * @param filename - 保存ファイル名
186
+ * @param options.exportSphericalHarmonics - 球面調和関数の交流成分をエンコードする [default: true]
187
+ * @param options.exportCelestialSphere - 天体球の画像をエンコードする [default: true]
188
+ * @param options.sphericalHarmonicsSampleRate - 球面調和関数の交流成分の計算のサンプル率 [default: 0.1]
189
+ * @param options.celestialSphereDistanceRatio - 天体球の画像に使用する点の距離の比率 [default: 0.99]
190
+ */
191
+ saveTavioWasm(filename: string, options?: {
192
+ exportSphericalHarmonics?: boolean;
193
+ exportCelestialSphere?: boolean;
194
+ sphericalHarmonicsSampleRate?: number;
195
+ celestialSphereDistanceRatio?: number;
196
+ }): Promise<void>;
197
+ /**
198
+ * 様々な形式のリソースをセーブする
199
+ * @param filename - 保存ファイル名
200
+ * @param format - ファイル形式
201
+ */
202
+ saveMeshWasm(filename: string, format: "splat" | "ply" | "spz" | "sog"): Promise<void>;
203
+ /**
204
+ * canvas 要素からスプラットを生成してシーンに追加する
205
+ * @param canvas - 対象となる canvas 要素
206
+ */
207
+ loadCanvas(canvas: HTMLCanvasElement): Promise<void>;
208
+ /**
209
+ * 画像や canvas 要素をパースし変換する
210
+ * @param imageSource - 対象となる画像や canvas
211
+ */
212
+ convertImageSource(imageSource: tImageSource): iSplatSource;
213
+ /**
214
+ * ==========================================================================
215
+ * getter / setter
216
+ * ==========================================================================
217
+ */
218
+ /**
219
+ * 点描画用の Points インスタンスを返す
220
+ */
221
+ getPoints(): Points;
222
+ /**
223
+ * メッシュのインスタンスを返す
224
+ */
225
+ getMesh(): InstancedMeshEX;
226
+ /**
227
+ * ピッキング用メッシュのインスタンスを返す
228
+ */
229
+ getPickingMesh(): InstancedMeshEX;
230
+ /**
231
+ * 背景用テクスチャを返す
232
+ */
233
+ getBackgroundTexture(): Texture;
234
+ /**
235
+ * 環境マップ用テクスチャを返す
236
+ */
237
+ getEnvironmentTexture(): CubeTexture;
238
+ /**
239
+ * 含まれる全スプラットの最大距離を返す
240
+ */
241
+ getMaxDistance(): number;
242
+ /**
243
+ * ファイルヘッダおよび頂点の含まれる距離などの諸情報を返す
244
+ */
245
+ getHeaderInfo(): iHeaderInfo;
246
+ /**
247
+ * uniform 変数を返す
248
+ */
249
+ getUniforms(): any;
250
+ /**
251
+ * uniform 変数を設定する
252
+ * @param values - 設定する uniform 変数をキーとするオブジェクト
253
+ */
254
+ setUniforms(values: any): void;
255
+ /**
256
+ * 点描画用のマテリアルに紐づいている uniform 変数を返す
257
+ */
258
+ getPointsUniforms(): any;
259
+ /**
260
+ * 点描画用のマテリアルに uniform 変数を設定する
261
+ * @param values - 設定する uniform 変数をキーとするオブジェクト
262
+ */
263
+ setPointUniforms(values: any): void;
264
+ /**
265
+ * defines の定義を返す
266
+ */
267
+ getDefines(): any;
268
+ /**
269
+ * defines を設定する
270
+ * @param values - 設定する defines をキーとするオブジェクト
271
+ */
272
+ setDefines(values: any): void;
273
+ /**
274
+ * 点描画用のマテリアルに紐づいている defines の定義を返す
275
+ */
276
+ getPointsDefines(): any;
277
+ /**
278
+ * 点描画用のマテリアルに defines を設定する
279
+ * @param values - 設定する defines をキーとするオブジェクト
280
+ */
281
+ setPointDefines(values: any): void;
282
+ /**
283
+ * カメラ関係のパラメータを深度書き込み用に設定する
284
+ * @param viewProjectionMatrix - 要素の配列
285
+ * @param cameraPosition - 要素の配列
286
+ * @param renderer - レンダラー
287
+ * @param renderView - レンダービュー(どのビューに対する操作なのかを明示するために必要)
288
+ * @param isForce - 視野が動いたかどうかにかかわらず強制更新する
289
+ */
290
+ setCameraParameterForDepthRenderTarget(viewProjectionMatrix: number[], cameraPosition: number[], renderer: WebGLRenderer, renderView: RenderView, isForce?: boolean): Promise<void>;
291
+ /**
292
+ * 環境マップ用のテクスチャをインスタンスに設定する
293
+ * @param environment - PMREMGenerator で生成した環境マップ
294
+ */
295
+ setEnvironmentTexture(environment: CubeTexture): void;
296
+ /**
297
+ * ソートに WASM 版を利用するかどうかを設定する
298
+ * @param isUsing - 利用するかどうかのフラグ
299
+ */
300
+ setUsingWasmSort(isUsing: boolean): void;
301
+ /**
302
+ * 球面調和関数の交流成分を利用するかどうかを設定する
303
+ * @param isUsing - 利用するかどうかのフラグ
304
+ */
305
+ setUsingSphericalHarmonics(isUsing: boolean): void;
306
+ /**
307
+ * 球面調和関数の交流成分に対する係数を設定する(0.0 ~ 1.0)
308
+ * @param intensity - 0.0 で交流成分の効果が完全に不可視化される
309
+ */
310
+ setSphericalHarmonicsIntensity(intensity: number): void;
311
+ /**
312
+ * 点描画用ジオメトリに色を設定する
313
+ * @param color - 色のデータ
314
+ */
315
+ setColorIntoPoints(color: Uint8ClampedArray): void;
316
+ /**
317
+ * レンダービューの固有名を指定してソート済みインデックスを設定する
318
+ * @param name - レンダービューの固有名
319
+ */
320
+ setIndexAttribute(name: string | Symbol): void;
321
+ /**
322
+ * インデックスを指定して座標変換を設定する
323
+ * @param index - インデックス
324
+ * @param translation - 平行移動
325
+ * @param rotation - 回転(オイラー角)
326
+ * @param scale - 拡大縮小(XYZ で統一のスケール)
327
+ * @param force - 同時にテクスチャの内容を強制的に書き換えるかどうか
328
+ */
329
+ setTransform(index: number, translation: Vector3, rotation: Euler, scale: number, isForce?: boolean): void;
330
+ /**
331
+ * 指定されたインデックスの座標変換情報を返す
332
+ * @param index - インデックス
333
+ */
334
+ getTransform(index: number): iTransform;
335
+ /**
336
+ * インデックスを指定してビルボードの設定を行う
337
+ * @param index - インデックス
338
+ * @param flag - ビルボードとして扱うかどうか
339
+ */
340
+ setBillboard(index: number, flag: boolean): void;
341
+ /**
342
+ * ビルボードのための transform 情報の更新を行う
343
+ * @param camera - カメラのワールド空間上の位置
344
+ */
345
+ updateBillboard(camera: PerspectiveCamera): void;
346
+ /**
347
+ * インスタンスごとの transform 情報をテクスチャに適用し更新する
348
+ * @private
349
+ */
350
+ private _updateTransformData;
351
+ /**
352
+ * 自身のプロパティの状態に応じて球面調和関数に関連する uniform 変数の更新を行う
353
+ * @private
354
+ */
355
+ private _updateUniformsForSphericalHarmonics;
356
+ /**
357
+ * tavio 形式の特性フラグを取得する
358
+ * @private
359
+ * @param featureBits - tavio 形式ファイルのヘッダにある Uint32 の特性フラグ
360
+ */
361
+ private _getFeatureBits;
362
+ /**
363
+ * ==========================================================================
364
+ * general
365
+ * ==========================================================================
366
+ */
367
+ /**
368
+ * picking 用マテリアルに uniform 変数を同期する
369
+ * @param camera - 対象となるカメラ
370
+ */
371
+ syncPinckingMaterial(camera: PerspectiveCamera): void;
372
+ /**
373
+ * ソートを実行する
374
+ * @param renderView - ソート処理の対象となるビューの情報を持つレンダービュー
375
+ */
376
+ runSort(renderView: RenderView): void;
377
+ /**
378
+ * 各種リソースを解放する
379
+ */
380
+ dispose(): void;
381
+ /**
382
+ * SharedArrayBuffer 用のデータ領域を確保または統合する
383
+ * @param index - これが何番目のデータ(ファイル)か
384
+ * @param offset - 開始位置(最初のファイルならゼロ、二番目以降なら直前までのスプラットの個数)
385
+ * @param chunkCount - 該当ファイルのチャンクの個数
386
+ * @param pointCount - 該当ファイルのスプラットの個数
387
+ * @param isEncodeEnable - エンコード可能とするかどうか(WASM 用)
388
+ */
389
+ allocateSharedData(index: number, offset: number, chunkCount: number, pointCount: number, isEncodeEnabled: Boolean): SharedData;
390
+ /**
391
+ * テクスチャのセットアップが完了しているかどうかを返す
392
+ * @private
393
+ */
394
+ private _getInitialized;
395
+ /**
396
+ * ソートが終わったあとの共通処理を行う
397
+ * @private
398
+ * @param name - 対象となるレンダービューの名前
399
+ * @param count - 処理した頂点の個数
400
+ * @param time - 処理に要した時間(ms)
401
+ */
402
+ private _onSort;
403
+ /**
404
+ * ==========================================================================
405
+ * setup
406
+ * ==========================================================================
407
+ */
408
+ /**
409
+ * データのロード前に各種フラグをセットアップする
410
+ */
411
+ setupFlags(): void;
412
+ /**
413
+ * tavio 形式用の worker をセットアップする
414
+ */
415
+ setupTavioWorker(): void;
416
+ /**
417
+ * 点描画用の頂点情報をセットアップする
418
+ * @param position - 座標を意味するデータ
419
+ */
420
+ setupPoints(position: Float32Array): void;
421
+ /**
422
+ * 頂点情報をセットアップする
423
+ * @param count - 頂点の総個数(想定される頂点の最大個数)
424
+ */
425
+ setupGeometry(count: number): void;
426
+ /**
427
+ * ファイルごとに個別に transform するためのデータ領域を確保する
428
+ * @param index - これが何番目のデータ(ファイル)か
429
+ * @param offset - 開始位置(最初のファイルならゼロ、二番目以降なら直前までのスプラットの個数)
430
+ * @param totalCount - スプラットの総個数
431
+ */
432
+ setupTransformData(index: number, offset: number, totalCount: number): void;
433
+ /**
434
+ * gaussian のデータを書き込んだデータテクスチャを生成する
435
+ * @param data - 書き込むデータ
436
+ * @param width - テクスチャの幅
437
+ * @param height - テクスチャの高さ
438
+ */
439
+ setupDataTexture(data: Uint32Array, width: number, height: number): DataTexture;
440
+ /**
441
+ * 球面調和関数の交流成分由来となる色のデータを書き込んだデータテクスチャを生成する
442
+ * @param data - 書き込むデータ
443
+ * @param width - テクスチャの幅
444
+ * @param height - テクスチャの高さ
445
+ */
446
+ setupColorDataTexture(data: Uint8Array, width: number, height: number): DataTexture;
447
+ /**
448
+ * 球面調和関数の交流成分由来を圧縮したデータを下記のだデータテクスチャを生成する
449
+ * @param data - 書き込むデータ
450
+ * @param width - テクスチャの幅
451
+ * @param height - テクスチャの高さ
452
+ */
453
+ setupCompressedColorDataTexture(data: Uint32Array, width: number, height: number): DataTexture;
454
+ /**
455
+ * セレクターとの交差など汎用データ用のデータテクスチャを生成する
456
+ * @param data - 書き込むデータ
457
+ * @param width - テクスチャの幅
458
+ * @param height - テクスチャの高さ
459
+ */
460
+ setupGeneralDataTexture(data: Uint8Array, width: number, height: number): DataTexture;
461
+ /**
462
+ * 汎用データ用のテクスチャを更新し uniform 変数へ反映する
463
+ */
464
+ updateGeneralTexture(): void;
465
+ /**
466
+ * 頂点属性を全走査し原点からの最大距離を求める
467
+ * @private
468
+ * @param position - 全 3DGS のワールド空間上の位置
469
+ */
470
+ private _getMaxDistance;
471
+ /**
472
+ * ファイルごとの座標変換情報を格納するデータ用のデータテクスチャを生成する
473
+ * @param data - 書き込むデータ
474
+ * @param width - テクスチャの幅
475
+ * @param height - テクスチャの高さ
476
+ */
477
+ setupTransformDataTexture(data: Uint32Array, width: number, height: number): DataTexture;
478
+ /**
479
+ * ==========================================================================
480
+ * collision / selection
481
+ * ==========================================================================
482
+ */
483
+ /**
484
+ * 衝突判定を設定する
485
+ * @param collision - 設定する衝突判定、またはその配列
486
+ */
487
+ setCollision(collision: iCollisionTarget | iCollisionTarget[]): void;
488
+ /**
489
+ * 現在の衝突判定を解除する
490
+ */
491
+ resetCollision(): void;
492
+ /**
493
+ * 現在選択しているスプラットを削除状態とする
494
+ */
495
+ deleteSelectedGaussian(): void;
496
+ /**
497
+ * 削除状態を一世代前に戻す
498
+ */
499
+ undoDeletedGaussian(): void;
500
+ /**
501
+ * すべての削除状態をリセットする
502
+ */
503
+ resetDeletedGaussian(): void;
504
+ /**
505
+ * 衝突判定用のリソースを設定する
506
+ * @private
507
+ */
508
+ private _updateCollisionResource;
509
+ }
510
+ declare class SharedData {
511
+ sharedGaussianData: SharedArrayBuffer;
512
+ sharedGaussianOrderData: SharedArrayBuffer;
513
+ sharedGaussianGeneralData: SharedArrayBuffer;
514
+ sharedSphericalHarmonicsData: SharedArrayBuffer;
515
+ sharedSphericalHarmonicsLabel: SharedArrayBuffer;
516
+ sharedSphericalHarmonicsMaxQuantizationIndex: SharedArrayBuffer;
517
+ constructor(gaussianDataSize: number, gaussianGeneralDataSize: number, chunkCount: number, pointCount: number, isEncodeEnabled: Boolean);
518
+ get gaussianData(): Uint8Array;
519
+ get gaussianOrderData(): Uint8Array;
520
+ get gaussianGeneralData(): Uint8Array;
521
+ get sphericalHarmonicsData(): Float32Array;
522
+ get sphericalHarmonicsLabel(): Uint16Array;
523
+ get sphericalHarmonicsMaxQuantizationIndex(): Uint32Array;
524
+ get isEncodeEnabled(): boolean;
525
+ }
526
+ export {};
@@ -0,0 +1,42 @@
1
+ import { Euler, IUniform, Texture, Vector3 } from 'three';
2
+ import { WasmDecodeBodyEvent, WasmDecodeHeaderEvent } from './wasm-worker-client';
3
+ export declare function wasmBuildSourceProperty(event: WasmDecodeHeaderEvent, sourceIndex: number, sourceVertexOffset: number): {
4
+ ready: boolean;
5
+ index: number;
6
+ type: "tavio" | "splat" | "ply" | "spz" | "sog";
7
+ vertexCount: number;
8
+ vertexOffset: number;
9
+ featureBits: number;
10
+ containmentRadius: {
11
+ per100: any;
12
+ };
13
+ magicNumber: string;
14
+ majorVersion: number;
15
+ minorVersion: number;
16
+ transform: {
17
+ translation: Vector3;
18
+ rotation: Euler;
19
+ scale: number;
20
+ };
21
+ billboard: boolean;
22
+ };
23
+ export declare function wasmBuildSharedData(event: WasmDecodeHeaderEvent, prototype: object, gaussianCount: number, generalDataSize: number, orderDataSize: number): any;
24
+ export declare function wasmBuildCelestialSphereSource(backgroundTexture: Texture | null | undefined): {
25
+ width: number;
26
+ height: number;
27
+ imageRgba: Uint8Array;
28
+ };
29
+ export declare function wasmBuildWorkerUpdateMessage(event: WasmDecodeBodyEvent, uniforms: {
30
+ [uniform: string]: IUniform;
31
+ }, sourceIndex: number, usingSharedArrayBuffer: boolean): {
32
+ message: any;
33
+ transfer: ArrayBufferLike[];
34
+ };
35
+ export declare function wasmUpdateUniforms(event: WasmDecodeBodyEvent, uniforms: {
36
+ [uniform: string]: IUniform;
37
+ }, sourceIndex: number): void;
38
+ export declare function requestWorkerBuffer(worker: Worker): Promise<{
39
+ gaussianData: Uint8Array;
40
+ sphericalHarmonicsData: Float32Array;
41
+ }>;
42
+ export declare function downloadAsFile(bytes: Uint8Array, filename: string): void;
@@ -0,0 +1,123 @@
1
+ import { WasmFnMap, WasmWorkerInitOptions } from './wasm-worker';
2
+ export interface ResolvedGaussianEdits {
3
+ pointCount: number;
4
+ gaussianData: Uint8Array;
5
+ sphericalHarmonicsData?: Float32Array;
6
+ scaleMinValues: Float32Array;
7
+ scaleMaxValues: Float32Array;
8
+ }
9
+ type AsyncWasmFnMap = {
10
+ [K in Exclude<keyof WasmFnMap, "registerEventHandler">]: WasmFnMap[K] extends (...args: infer A) => infer R ? (...args: A) => Promise<Awaited<R>> : never;
11
+ } & {
12
+ resolveGaussianEdits: (...args: Parameters<WasmFnMap["resolveGaussianEdits"]>) => Promise<ResolvedGaussianEdits>;
13
+ };
14
+ type HeaderByFormat = {
15
+ tavio: {
16
+ version: number[];
17
+ totalPointCount: number;
18
+ featureFlags: number;
19
+ };
20
+ splat: null;
21
+ ply: {
22
+ majorVersion: number;
23
+ minorVersion: number;
24
+ encoding: string;
25
+ comments: string[];
26
+ };
27
+ spz: {
28
+ magic: string;
29
+ version: number;
30
+ num_points: number;
31
+ sh_degree: number;
32
+ fractionalBits: number;
33
+ flags: number;
34
+ };
35
+ sog: {
36
+ version: number;
37
+ count: number;
38
+ antialias?: boolean;
39
+ };
40
+ };
41
+ export type WasmDecodeHeaderEvent = {
42
+ type: "decode:header";
43
+ totalPointCount: number;
44
+ sharedGaussianBuffer: SharedArrayBuffer | null;
45
+ sharedShBuffer: SharedArrayBuffer | null;
46
+ } & ({
47
+ format: "tavio";
48
+ header: HeaderByFormat["tavio"];
49
+ } | {
50
+ format: "splat";
51
+ header: HeaderByFormat["splat"];
52
+ } | {
53
+ format: "ply";
54
+ header: HeaderByFormat["ply"];
55
+ } | {
56
+ format: "spz";
57
+ header: HeaderByFormat["spz"];
58
+ } | {
59
+ format: "sog";
60
+ header: HeaderByFormat["sog"];
61
+ });
62
+ export type WasmDecodeBodyEvent = {
63
+ type: "decode:body";
64
+ pointCount: number;
65
+ gaussianBuffer: Uint8Array | null;
66
+ shBuffer?: Float32Array | null;
67
+ point: Float32Array;
68
+ color: Uint8ClampedArray;
69
+ scaleMinValues: Float32Array;
70
+ scaleMaxValues: Float32Array;
71
+ alphaMinValue: number;
72
+ alphaMaxValue: number;
73
+ };
74
+ export type WasmEvent = {
75
+ type: "decode:fileSize";
76
+ fileSize: number;
77
+ } | WasmDecodeHeaderEvent | WasmDecodeBodyEvent | {
78
+ type: "decode:chunkMain";
79
+ chunkIndex: number;
80
+ pointCount: number;
81
+ data: Uint8Array;
82
+ scaleMinValues: Float32Array;
83
+ scaleMaxValues: Float32Array;
84
+ alphaMinValue: number;
85
+ alphaMaxValue: number;
86
+ } | {
87
+ type: "decode:chunkMainHeader";
88
+ chunkIndex: number;
89
+ chunkMainHader: any;
90
+ } | {
91
+ type: "decode:chunkMainSphericalHarmonics";
92
+ chunkIndex: number;
93
+ data: any;
94
+ } | {
95
+ type: "decode:chunkCelestialSphere";
96
+ chunkIndex: number;
97
+ data: ImageBitmap;
98
+ } | {
99
+ type: "decode:point";
100
+ chunkIndex: number;
101
+ data: Float32Array;
102
+ } | {
103
+ type: "decode:color";
104
+ chunkIndex: number;
105
+ data: Uint8ClampedArray;
106
+ };
107
+ type WasmEventHandler = (e: WasmEvent) => void;
108
+ export declare class TavioWasmWorkerClient {
109
+ private worker;
110
+ private readyResolve;
111
+ private readyPromise;
112
+ private resolverId;
113
+ private resolvers;
114
+ private eventHandler;
115
+ constructor(options?: WasmWorkerInitOptions);
116
+ dispose(): void;
117
+ static create(options?: WasmWorkerInitOptions): Promise<TavioWasmWorkerClient>;
118
+ get api(): AsyncWasmFnMap;
119
+ registerEventHandler(eventHandler: WasmEventHandler): void;
120
+ private handleMessage;
121
+ private call;
122
+ }
123
+ export {};