@openheart/tavio-renderer 1.0.12-with-wasm → 2.0.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 (49) hide show
  1. package/build/esm/assets/tavio-DVLlyem4.js +602 -0
  2. package/build/esm/assets/workerHelpers-BWRcUO-d.js +22 -0
  3. package/build/esm/index.js +12042 -44186
  4. package/build/esm/types/camera/cameraCollider.d.ts +1 -1
  5. package/build/esm/types/camera/cameraPathControls.d.ts +3 -3
  6. package/build/esm/types/camera/flightControls.d.ts +1 -1
  7. package/build/esm/types/camera/orbitControls.d.ts +20 -4
  8. package/build/esm/types/camera/transferControls.d.ts +1 -1
  9. package/build/esm/types/editor/selector/boxSelector.d.ts +4 -3
  10. package/build/esm/types/editor/selector/selector.d.ts +9 -9
  11. package/build/esm/types/loader/streamLoader.d.ts +4 -4
  12. package/build/esm/types/module.d.ts +6 -4
  13. package/build/esm/types/viewer/canvas.d.ts +176 -1236
  14. package/build/esm/types/viewer/constants.d.ts +99 -0
  15. package/build/esm/types/viewer/driver/coreDriver.d.ts +1402 -0
  16. package/build/esm/types/viewer/driver/iCoreDriver.d.ts +206 -0
  17. package/build/esm/types/viewer/driver/offscreenDriver.d.ts +222 -0
  18. package/build/esm/types/viewer/driver/rpcBridge.d.ts +39 -0
  19. package/build/esm/types/viewer/driver/workerElementAdapter.d.ts +66 -0
  20. package/build/esm/types/viewer/materialGenerator.d.ts +37 -35
  21. package/build/esm/types/viewer/renderView.d.ts +14 -4
  22. package/build/esm/types/viewer/shaderRegistry.d.ts +22 -0
  23. package/build/esm/types/viewer/tavioMesh/localTransform.d.ts +65 -0
  24. package/build/esm/types/viewer/tavioMesh/minMaxRange.d.ts +47 -0
  25. package/build/esm/types/viewer/tavioMesh/parsers/imageParser.d.ts +14 -0
  26. package/build/esm/types/{utility/plyDecoder.d.ts → viewer/tavioMesh/parsers/plyParser.d.ts} +9 -37
  27. package/build/esm/types/viewer/tavioMesh/parsers/splatParser.d.ts +12 -0
  28. package/build/esm/types/viewer/tavioMesh/selection.d.ts +39 -0
  29. package/build/esm/types/viewer/{tavioMesh.d.ts → tavioMesh/tavioMesh.d.ts} +195 -71
  30. package/build/esm/types/viewer/types.d.ts +376 -0
  31. package/build/esm/types/wasm-bindings/wasm-handlers.d.ts +23 -3
  32. package/build/esm/types/wasm-bindings/wasm-worker-client.d.ts +19 -7
  33. package/build/esm/types/wasm-bindings/wasm-worker.d.ts +1 -1
  34. package/build/esm/types/worker/renderingWorker.d.ts +8 -0
  35. package/build/esm/types/worker/tavioWorker.d.ts +6 -43
  36. package/build/esm/wasm/pkg/no-thread/package.json +2 -2
  37. package/build/esm/wasm/pkg/no-thread/tavio.d.ts +15 -15
  38. package/build/esm/wasm/pkg/no-thread/tavio.js +134 -132
  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 +14 -14
  41. package/build/esm/wasm/pkg/thread/package.json +2 -2
  42. package/build/esm/wasm/pkg/thread/tavio.d.ts +20 -20
  43. package/build/esm/wasm/pkg/thread/tavio.js +163 -161
  44. package/build/esm/wasm/pkg/thread/tavio_bg.wasm +0 -0
  45. package/build/esm/wasm/pkg/thread/tavio_bg.wasm.d.ts +19 -19
  46. package/package.json +4 -3
  47. package/build/esm/assets/tavio-B99BKbbN.js +0 -971
  48. package/build/esm/assets/workerHelpers-DWTUmD6Q.js +0 -39
  49. package/build/esm/types/animation/animationController.d.ts +0 -133
