@openheart/tavio-renderer 2.3.30-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 (35) hide show
  1. package/build/esm/assets/{tavio-JUxSmuMi.js → tavio-DVLlyem4.js} +211 -211
  2. package/build/esm/assets/{workerHelpers-yS8SNwfU.js → workerHelpers-BWRcUO-d.js} +1 -1
  3. package/build/esm/index.js +7366 -6111
  4. package/build/esm/types/editor/selector/boxSelector.d.ts +4 -3
  5. package/build/esm/types/module.d.ts +5 -4
  6. package/build/esm/types/viewer/canvas.d.ts +150 -1560
  7. package/build/esm/types/viewer/constants.d.ts +99 -0
  8. package/build/esm/types/viewer/driver/coreDriver.d.ts +1402 -0
  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/viewer/materialGenerator.d.ts +24 -27
  14. package/build/esm/types/viewer/renderView.d.ts +4 -3
  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/{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/viewer/{tavioMesh.d.ts → tavioMesh/tavioMesh.d.ts} +73 -62
  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/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 +16 -16
  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 +16 -16
  34. package/package.json +1 -1
  35. package/build/esm/types/animation/animationController.d.ts +0 -146
@@ -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,36 +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;
31
- readonly INDEX_SELECTION: 8;
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;
32
15
  };
33
- 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 & {});
34
18
  /**
35
19
  * チャンクがどのステージにあたるかを表す
36
20
  * 指定されたステージの末尾に処理が追加される
@@ -69,6 +53,7 @@ export interface iMaterials {
69
53
  picking: RawShaderMaterial;
70
54
  shadowing: RawShaderMaterial;
71
55
  indexSelection: RawShaderMaterial;
56
+ points: RawShaderMaterial;
72
57
  }
73
58
  /**
74
59
  * マテリアル生成に使われるシェーダチャンク
@@ -82,8 +67,8 @@ export interface iShaderChunk {
82
67
  */
83
68
  export interface iMaterialOption {
84
69
  target: tChunkTarget;
85
- uniforms?: any;
86
- defines?: any;
70
+ uniforms?: tCustomUniforms | Record<string, tUniformValue>;
71
+ defines?: tCustomDefines;
87
72
  vertex?: iShaderChunk | iShaderChunk[];
88
73
  fragment?: iShaderChunk | iShaderChunk[];
89
74
  }
@@ -99,6 +84,18 @@ export declare class MaterialGenerator {
99
84
  * shaderChunk/common に含まれるフラグメントシェーダのチャンクをセットした Map オブジェクトを生成する
100
85
  */
101
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;
102
99
  /**
103
100
  * シェーダチャンクに iMaterialOption.vertex / fragment に含まれるソースコードを結合する
104
101
  * @param option - シェーダチャンクを含むマテリアルオプション
@@ -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';
@@ -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
+ }