@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
@@ -0,0 +1,206 @@
1
+ import { default as EventEmitter } from 'eventemitter3';
2
+ import { iViewerOption, iViewerMaterialOption, iLoadingOption, iHeaderInfo, iTransform, iVectorLike, iSelectorInfo, iPickingInfo, iCameraPathOption, iCameraParameter, tSelectionMode, tMaskSource, tControlsType, tUniformValue, tCustomDefines, tCustomUniforms } from '../types';
3
+ import { iCollisionTarget } from '../../worker/tavioWorker';
4
+ import { iSphereSelectorOption } from '../../editor/selector/sphereSelector';
5
+ import { iBoxSelectorOption } from '../../editor/selector/boxSelector';
6
+ import { MeshStandardMaterialParameters } from 'three';
7
+ import { iLatitudeLongitude } from '../../camera/flightControls';
8
+ import { WorkerElementAdapter } from './workerElementAdapter';
9
+ import { CameraPath } from '../../camera/cameraPath';
10
+ export interface iCoreDriver extends EventEmitter {
11
+ canvas: HTMLCanvasElement | OffscreenCanvas;
12
+ viewerOption: iViewerOption;
13
+ getElementAdapter(): HTMLCanvasElement | OffscreenCanvas | WorkerElementAdapter;
14
+ init(canvas: HTMLCanvasElement | OffscreenCanvas, materialOption?: iViewerMaterialOption): void;
15
+ start(): void;
16
+ pause(): void;
17
+ resume(): void;
18
+ resize(width?: number, height?: number, start?: boolean): void;
19
+ dispose(): void;
20
+ addAmbientLight(color: number, intensity: number): void;
21
+ addSpotLight(position: iVectorLike, target: iVectorLike, color: number, intensity: number, distance: number, angle: number, penumbra: number, decay: number, castShadow?: boolean, isDebug?: boolean): void;
22
+ addWhiteCube(position?: iVectorLike, scale?: iVectorLike, receiveShadow?: boolean, materialOption?: MeshStandardMaterialParameters): void;
23
+ setAmbientLightIntensity(intensity: number): void;
24
+ setSpotLightPosition(position: iVectorLike): void;
25
+ setSpotLightTargetPosition(target: iVectorLike): void;
26
+ setSpotLightIntensity(intensity: number): void;
27
+ setSpotLightDistance(distance: number): void;
28
+ setSpotLightAngle(angle: number): void;
29
+ setSpotLightPenumbra(penumbra: number): void;
30
+ setSpotLightDecay(decay: number): void;
31
+ renderShadow(): void;
32
+ loadTavio(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
33
+ loadTavioWasm(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
34
+ loadPly(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
35
+ loadSplat(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
36
+ loadImage(name: string, source: string | Blob | ArrayBuffer | ImageBitmap, option?: iLoadingOption): Promise<void>;
37
+ loadCanvas(name: string, canvas: HTMLCanvasElement | OffscreenCanvas | ImageBitmap, option?: iLoadingOption): Promise<void>;
38
+ concatTavio(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
39
+ concatPly(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
40
+ concatSplat(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
41
+ concatImage(name: string, source: string | Blob | ArrayBuffer | ImageBitmap, option?: iLoadingOption): Promise<void>;
42
+ concatCanvas(name: string, canvas: HTMLCanvasElement | OffscreenCanvas | ImageBitmap, option?: iLoadingOption): Promise<void>;
43
+ saveSplatWasm(name: string, fileName?: string): Promise<any>;
44
+ savePlyWasm(name: string, fileName?: string): Promise<any>;
45
+ saveSpzWasm(name: string, fileName?: string): Promise<any>;
46
+ saveTavioWasm(name: string, fileName?: string, options?: any): Promise<any>;
47
+ exportTavioWasm(name: string, options?: any): Promise<any>;
48
+ addTavioMesh(name: string): void;
49
+ removeTavioMesh(name: string, renderViewName?: string | Symbol): void;
50
+ removeTavioMeshAllRenderView(name: string): void;
51
+ disposeTavioMesh(name: string): void;
52
+ setVisibilityTavioMesh(name: string, visibility: boolean): void;
53
+ setVisibilityPoints(name: string, visibility: boolean): void;
54
+ setBackgroundOpacity(opacity: number): void;
55
+ setBackgroundByTavioMesh(name: string): void;
56
+ getFirstMeshName(): Promise<string | null> | string | null;
57
+ createRenderView(name: string | Symbol): void;
58
+ setRenderView(name?: string | Symbol | null): void;
59
+ getCurrentRenderViewName(): Promise<string | null> | string | null;
60
+ getRenderViewCount(): Promise<number> | number;
61
+ setRenderViewSize(renderViewName?: string | Symbol, x?: number, y?: number, width?: number, height?: number, start?: boolean): void;
62
+ getWorldPositionByRenderView(x: number, y: number, isDebug?: boolean): Promise<iPickingInfo | null> | iPickingInfo | null;
63
+ setUniforms(uniforms: Record<string, tUniformValue>): void;
64
+ setPointUniforms(uniforms: Record<string, tUniformValue>): void;
65
+ setCustomDefines(defines: tCustomDefines): void;
66
+ setCustomUniforms(uniforms: tCustomUniforms): void;
67
+ setGaussianScale(scale: number): void;
68
+ setOpacityAdditive(opacity: number): void;
69
+ setOpacityMultiplier(multiplier: number): void;
70
+ setOpacityPoints(opacity: number): void;
71
+ setSphericalHarmonicsIntensity(intensity: number): void;
72
+ setUsingSphericalHarmonics(isUsing: boolean): void;
73
+ setColorBlur(blur: number): void;
74
+ setColorSharpness(sharpness: number): void;
75
+ setColorTemperature(temperature: number): void;
76
+ setColorTint(tint: number): void;
77
+ setColorContrast(contrast: number): void;
78
+ setHSVColor(hsv: iVectorLike): void;
79
+ setColorRGB(rgb: iVectorLike): void;
80
+ setClippingEnabled(enabled: boolean): void;
81
+ setClippingSphere(position: iVectorLike, scale: iVectorLike): void;
82
+ setOutsideClipPointSize(size: number): void;
83
+ setOutsideClipOpacity(opacity: number): void;
84
+ setEffectMinimumScale(value: number): void;
85
+ setEffectDistanceBase(value: number): void;
86
+ setEffectDistanceRange(value: number): void;
87
+ setWorldOrigin(x: number, y: number, z: number): void;
88
+ setEffectDistancePoints(value: number): void;
89
+ setEffectDistanceNearPoints(value: number): void;
90
+ setEffectSonar(value: number): void;
91
+ setEffectSonarRange(value: number): void;
92
+ startBloomPoints(duration?: number): void;
93
+ startDissolveToGaussian(duration?: number, backgroundFadeInDelay?: number, backgroundFadeInDuration?: number): void;
94
+ startSonarWave(duration?: number): void;
95
+ animatePath(name?: string, duration?: number): void;
96
+ startFadeInBackground(duration?: number): void;
97
+ startFadeOutBackground(duration?: number): void;
98
+ setOrbitCursorAutoDisplay(enabled: boolean): void;
99
+ isOrbitCursorAutoDisplayEnabled(): Promise<boolean> | boolean;
100
+ setOrbitCursorDisplay(enabled: boolean): void;
101
+ isOrbitCursorDisplay(): Promise<boolean> | boolean;
102
+ setOrbitCursorScale(scale: number): void;
103
+ setAxisVisible(visible: boolean): void;
104
+ isAxisVisible(): Promise<boolean> | boolean;
105
+ applyLocalTransformToSelected(name: string, translation: iVectorLike, rotation: iVectorLike, scale: iVectorLike): void;
106
+ resetLocalTransformOfSelected(name: string): void;
107
+ resetAllLocalTransforms(name: string): void;
108
+ setLocalTransformGizmoEnabled(enabled: boolean): void;
109
+ setLocalTransformGizmoMode(mode: "translate" | "rotate" | "scale"): void;
110
+ setDropShadow(enabled: boolean): void;
111
+ setModelTransform(name: string, translation: iVectorLike, rotation: iVectorLike, scale: number): void;
112
+ getModelTransform(name: string): Promise<iTransform | null> | iTransform | null;
113
+ setTransform(name: string, index: number, translation: iVectorLike, rotation: iVectorLike, scale: number): void;
114
+ getTransform(name: string, index: number): Promise<iTransform | null> | iTransform | null;
115
+ setBillboard(name: string, index: number, flag: boolean): void;
116
+ setCameraParameter(position?: number[] | iVectorLike, target?: number[] | iVectorLike, fov?: number): void;
117
+ getCameraParameter(): Promise<iCameraParameter> | iCameraParameter;
118
+ setCameraColliderEnabled(enabled: boolean): void;
119
+ setCameraColliderSelector(selectorNames?: string[]): void;
120
+ getCameraColliderEnabled(): Promise<boolean> | boolean;
121
+ setInteractiveMode(interactive: boolean): void;
122
+ getInteractiveMode(): Promise<boolean> | boolean;
123
+ setControlsType(controlsType: string): void;
124
+ getControlsType(): Promise<tControlsType> | tControlsType;
125
+ setControlsAttenuation(attenuation: number): void;
126
+ selectCameraPath(name: string): void;
127
+ updateCameraPath(time?: number): void;
128
+ createCameraPath(position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): CameraPath | void;
129
+ addCameraPath(name: string, position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): void;
130
+ removeCameraPath(name: string): void;
131
+ getPathNames(): Promise<string[]> | string[];
132
+ getActiveCameraPathName(): Promise<string | null> | string | null;
133
+ getCameraPathByTime(name?: string, time?: number): Promise<{
134
+ position: iVectorLike;
135
+ target: iVectorLike;
136
+ } | null> | {
137
+ position: iVectorLike;
138
+ target: iVectorLike;
139
+ } | null;
140
+ getCameraPathTime(): Promise<number> | number;
141
+ setCameraPathOption(option: iCameraPathOption): void;
142
+ setCameraPathCollisionRadius(radius: number): void;
143
+ setCameraPathInteraction(x: number, y: number): void;
144
+ setOrbitPointerDown(isDown: boolean): void;
145
+ setOrbitRelativeRotateLeft(value: number): void;
146
+ setOrbitRelativeRotateUp(value: number): void;
147
+ setOrbitRelativeTranslateLeft(value: number): void;
148
+ setOrbitRelativeTranslateUp(value: number): void;
149
+ setOrbitRelativeDollyOut(value: number): void;
150
+ getOrbitDistance(): Promise<number> | number;
151
+ setOrbitDistance(distance: number): void;
152
+ setOrbitRotation(pitch: number, yaw: number, isForce?: boolean): void;
153
+ setOrbitRelativeRotation(pitch: number, yaw: number): void;
154
+ setOrbitEnableZoom(enable: boolean): void;
155
+ setOrbitEnablePan(enable: boolean): void;
156
+ setOrbitEnableLimit(enable: boolean): void;
157
+ setOrbitEnableZoomLimit(enable: boolean): void;
158
+ setOrbitOverflow(value: number): void;
159
+ setOrbitUpLimit(value: number): void;
160
+ setOrbitDownLimit(value: number): void;
161
+ setOrbitLeftLimit(value: number): void;
162
+ setOrbitRightLimit(value: number): void;
163
+ setOrbitZoomInLimit(value: number): void;
164
+ setOrbitZoomOutLimit(value: number): void;
165
+ setTransferPosition(position: iVectorLike): void;
166
+ setTransferRelativePosition(position: iVectorLike, isForce?: boolean): void;
167
+ moveTransferByDirection(offset: iVectorLike, scale: number, isForce?: boolean): void;
168
+ moveTransferByHorizontalDirection(x: number, y: number, scale: number, isForce?: boolean): void;
169
+ moveTransferToTop(scale: number, isForce?: boolean): void;
170
+ moveTransferToBottom(scale: number, isForce?: boolean): void;
171
+ setTransferFov(fov: number): void;
172
+ getFlightParameter(): Promise<iLatitudeLongitude | null> | iLatitudeLongitude | null;
173
+ setFlightLongitude(longitude: number): void;
174
+ setFlightLatitude(latitude: number): void;
175
+ setFlightRelativeLatitude(latitude: number, isForce?: boolean): void;
176
+ setFlightRelativeLongitude(longitude: number, isForce?: boolean): void;
177
+ selectSplatByScreenArea(minX: number, minY: number, maxX: number, maxY: number, mode?: tSelectionMode, maskCanvas?: tMaskSource | {
178
+ width: number;
179
+ height: number;
180
+ data: ArrayBuffer;
181
+ }): void;
182
+ setFrameRateLimit(fps: number): void;
183
+ setDevicePixelRatio(value: number): void;
184
+ getDevicePixelRatio(): number | null;
185
+ getHeaderInfo(name: string): Promise<iHeaderInfo | null> | iHeaderInfo | null;
186
+ setCollisionReversed(reversed: boolean): void;
187
+ deleteSelectedGaussian(): void;
188
+ undoDeletedGaussian(): void;
189
+ resetDeletedGaussian(): void;
190
+ resetCollision(): void;
191
+ setCollision(collision: iCollisionTarget | iCollisionTarget[], mode?: tSelectionMode): void;
192
+ checkCollisionBySelector(name: string, mode?: tSelectionMode): void;
193
+ checkCollisionBySelectors(names: string[], mode?: tSelectionMode): void;
194
+ checkCollisionByAllSelectors(mode?: tSelectionMode): void;
195
+ getAllSelectorInfo(): Promise<iSelectorInfo[]> | iSelectorInfo[];
196
+ setSelectorVisible(name: string, visible: boolean): void;
197
+ setSelectorModeTranslate(name: string): void;
198
+ setSelectorModeScale(name: string): void;
199
+ setSelectorModeRotate(name: string): void;
200
+ setSelectorPosition(name: string, position: iVectorLike): void;
201
+ setSelectorRotation(name: string, rotation: iVectorLike): void;
202
+ setSelectorScale(name: string, scale: iVectorLike): void;
203
+ deleteSelector(name: string): void;
204
+ addSphereSelector(name: string, option?: iSphereSelectorOption): void;
205
+ addBoxSelector(name: string, option?: iBoxSelectorOption): void;
206
+ }
@@ -0,0 +1,222 @@
1
+ import { default as EventEmitter } from 'eventemitter3';
2
+ import { iCoreDriver } from './iCoreDriver';
3
+ import { iViewerOption, iViewerMaterialOption, iLoadingOption, iHeaderInfo, iTransform, iVectorLike, iSelectorInfo, iPickingInfo, iCameraPathOption, iCameraParameter, tSelectionMode, tMaskSource, tControlsType, tUniformValue, tCustomDefines, tCustomUniforms } from '../types';
4
+ import { iCollisionTarget } from '../../worker/tavioWorker';
5
+ import { iLatitudeLongitude } from '../../camera/flightControls';
6
+ import { iSphereSelectorOption } from '../../editor/selector/sphereSelector';
7
+ import { iBoxSelectorOption } from '../../editor/selector/boxSelector';
8
+ import { MeshStandardMaterialParameters } from 'three';
9
+ import { WorkerElementAdapter } from './workerElementAdapter';
10
+ /**
11
+ * # OffscreenDriver (Main-Thread RPC Proxy)
12
+ *
13
+ * ## 役割と背景
14
+ * メインスレッド側に位置し、`iCoreDriver` インターフェースを 100% 透過的に実装する RPC プロキシ。
15
+ * アプリケーション(demo/main.ts 等)からの公開 API 呼び出しを受け取ると、
16
+ * `postRpc` を通じて Worker スレッド上の `renderingWorker.ts`(CoreDriver)へ処理を委譲し、
17
+ * Worker 側から発生した描画・更新イベントをメインスレッドのリスナーへバブリング(中継)します。
18
+ */
19
+ export declare class OffscreenDriver extends EventEmitter implements iCoreDriver {
20
+ canvas: HTMLCanvasElement | OffscreenCanvas;
21
+ viewerOption: iViewerOption;
22
+ getElementAdapter(): HTMLCanvasElement | OffscreenCanvas | WorkerElementAdapter;
23
+ private worker;
24
+ private reqIdCounter;
25
+ private rpcResolvers;
26
+ private isInitialized;
27
+ constructor(viewerOption?: iViewerOption);
28
+ init(canvas: HTMLCanvasElement | OffscreenCanvas, materialOption?: iViewerMaterialOption): void;
29
+ private bindDomEvents;
30
+ private handleWorkerMessage;
31
+ postCommand(method: string, args?: any[], transferables?: Transferable[]): void;
32
+ private postRpc;
33
+ start(): void;
34
+ pause(): void;
35
+ resume(): void;
36
+ resize(width?: number, height?: number, start?: boolean): void;
37
+ dispose(): void;
38
+ setUniforms(uniforms: Record<string, tUniformValue>): void;
39
+ setPointUniforms(uniforms: Record<string, tUniformValue>): void;
40
+ setColorTemperature(temperature: number): void;
41
+ setColorTint(tint: number): void;
42
+ setColorContrast(contrast: number): void;
43
+ setHSVColor(hsv: iVectorLike): void;
44
+ setColorRGB(rgb: iVectorLike): void;
45
+ setClippingEnabled(enabled: boolean): void;
46
+ setClippingSphere(position: iVectorLike, scale: iVectorLike): void;
47
+ setOutsideClipPointSize(size: number): void;
48
+ setOutsideClipOpacity(opacity: number): void;
49
+ setEffectMinimumScale(value: number): void;
50
+ setEffectDistanceBase(value: number): void;
51
+ setEffectDistanceRange(value: number): void;
52
+ setWorldOrigin(x: number, y: number, z: number): void;
53
+ setEffectDistancePoints(value: number): void;
54
+ setEffectDistanceNearPoints(value: number): void;
55
+ setEffectSonar(value: number): void;
56
+ setEffectSonarRange(value: number): void;
57
+ startBloomPoints(duration?: number): void;
58
+ startDissolveToGaussian(duration?: number, backgroundFadeInDelay?: number, backgroundFadeInDuration?: number): void;
59
+ startSonarWave(duration?: number): void;
60
+ animatePath(name?: string, duration?: number): void;
61
+ startFadeInBackground(duration?: number): void;
62
+ startFadeOutBackground(duration?: number): void;
63
+ applyLocalTransformToSelected(name: string, translation: iVectorLike, rotation: iVectorLike, scale: iVectorLike): void;
64
+ resetLocalTransformOfSelected(name: string): void;
65
+ resetAllLocalTransforms(name: string): void;
66
+ setLocalTransformGizmoEnabled(enabled: boolean): void;
67
+ setLocalTransformGizmoMode(mode: "translate" | "rotate" | "scale"): void;
68
+ setOrbitCursorAutoDisplay(enabled: boolean): void;
69
+ isOrbitCursorAutoDisplayEnabled(): Promise<boolean> | boolean;
70
+ setOrbitCursorDisplay(enabled: boolean): void;
71
+ isOrbitCursorDisplay(): Promise<boolean> | boolean;
72
+ setOrbitCursorScale(scale: number): void;
73
+ setAxisVisible(visible: boolean): void;
74
+ isAxisVisible(): Promise<boolean> | boolean;
75
+ private resolveSource;
76
+ renderShadow(): void;
77
+ loadTavio(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
78
+ loadTavioWasm(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
79
+ loadPly(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
80
+ loadSplat(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
81
+ loadImage(name: string, source: string | Blob | ArrayBuffer | ImageBitmap, option?: iLoadingOption): Promise<void>;
82
+ loadCanvas(name: string, canvas: HTMLCanvasElement | OffscreenCanvas | ImageBitmap, option?: iLoadingOption): Promise<void>;
83
+ concatTavio(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
84
+ concatPly(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
85
+ concatSplat(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
86
+ concatImage(name: string, source: string | Blob | ArrayBuffer | ImageBitmap, option?: iLoadingOption): Promise<void>;
87
+ concatCanvas(name: string, canvas: HTMLCanvasElement | OffscreenCanvas | ImageBitmap, option?: iLoadingOption): Promise<void>;
88
+ disposeTavioMesh(name: string): void;
89
+ setVisibilityTavioMesh(name: string, visibility: boolean): void;
90
+ setVisibilityPoints(name: string, visibility: boolean): void;
91
+ setBackgroundOpacity(opacity: number): void;
92
+ setBackgroundByTavioMesh(name: string): void;
93
+ setModelTransform(name: string, translation: iVectorLike, rotation: iVectorLike, scale: number): void;
94
+ getModelTransform(name: string): Promise<iTransform | null>;
95
+ setTransform(name: string, index: number, translation: iVectorLike, rotation: iVectorLike, scale: number): void;
96
+ getTransform(name: string, index: number): Promise<iTransform | null>;
97
+ setBillboard(name: string, index: number, flag: boolean): void;
98
+ setCameraParameter(position?: number[] | iVectorLike, target?: number[] | iVectorLike, fov?: number): void;
99
+ setControlsType(controlsType: string): void;
100
+ getControlsType(): Promise<tControlsType>;
101
+ selectCameraPath(name: string): void;
102
+ updateCameraPath(time?: number): void;
103
+ setOrbitPointerDown(isDown: boolean): void;
104
+ setOrbitRelativeRotateLeft(value: number): void;
105
+ setOrbitRelativeRotateUp(value: number): void;
106
+ setOrbitRelativeTranslateLeft(value: number): void;
107
+ setOrbitRelativeTranslateUp(value: number): void;
108
+ setOrbitRelativeDollyOut(value: number): void;
109
+ getOrbitDistance(): Promise<number>;
110
+ setOrbitDistance(distance: number): void;
111
+ setOrbitRotation(pitch: number, yaw: number, isForce?: boolean): void;
112
+ setOrbitRelativeRotation(pitch: number, yaw: number): void;
113
+ setOrbitEnableZoom(enable: boolean): void;
114
+ setOrbitEnablePan(enable: boolean): void;
115
+ setOrbitEnableLimit(enable: boolean): void;
116
+ setOrbitEnableZoomLimit(enable: boolean): void;
117
+ addAmbientLight(color: number, intensity: number): void;
118
+ setAmbientLightIntensity(intensity: number): void;
119
+ setSpotLightPosition(position: iVectorLike): void;
120
+ setSpotLightTargetPosition(target: iVectorLike): void;
121
+ setSpotLightIntensity(intensity: number): void;
122
+ setSpotLightDistance(distance: number): void;
123
+ setSpotLightAngle(angle: number): void;
124
+ setSpotLightPenumbra(penumbra: number): void;
125
+ setSpotLightDecay(decay: number): void;
126
+ addSpotLight(position: iVectorLike, target: iVectorLike, color: number, intensity: number, distance: number, angle: number, penumbra: number, decay: number, castShadow?: boolean, isDebug?: boolean): void;
127
+ addWhiteCube(position?: iVectorLike, scale?: iVectorLike, receiveShadow?: boolean, materialOption?: MeshStandardMaterialParameters): void;
128
+ saveSplatWasm(name: string, fileName?: string): Promise<any>;
129
+ savePlyWasm(name: string, fileName?: string): Promise<any>;
130
+ saveSpzWasm(name: string, fileName?: string): Promise<any>;
131
+ saveTavioWasm(name: string, fileName?: string, options?: any): Promise<any>;
132
+ exportTavioWasm(name: string, options?: any): Promise<any>;
133
+ addTavioMesh(name: string): void;
134
+ getFirstMeshName(): Promise<string | null>;
135
+ createRenderView(name: string | Symbol): void;
136
+ setRenderView(name?: string | Symbol | null): void;
137
+ getCurrentRenderViewName(): Promise<string | null>;
138
+ setRenderViewSize(renderViewName?: string | Symbol, x?: number, y?: number, width?: number, height?: number, start?: boolean): void;
139
+ getWorldPositionByRenderView(x: number, y: number, isDebug?: boolean): Promise<iPickingInfo | null>;
140
+ setCustomDefines(defines: tCustomDefines): void;
141
+ setCustomUniforms(uniforms: tCustomUniforms): void;
142
+ setGaussianScale(scale: number): void;
143
+ setOpacityAdditive(opacity: number): void;
144
+ setOpacityMultiplier(multiplier: number): void;
145
+ setOpacityPoints(opacity: number): void;
146
+ setSphericalHarmonicsIntensity(intensity: number): void;
147
+ setColorBlur(blur: number): void;
148
+ setColorSharpness(sharpness: number): void;
149
+ getCameraParameter(): Promise<iCameraParameter>;
150
+ setCameraColliderEnabled(enabled: boolean): void;
151
+ setCameraColliderSelector(selectorNames?: string[]): void;
152
+ setInteractiveMode(interactive: boolean): void;
153
+ getInteractiveMode(): Promise<boolean>;
154
+ createCameraPath(position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): void;
155
+ addCameraPath(name: string, position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): void;
156
+ removeCameraPath(name: string): void;
157
+ getPathNames(): Promise<string[]>;
158
+ getActiveCameraPathName(): Promise<string | null>;
159
+ getCameraPathByTime(name?: string, time?: number): Promise<{
160
+ position: iVectorLike;
161
+ target: iVectorLike;
162
+ } | null>;
163
+ getCameraPathTime(): Promise<number>;
164
+ setCameraPathOption(option: iCameraPathOption): void;
165
+ setCameraPathCollisionRadius(radius: number): void;
166
+ setCameraPathInteraction(x: number, y: number): void;
167
+ setTransferPosition(position: iVectorLike): void;
168
+ moveTransferByDirection(offset: iVectorLike, scale: number, isForce?: boolean): void;
169
+ setTransferFov(fov: number): void;
170
+ getFlightParameter(): Promise<iLatitudeLongitude | null>;
171
+ setFlightLongitude(longitude: number): void;
172
+ setFlightLatitude(latitude: number): void;
173
+ setOrbitOverflow(value: number): void;
174
+ setOrbitUpLimit(value: number): void;
175
+ setOrbitDownLimit(value: number): void;
176
+ setOrbitLeftLimit(value: number): void;
177
+ setOrbitRightLimit(value: number): void;
178
+ setOrbitZoomInLimit(value: number): void;
179
+ setOrbitZoomOutLimit(value: number): void;
180
+ selectSplatByScreenArea(minX: number, minY: number, maxX: number, maxY: number, mode?: tSelectionMode, maskCanvas?: tMaskSource | {
181
+ width: number;
182
+ height: number;
183
+ data: ArrayBuffer;
184
+ }): void;
185
+ removeTavioMesh(name: string, renderViewName?: string | Symbol): void;
186
+ removeTavioMeshAllRenderView(name: string): void;
187
+ setUsingSphericalHarmonics(isUsing: boolean): void;
188
+ setDropShadow(enabled: boolean): void;
189
+ setControlsAttenuation(attenuation: number): void;
190
+ setFlightRelativeLatitude(latitude: number, isForce?: boolean): void;
191
+ setFlightRelativeLongitude(longitude: number, isForce?: boolean): void;
192
+ setTransferRelativePosition(position: iVectorLike, isForce?: boolean): void;
193
+ moveTransferByHorizontalDirection(x: number, y: number, scale: number, isForce?: boolean): void;
194
+ moveTransferToTop(scale: number, isForce?: boolean): void;
195
+ moveTransferToBottom(scale: number, isForce?: boolean): void;
196
+ getCameraColliderEnabled(): Promise<boolean>;
197
+ getRenderViewCount(): Promise<number>;
198
+ setFrameRateLimit(fps: number): void;
199
+ setDevicePixelRatio(value: number): void;
200
+ getDevicePixelRatio(): number | null;
201
+ getHeaderInfo(name: string): Promise<iHeaderInfo | null>;
202
+ setCollisionReversed(reversed: boolean): void;
203
+ deleteSelectedGaussian(): void;
204
+ undoDeletedGaussian(): void;
205
+ resetDeletedGaussian(): void;
206
+ resetCollision(): void;
207
+ setCollision(collision: iCollisionTarget | iCollisionTarget[], mode?: tSelectionMode): void;
208
+ checkCollisionBySelector(name: string, mode?: tSelectionMode): void;
209
+ checkCollisionBySelectors(names: string[], mode?: tSelectionMode): void;
210
+ checkCollisionByAllSelectors(mode?: tSelectionMode): void;
211
+ getAllSelectorInfo(): Promise<iSelectorInfo[]>;
212
+ setSelectorVisible(name: string, visible: boolean): void;
213
+ setSelectorModeTranslate(name: string): void;
214
+ setSelectorModeScale(name: string): void;
215
+ setSelectorModeRotate(name: string): void;
216
+ setSelectorPosition(name: string, position: iVectorLike): void;
217
+ setSelectorRotation(name: string, rotation: iVectorLike): void;
218
+ setSelectorScale(name: string, scale: iVectorLike): void;
219
+ deleteSelector(name: string): void;
220
+ addSphereSelector(name: string, option?: iSphereSelectorOption): void;
221
+ addBoxSelector(name: string, option?: iBoxSelectorOption): void;
222
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * # RPC / Event Message Protocol for Offscreen Worker
3
+ *
4
+ * ## 役割と背景
5
+ * Offscreen Worker モードにおいて、メインスレッドと Worker スレッド間で型安全な
6
+ * 非同期メソッド呼び出し(RPC)および双方向イベント伝播(Event Bubbling)を行うためのプロトコル定義。
7
+ */
8
+ export interface WorkerCmdMessage {
9
+ type: "cmd";
10
+ method: string;
11
+ args: any[];
12
+ }
13
+ export interface WorkerRpcMessage {
14
+ type: "rpc";
15
+ reqId: number;
16
+ method: string;
17
+ args: any[];
18
+ }
19
+ export interface WorkerRpcReplyMessage {
20
+ type: "rpc:reply";
21
+ reqId: number;
22
+ result?: any;
23
+ error?: string;
24
+ }
25
+ export interface WorkerEventMessage {
26
+ type: "event";
27
+ name: string;
28
+ payload?: any;
29
+ }
30
+ export type WorkerMessage = WorkerCmdMessage | WorkerRpcMessage | WorkerRpcReplyMessage | WorkerEventMessage;
31
+ /**
32
+ * 転送不可なオブジェクトや DOM 依存オブジェクトをメッセージパラメータ用に安全にクリーンアップする
33
+ *
34
+ * ## 役割と背景
35
+ * postMessage は HTMLCanvasElement や関数などのクローン不可能なオブジェクトを送信すると
36
+ * DataCloneError を発生させます。本関数は引数配列を事前走査し、安全に転送可能な
37
+ * プレーンデータ / ArrayBuffer / TypedArray / Blob のみを抽出・サニタイズします。
38
+ */
39
+ export declare function sanitizeArgsForMessage(args: any[]): any[];
@@ -0,0 +1,66 @@
1
+ /**
2
+ * # Worker Element Adapter (DOM Emulator in Worker)
3
+ *
4
+ * ## 役割と背景
5
+ * Web Worker 環境には `document` や `window` や `HTMLCanvasElement` が存在しません。
6
+ * 本クラスは、メインスレッド側でキャッチされた pointerdown / pointermove / wheel などの DOM イベントを
7
+ * Worker 内で受領し、Three.js の Controls(OrbitControls / TransferControls など)が
8
+ * あたかも本物の DOM 要素からイベントを受け取っているかのようにエミュレートするアダプターです。
9
+ */
10
+ export interface SyntheticPointerEventInit {
11
+ type: string;
12
+ pointerId?: number;
13
+ pointerType?: string;
14
+ clientX?: number;
15
+ clientY?: number;
16
+ offsetX?: number;
17
+ offsetY?: number;
18
+ button?: number;
19
+ buttons?: number;
20
+ altKey?: boolean;
21
+ ctrlKey?: boolean;
22
+ metaKey?: boolean;
23
+ shiftKey?: boolean;
24
+ deltaX?: number;
25
+ deltaY?: number;
26
+ boundingLeft?: number;
27
+ boundingTop?: number;
28
+ boundingWidth?: number;
29
+ boundingHeight?: number;
30
+ }
31
+ export declare class WorkerElementAdapter {
32
+ width: number;
33
+ height: number;
34
+ clientWidth: number;
35
+ clientHeight: number;
36
+ boundingLeft: number;
37
+ boundingTop: number;
38
+ style: Record<string, string>;
39
+ private ownerListeners;
40
+ ownerDocument: any;
41
+ private listeners;
42
+ constructor(width?: number, height?: number);
43
+ setSize(width: number, height: number): void;
44
+ addEventListener(type: string, listener: (evt: any) => void): void;
45
+ removeEventListener(type: string, listener: (evt: any) => void): void;
46
+ dispatchEvent(event: any): boolean;
47
+ /**
48
+ * メインスレッドから転送されたイベント情報をもとに合成イベントを作成して一括配信する
49
+ */
50
+ dispatchTransferredEvent(init: SyntheticPointerEventInit): void;
51
+ getContext(): null;
52
+ getBoundingClientRect(): {
53
+ left: number;
54
+ top: number;
55
+ width: number;
56
+ height: number;
57
+ right: number;
58
+ bottom: number;
59
+ x: number;
60
+ y: number;
61
+ };
62
+ setPointerCapture(): void;
63
+ releasePointerCapture(): void;
64
+ focus(): void;
65
+ blur(): void;
66
+ }
@@ -1,35 +1,20 @@
1
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
- */
2
+ import { tCustomUniforms, tCustomDefines, tUniformValue } from './types';
22
3
  /**
23
4
  * チャンクをどのシェーダに反映するかを表す
24
5
  * これらの値は論理和を用いて組み合わせて指定できる
25
6
  */
26
7
  export declare const CHUNK_TARGET: {
27
8
  readonly ANY: 0;
28
- readonly BASIC: 1;
29
- readonly PICKING: 2;
30
- readonly SHADOWING: 4;
9
+ readonly ANY_SPLAT: 1;
10
+ readonly BASIC: 2;
11
+ readonly PICKING: 4;
12
+ readonly SHADOWING: 8;
13
+ readonly INDEX_SELECTION: 16;
14
+ readonly POINTS: 32;
31
15
  };
32
- export type tChunkTarget = typeof CHUNK_TARGET[keyof typeof CHUNK_TARGET];
16
+ export type tChunkTargetValue = typeof CHUNK_TARGET[keyof typeof CHUNK_TARGET];
17
+ export type tChunkTarget = tChunkTargetValue | (number & {});
33
18
  /**
34
19
  * チャンクがどのステージにあたるかを表す
35
20
  * 指定されたステージの末尾に処理が追加される
@@ -40,16 +25,17 @@ export declare const SHADER_STAGE: {
40
25
  readonly VERTEX_FUNCTION: 2;
41
26
  readonly VERTEX_MAIN_BEGIN: 3;
42
27
  readonly VERTEX_MAIN_TRANSFORM: 4;
43
- readonly VERTEX_MAIN_SIGMA: 5;
44
- readonly VERTEX_MAIN_OUT: 6;
45
- readonly VERTEX_MAIN_END: 7;
46
- readonly FRAGMENT_PRECISION: 8;
47
- readonly FRAGMENT_DECLARATION: 9;
48
- readonly FRAGMENT_FUNCTION: 10;
49
- readonly FRAGMENT_MAIN_BEGIN: 11;
50
- readonly FRAGMENT_MAIN_IN: 12;
51
- readonly FRAGMENT_MAIN_OUT: 13;
52
- readonly FRAGMENT_MAIN_END: 14;
28
+ readonly VERTEX_MAIN_CLIPPING: 5;
29
+ readonly VERTEX_MAIN_SIGMA: 6;
30
+ readonly VERTEX_MAIN_OUT: 7;
31
+ readonly VERTEX_MAIN_END: 8;
32
+ readonly FRAGMENT_PRECISION: 9;
33
+ readonly FRAGMENT_DECLARATION: 10;
34
+ readonly FRAGMENT_FUNCTION: 11;
35
+ readonly FRAGMENT_MAIN_BEGIN: 12;
36
+ readonly FRAGMENT_MAIN_IN: 13;
37
+ readonly FRAGMENT_MAIN_OUT: 14;
38
+ readonly FRAGMENT_MAIN_END: 15;
53
39
  };
54
40
  export type tShaderStage = typeof SHADER_STAGE[keyof typeof SHADER_STAGE];
55
41
  /**
@@ -66,6 +52,8 @@ export interface iMaterials {
66
52
  basic: RawShaderMaterial;
67
53
  picking: RawShaderMaterial;
68
54
  shadowing: RawShaderMaterial;
55
+ indexSelection: RawShaderMaterial;
56
+ points: RawShaderMaterial;
69
57
  }
70
58
  /**
71
59
  * マテリアル生成に使われるシェーダチャンク
@@ -79,8 +67,8 @@ export interface iShaderChunk {
79
67
  */
80
68
  export interface iMaterialOption {
81
69
  target: tChunkTarget;
82
- uniforms?: any;
83
- defines?: any;
70
+ uniforms?: tCustomUniforms | Record<string, tUniformValue>;
71
+ defines?: tCustomDefines;
84
72
  vertex?: iShaderChunk | iShaderChunk[];
85
73
  fragment?: iShaderChunk | iShaderChunk[];
86
74
  }
@@ -96,6 +84,18 @@ export declare class MaterialGenerator {
96
84
  * shaderChunk/common に含まれるフラグメントシェーダのチャンクをセットした Map オブジェクトを生成する
97
85
  */
98
86
  private static _createFragmentMap;
87
+ /**
88
+ * shaderChunk/points に含まれる頂点シェーダのチャンクをセットした Map オブジェクトを生成する
89
+ */
90
+ private static _createPointsVertexMap;
91
+ /**
92
+ * shaderChunk/points に含まれるフラグメントシェーダのチャンクをセットした Map オブジェクトを生成する
93
+ */
94
+ private static _createPointsFragmentMap;
95
+ /**
96
+ * 点描画マテリアル用 uniform 変数の初期値を生成する
97
+ */
98
+ private static _createPointsUniforms;
99
99
  /**
100
100
  * シェーダチャンクに iMaterialOption.vertex / fragment に含まれるソースコードを結合する
101
101
  * @param option - シェーダチャンクを含むマテリアルオプション