@@ -1,5 +1,5 @@
1
- import { Group, PerspectiveCamera, Quaternion, Scene, Vector3 } 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';
@@ -18,8 +18,13 @@ export declare class RenderView {
18
18
  y: number;
19
19
  width: number;
20
20
  height: number;
21
+ /**
22
+ * 以下のプロパティ各種は RenderView のインスタンスを生成した側で代入される
23
+ * このクラス内ではその中身が undefined でないかどうかは担保しない点に注意
24
+ */
21
25
  scene: Scene;
22
- pickingScene: Scene;
26
+ queryScene: Scene;
27
+ shadowingScene: Scene;
23
28
  gaussianGroup: Group;
24
29
  meshGroup: Group;
25
30
  interfaceGroup: Group;
@@ -31,12 +36,17 @@ export declare class RenderView {
31
36
  cameraCollider: CameraCollider;
32
37
  cameraPathCollisionRadius: number;
33
38
  cameraPathManager: CameraPathManager;
39
+ ambientLights: AmbientLight[];
40
+ spotLights: SpotLight[];
41
+ spotLightHelpers: CameraHelper[];
34
42
  previousPosition: Vector3;
35
43
  previousRotation: Quaternion;
36
44
  previousFov: number;
37
45
  orbitCursor: Group;
38
- orbitCursorEnabled: boolean;
46
+ orbitCursorAutoDisplay: boolean;
47
+ orbitCursorDisplay: boolean;
39
48
  previousOrbitTarget: Vector3;
49
+ axesHelper?: AxesHelper;
40
50
  /**
41
51
  * @param name - レンダービューの名前
42
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,4 +1,6 @@
1
+ import { iParsedSplatData } from '../../types';
1
2
  type tTypedArray = Float64Array | Float32Array | Int32Array | Uint32Array | Int16Array | Uint16Array | Uint8Array;
3
+ type tTypedArrayConstructor = Float64ArrayConstructor | Float32ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Uint8ArrayConstructor;
2
4
  export interface iPlyElement {
3
5
  type: string;
4
6
  name: string;
@@ -17,22 +19,10 @@ export interface iSplatData {
17
19
  sphericalHarmonicsBuffer: Float32Array;
18
20
  sphericalHarmonicsDegrees: number;
19
21
  }
20
- export interface iTavioData extends iSplatData {
21
- position: Float32Array;
22
- color: Uint8ClampedArray;
23
- scaleMinX: number;
24
- scaleMinY: number;
25
- scaleMinZ: number;
26
- alphaMin: number;
27
- scaleMaxX: number;
28
- scaleMaxY: number;
29
- scaleMaxZ: number;
30
- alphaMax: number;
31
- }
32
22
  /**
33
- * PLY 形式の中身確認用簡易デコーダ
23
+ * PLY 形式の中身確認用簡易パーサー
34
24
  */
35
- export declare class PlyDecoder {
25
+ export declare class PlyParser {
36
26
  /** ヘッダとして読み込むバイト長 */
37
27
  static HEADER_READ_BYTE_LENGTH: number;
38
28
  /** splat データの1つあたりのバイトサイズ */
@@ -50,37 +40,19 @@ export declare class PlyDecoder {
50
40
  static SH_C0: number;
51
41
  /** .ply のプロパティのデータタイプと対応付けを行うためのデータ構造 */
52
42
  static PROPERTY_TYPE: {
53
- double: string;
54
- float: string;
55
- int: string;
56
- uint: string;
57
- short: string;
58
- ushort: string;
59
- uchar: string;
43
+ [key: string]: string;
60
44
  };
61
45
  static PROPERTY_TYPED_ARRAY: {
62
- double: Float64ArrayConstructor;
63
- float: Float32ArrayConstructor;
64
- int: Int32ArrayConstructor;
65
- uint: Uint32ArrayConstructor;
66
- short: Int16ArrayConstructor;
67
- ushort: Uint16ArrayConstructor;
68
- uchar: Uint8ArrayConstructor;
46
+ [key: string]: tTypedArrayConstructor;
69
47
  };
70
48
  static PROPERTY_BYTE_LENGTH: {
71
- double: number;
72
- float: number;
73
- int: number;
74
- uint: number;
75
- short: number;
76
- ushort: number;
77
- uchar: number;
49
+ [key: string]: number;
78
50
  };
79
51
  /**
80
52
  * ply のヘッダ文字列をデコードする
81
53
  * @param buffer - ply 由来の ArrayBuffer データ
82
54
  */
83
- static decodeHeader(buffer: ArrayBufferLike): iPlyData;
55
+ static decodeHeader(buffer: ArrayBufferLike): iPlyData | null;
84
56
  /**
85
57
  * ply のバイナリ部分をデコードする
86
58
  * @param out - ヘッダ情報(decodeHeader の戻り値)
@@ -98,6 +70,6 @@ export declare class PlyDecoder {
98
70
  * @param start - 対象のスプラットの開始インデックス
99
71
  * @param end - 対象のスプラットの終了インデックス
100
72
  */
101
- static createTavio(data: iPlyData): iTavioData;
73
+ static createTavio(data: iPlyData): iParsedSplatData;
102
74
  }
103
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
+ }