@konitif/viewer-3d 0.284.1
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.
- package/LICENSE.md +21 -0
- package/README.md +34 -0
- package/dist/balanceFootprintDefinition.d.ts +7 -0
- package/dist/balanceFootprintDefinition.d.ts.map +1 -0
- package/dist/balanceFootprintDefinition.js +2 -0
- package/dist/balanceFootprintDefinition.js.map +1 -0
- package/dist/diagnosticContactDefinition.d.ts +7 -0
- package/dist/diagnosticContactDefinition.d.ts.map +1 -0
- package/dist/diagnosticContactDefinition.js +2 -0
- package/dist/diagnosticContactDefinition.js.map +1 -0
- package/dist/handTipDefinition.d.ts +13 -0
- package/dist/handTipDefinition.d.ts.map +1 -0
- package/dist/handTipDefinition.js +2 -0
- package/dist/handTipDefinition.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/jointHandleDefinition.d.ts +23 -0
- package/dist/jointHandleDefinition.d.ts.map +1 -0
- package/dist/jointHandleDefinition.js +2 -0
- package/dist/jointHandleDefinition.js.map +1 -0
- package/dist/ledPlacementDefinition.d.ts +38 -0
- package/dist/ledPlacementDefinition.d.ts.map +1 -0
- package/dist/ledPlacementDefinition.js +2 -0
- package/dist/ledPlacementDefinition.js.map +1 -0
- package/dist/ledReferenceFrame.d.ts +26 -0
- package/dist/ledReferenceFrame.d.ts.map +1 -0
- package/dist/ledReferenceFrame.js +2 -0
- package/dist/ledReferenceFrame.js.map +1 -0
- package/dist/ledRingCalibration.d.ts +22 -0
- package/dist/ledRingCalibration.d.ts.map +1 -0
- package/dist/ledRingCalibration.js +2 -0
- package/dist/ledRingCalibration.js.map +1 -0
- package/dist/renderer/AnimationLoop.d.ts +18 -0
- package/dist/renderer/AnimationLoop.d.ts.map +1 -0
- package/dist/renderer/AnimationLoop.js +39 -0
- package/dist/renderer/AnimationLoop.js.map +1 -0
- package/dist/renderer/CameraController.d.ts +154 -0
- package/dist/renderer/CameraController.d.ts.map +1 -0
- package/dist/renderer/CameraController.js +469 -0
- package/dist/renderer/CameraController.js.map +1 -0
- package/dist/renderer/NavigationPhysicsObservation.d.ts +25 -0
- package/dist/renderer/NavigationPhysicsObservation.d.ts.map +1 -0
- package/dist/renderer/NavigationPhysicsObservation.js +81 -0
- package/dist/renderer/NavigationPhysicsObservation.js.map +1 -0
- package/dist/renderer/ObservedRobotGroundingProjection.d.ts +206 -0
- package/dist/renderer/ObservedRobotGroundingProjection.d.ts.map +1 -0
- package/dist/renderer/ObservedRobotGroundingProjection.js +522 -0
- package/dist/renderer/ObservedRobotGroundingProjection.js.map +1 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.d.ts +71 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.d.ts.map +1 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.js +226 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.js.map +1 -0
- package/dist/renderer/PerformanceMonitor.d.ts +38 -0
- package/dist/renderer/PerformanceMonitor.d.ts.map +1 -0
- package/dist/renderer/PerformanceMonitor.js +84 -0
- package/dist/renderer/PerformanceMonitor.js.map +1 -0
- package/dist/renderer/ProjectileInteraction.d.ts +57 -0
- package/dist/renderer/ProjectileInteraction.d.ts.map +1 -0
- package/dist/renderer/ProjectileInteraction.js +152 -0
- package/dist/renderer/ProjectileInteraction.js.map +1 -0
- package/dist/renderer/RobotComparisonVisibilityTransition.d.ts +12 -0
- package/dist/renderer/RobotComparisonVisibilityTransition.d.ts.map +1 -0
- package/dist/renderer/RobotComparisonVisibilityTransition.js +23 -0
- package/dist/renderer/RobotComparisonVisibilityTransition.js.map +1 -0
- package/dist/renderer/RobotPoseTransition.d.ts +34 -0
- package/dist/renderer/RobotPoseTransition.d.ts.map +1 -0
- package/dist/renderer/RobotPoseTransition.js +66 -0
- package/dist/renderer/RobotPoseTransition.js.map +1 -0
- package/dist/renderer/RobotPostureCompensation.d.ts +31 -0
- package/dist/renderer/RobotPostureCompensation.d.ts.map +1 -0
- package/dist/renderer/RobotPostureCompensation.js +60 -0
- package/dist/renderer/RobotPostureCompensation.js.map +1 -0
- package/dist/renderer/SelectionController.d.ts +24 -0
- package/dist/renderer/SelectionController.d.ts.map +1 -0
- package/dist/renderer/SelectionController.js +68 -0
- package/dist/renderer/SelectionController.js.map +1 -0
- package/dist/renderer/TemporalProjectionModel.d.ts +71 -0
- package/dist/renderer/TemporalProjectionModel.d.ts.map +1 -0
- package/dist/renderer/TemporalProjectionModel.js +363 -0
- package/dist/renderer/TemporalProjectionModel.js.map +1 -0
- package/dist/renderer/Viewer3DRenderer.d.ts +1137 -0
- package/dist/renderer/Viewer3DRenderer.d.ts.map +1 -0
- package/dist/renderer/Viewer3DRenderer.js +10655 -0
- package/dist/renderer/Viewer3DRenderer.js.map +1 -0
- package/dist/renderer/ViewerExperimentCollector.d.ts +27 -0
- package/dist/renderer/ViewerExperimentCollector.d.ts.map +1 -0
- package/dist/renderer/ViewerExperimentCollector.js +2 -0
- package/dist/renderer/ViewerExperimentCollector.js.map +1 -0
- package/dist/renderer/ViewerExperimentPort.d.ts +19 -0
- package/dist/renderer/ViewerExperimentPort.d.ts.map +1 -0
- package/dist/renderer/ViewerExperimentPort.js +2 -0
- package/dist/renderer/ViewerExperimentPort.js.map +1 -0
- package/dist/renderer/ViewerFrameSignals.d.ts +13 -0
- package/dist/renderer/ViewerFrameSignals.d.ts.map +1 -0
- package/dist/renderer/ViewerFrameSignals.js +73 -0
- package/dist/renderer/ViewerFrameSignals.js.map +1 -0
- package/dist/renderer/ViewerHistoryData.d.ts +59 -0
- package/dist/renderer/ViewerHistoryData.d.ts.map +1 -0
- package/dist/renderer/ViewerHistoryData.js +2 -0
- package/dist/renderer/ViewerHistoryData.js.map +1 -0
- package/dist/renderer/ViewerHistoryPort.d.ts +15 -0
- package/dist/renderer/ViewerHistoryPort.d.ts.map +1 -0
- package/dist/renderer/ViewerHistoryPort.js +2 -0
- package/dist/renderer/ViewerHistoryPort.js.map +1 -0
- package/dist/renderer/ViewerIncarnationHealth.d.ts +14 -0
- package/dist/renderer/ViewerIncarnationHealth.d.ts.map +1 -0
- package/dist/renderer/ViewerIncarnationHealth.js +13 -0
- package/dist/renderer/ViewerIncarnationHealth.js.map +1 -0
- package/dist/renderer/ViewerInputBindings.d.ts +19 -0
- package/dist/renderer/ViewerInputBindings.d.ts.map +1 -0
- package/dist/renderer/ViewerInputBindings.js +44 -0
- package/dist/renderer/ViewerInputBindings.js.map +1 -0
- package/dist/renderer/ViewerMetadata.d.ts +11 -0
- package/dist/renderer/ViewerMetadata.d.ts.map +1 -0
- package/dist/renderer/ViewerMetadata.js +8 -0
- package/dist/renderer/ViewerMetadata.js.map +1 -0
- package/dist/renderer/ViewerPlaybackCompletionPolicy.d.ts +29 -0
- package/dist/renderer/ViewerPlaybackCompletionPolicy.d.ts.map +1 -0
- package/dist/renderer/ViewerPlaybackCompletionPolicy.js +27 -0
- package/dist/renderer/ViewerPlaybackCompletionPolicy.js.map +1 -0
- package/dist/renderer/ViewerProjectileParticleRenderer.d.ts +21 -0
- package/dist/renderer/ViewerProjectileParticleRenderer.d.ts.map +1 -0
- package/dist/renderer/ViewerProjectileParticleRenderer.js +134 -0
- package/dist/renderer/ViewerProjectileParticleRenderer.js.map +1 -0
- package/dist/renderer/ViewerResizePresentation.d.ts +16 -0
- package/dist/renderer/ViewerResizePresentation.d.ts.map +1 -0
- package/dist/renderer/ViewerResizePresentation.js +12 -0
- package/dist/renderer/ViewerResizePresentation.js.map +1 -0
- package/dist/renderer/ViewerTemporalProjectionExperimentAdapter.d.ts +34 -0
- package/dist/renderer/ViewerTemporalProjectionExperimentAdapter.d.ts.map +1 -0
- package/dist/renderer/ViewerTemporalProjectionExperimentAdapter.js +130 -0
- package/dist/renderer/ViewerTemporalProjectionExperimentAdapter.js.map +1 -0
- package/dist/renderer/ViewerTemporalScheduler.d.ts +6 -0
- package/dist/renderer/ViewerTemporalScheduler.d.ts.map +1 -0
- package/dist/renderer/ViewerTemporalScheduler.js +12 -0
- package/dist/renderer/ViewerTemporalScheduler.js.map +1 -0
- package/dist/renderer/VisualGroundLayer.d.ts +110 -0
- package/dist/renderer/VisualGroundLayer.d.ts.map +1 -0
- package/dist/renderer/VisualGroundLayer.js +576 -0
- package/dist/renderer/VisualGroundLayer.js.map +1 -0
- package/dist/renderer/displayFrameRate.d.ts +5 -0
- package/dist/renderer/displayFrameRate.d.ts.map +1 -0
- package/dist/renderer/displayFrameRate.js +23 -0
- package/dist/renderer/displayFrameRate.js.map +1 -0
- package/dist/renderer/index.d.ts +20 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +18 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/physics/ViewerJointResolution.d.ts +19 -0
- package/dist/renderer/physics/ViewerJointResolution.d.ts.map +1 -0
- package/dist/renderer/physics/ViewerJointResolution.js +24 -0
- package/dist/renderer/physics/ViewerJointResolution.js.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsFrame.d.ts +9 -0
- package/dist/renderer/physics/ViewerPhysicsFrame.d.ts.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsFrame.js +26 -0
- package/dist/renderer/physics/ViewerPhysicsFrame.js.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsJointMapping.d.ts +11 -0
- package/dist/renderer/physics/ViewerPhysicsJointMapping.d.ts.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsJointMapping.js +20 -0
- package/dist/renderer/physics/ViewerPhysicsJointMapping.js.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsMetadata.d.ts +20 -0
- package/dist/renderer/physics/ViewerPhysicsMetadata.d.ts.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsMetadata.js +49 -0
- package/dist/renderer/physics/ViewerPhysicsMetadata.js.map +1 -0
- package/dist/renderer/robotViewerMotion.d.ts +49 -0
- package/dist/renderer/robotViewerMotion.d.ts.map +1 -0
- package/dist/renderer/robotViewerMotion.js +253 -0
- package/dist/renderer/robotViewerMotion.js.map +1 -0
- package/dist/supportDefinition.d.ts +11 -0
- package/dist/supportDefinition.d.ts.map +1 -0
- package/dist/supportDefinition.js +2 -0
- package/dist/supportDefinition.js.map +1 -0
- package/package.json +52 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Licence — @konitif/viewer-3d
|
|
2
|
+
|
|
3
|
+
SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
4
|
+
|
|
5
|
+
The original KONITIF / Workbench code in this v0.x package is made available
|
|
6
|
+
under the PolyForm Noncommercial License 1.0.0:
|
|
7
|
+
https://polyformproject.org/licenses/noncommercial/1.0.0
|
|
8
|
+
|
|
9
|
+
This notice incorporates the standard terms by reference; it is not a modified
|
|
10
|
+
version of the licence. This is source-available software, not OSI open source.
|
|
11
|
+
Third-party components retain their own licences and notices.
|
|
12
|
+
|
|
13
|
+
Uses outside the standard licence's permitted purposes require a separate
|
|
14
|
+
written licence. A public repository or npm download grants no additional
|
|
15
|
+
commercial rights. Any free professional authorization must be explicit,
|
|
16
|
+
nominative and limited to the agreed products; none is granted by this notice.
|
|
17
|
+
|
|
18
|
+
The KONITIF name, logo and official identity belong to Maxime Mouflard.
|
|
19
|
+
Descriptive reference is permitted. No third-party version may claim to be
|
|
20
|
+
official, certified or approved without authorization. This trademark notice
|
|
21
|
+
is separate from the software licence and does not amend its terms.
|
package/README.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# @konitif/viewer-3d
|
|
2
|
+
|
|
3
|
+
Product-neutral 3D contracts and explicit-provider renderer for a reusable
|
|
4
|
+
spatial projection. Scene state enters through a `Viewer3DPort`; selection,
|
|
5
|
+
focus, camera and reset operations leave as intents.
|
|
6
|
+
|
|
7
|
+
The amodal `ViewerSnapshot`, `ViewerIntent`, `ViewerPort` and Workflow source
|
|
8
|
+
belong to `@konitif/viewer`. This package extends those contracts with vectors,
|
|
9
|
+
transforms and camera intents. Historical `Viewer3DWorkflowCompositionSource`
|
|
10
|
+
names remain compatibility aliases.
|
|
11
|
+
|
|
12
|
+
The root entry contains the 3D scene and support contracts. The optional
|
|
13
|
+
`@konitif/viewer-3d/renderer` entry contains the Three.js projection runtime.
|
|
14
|
+
It requires explicit physics and experiment providers and does not construct a
|
|
15
|
+
Workbench recorder or a product campaign.
|
|
16
|
+
|
|
17
|
+
Robot model names, Behavior projection states, authored calibrations, product
|
|
18
|
+
campaigns and product UI belong in specialization or host packages. The
|
|
19
|
+
historical `@konitif/ui/robot-viewer/renderer` entry remains a compatibility
|
|
20
|
+
facade; it is not the renderer authority.
|
|
21
|
+
|
|
22
|
+
LED groups use model-local placement definitions and a product-provided
|
|
23
|
+
calibration. The renderer supports circular and straight-strip layouts while
|
|
24
|
+
remaining unaware of robot-specific frame names and default offsets.
|
|
25
|
+
|
|
26
|
+
The standalone candidate consumes published Tools 0.284.3, Temporal 0.284.1,
|
|
27
|
+
Physics 0.284.1 and Viewer 0.284.1. Composition 0.284.2 remains owned
|
|
28
|
+
transitively by the amodal Viewer package. The distributable manifest and lock
|
|
29
|
+
retain those public versions; no workspace alias is part of the release
|
|
30
|
+
contract.
|
|
31
|
+
|
|
32
|
+
`npm run verify:package` creates an isolated consumer for both public exports
|
|
33
|
+
and checks their ESM runtime and strict NodeNext declarations. A successful
|
|
34
|
+
local qualification proves the archive boundary, not its presence on npm.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Estimated diagnostic footprint around the first resolved joint, not measured support. */
|
|
2
|
+
export interface ViewerBalanceFootprintDefinition {
|
|
3
|
+
readonly jointNames: readonly string[];
|
|
4
|
+
readonly halfWidthMeters: number;
|
|
5
|
+
readonly halfDepthMeters: number;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=balanceFootprintDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balanceFootprintDefinition.d.ts","sourceRoot":"","sources":["../src/balanceFootprintDefinition.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balanceFootprintDefinition.js","sourceRoot":"","sources":["../src/balanceFootprintDefinition.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Visual diagnostic anchors; resolution does not confirm sensor activity. */
|
|
2
|
+
export interface ViewerDiagnosticContactDefinition {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly names: readonly string[];
|
|
5
|
+
readonly side: 'left' | 'right' | 'fallback';
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=diagnosticContactDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticContactDefinition.d.ts","sourceRoot":"","sources":["../src/diagnosticContactDefinition.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;CAC9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticContactDefinition.js","sourceRoot":"","sources":["../src/diagnosticContactDefinition.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Model landmarks for an estimated hand-tip projection, not sensor observations. */
|
|
2
|
+
export interface ViewerHandTipDefinition {
|
|
3
|
+
readonly sourceJoint: string;
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly label: string;
|
|
6
|
+
readonly fingerRootNames: readonly [string, string];
|
|
7
|
+
readonly touchFrameNames: Readonly<{
|
|
8
|
+
left: string;
|
|
9
|
+
right: string;
|
|
10
|
+
back: string;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=handTipDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handTipDefinition.d.ts","sourceRoot":"","sources":["../src/handTipDefinition.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handTipDefinition.js","sourceRoot":"","sources":["../src/handTipDefinition.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createViewerWorkflowCompositionSource, type ViewerIntent, type ViewerPort, type ViewerSnapshot, type ViewerWorkflowCompositionSource } from '@konitif/viewer';
|
|
2
|
+
export { createViewerWorkflowCompositionSource, type ViewerIntent, type ViewerPort, type ViewerSnapshot, type ViewerWorkflowCompositionSource } from '@konitif/viewer';
|
|
3
|
+
export interface Viewer3DVector {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
z: number;
|
|
7
|
+
}
|
|
8
|
+
export interface Viewer3DQuaternion extends Viewer3DVector {
|
|
9
|
+
w: number;
|
|
10
|
+
}
|
|
11
|
+
export interface Viewer3DTransform {
|
|
12
|
+
id: string;
|
|
13
|
+
position: Viewer3DVector;
|
|
14
|
+
rotation: Viewer3DQuaternion;
|
|
15
|
+
}
|
|
16
|
+
export interface Viewer3DSceneSnapshot extends ViewerSnapshot {
|
|
17
|
+
transforms: readonly Viewer3DTransform[];
|
|
18
|
+
}
|
|
19
|
+
export type Viewer3DIntent = ViewerIntent | {
|
|
20
|
+
type: 'set-camera';
|
|
21
|
+
cameraId: string;
|
|
22
|
+
};
|
|
23
|
+
export interface Viewer3DPort extends ViewerPort<Viewer3DSceneSnapshot, Viewer3DIntent> {
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use ViewerWorkflowCompositionSource from @konitif/viewer.
|
|
27
|
+
*/
|
|
28
|
+
export type Viewer3DWorkflowCompositionSource = ViewerWorkflowCompositionSource;
|
|
29
|
+
/** @deprecated Use createViewerWorkflowCompositionSource from @konitif/viewer. */
|
|
30
|
+
export declare const createViewer3DWorkflowCompositionSource: typeof createViewerWorkflowCompositionSource;
|
|
31
|
+
export declare function createViewer3DSceneSnapshot(input?: Partial<Viewer3DSceneSnapshot>): Viewer3DSceneSnapshot;
|
|
32
|
+
export declare const viewer3DToolModule: import("@konitif/tools").KonitifToolModule<unknown>;
|
|
33
|
+
export type { ViewerJointHandleDefinition } from './jointHandleDefinition.js';
|
|
34
|
+
export type { ViewerSupportDefinition } from './supportDefinition.js';
|
|
35
|
+
export type { ViewerDiagnosticContactDefinition } from './diagnosticContactDefinition.js';
|
|
36
|
+
export type { ViewerBalanceFootprintDefinition } from './balanceFootprintDefinition.js';
|
|
37
|
+
export type { ViewerHandTipDefinition } from './handTipDefinition.js';
|
|
38
|
+
export type { ViewerLedLayout, ViewerLedRingCalibration } from './ledRingCalibration.js';
|
|
39
|
+
export type { ViewerLedReferenceFrame } from './ledReferenceFrame.js';
|
|
40
|
+
export type { ViewerLedPlacementDefinition } from './ledPlacementDefinition.js';
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,qCAAqC,EACrC,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,+BAA+B,EACrC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qCAAqC,EACrC,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,+BAA+B,EACrC,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC1C;AAED,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,WAAW,YAAa,SAAQ,UAAU,CAAC,qBAAqB,EAAE,cAAc,CAAC;CAAG;AAE1F;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,+BAA+B,CAAC;AAEhF,kFAAkF;AAClF,eAAO,MAAM,uCAAuC,8CAAwC,CAAC;AAE7F,wBAAgB,2BAA2B,CACzC,KAAK,GAAE,OAAO,CAAC,qBAAqB,CAAM,GACzC,qBAAqB,CAMvB;AAED,eAAO,MAAM,kBAAkB,qDAK7B,CAAC;AAEH,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAC9E,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAC1F,YAAY,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACxF,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACzF,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,YAAY,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineKonitifToolModule } from '@konitif/tools';
|
|
2
|
+
import { createViewerSnapshot, createViewerWorkflowCompositionSource } from '@konitif/viewer';
|
|
3
|
+
export { createViewerWorkflowCompositionSource } from '@konitif/viewer';
|
|
4
|
+
/** @deprecated Use createViewerWorkflowCompositionSource from @konitif/viewer. */
|
|
5
|
+
export const createViewer3DWorkflowCompositionSource = createViewerWorkflowCompositionSource;
|
|
6
|
+
export function createViewer3DSceneSnapshot(input = {}) {
|
|
7
|
+
const snapshot = createViewerSnapshot(input);
|
|
8
|
+
return {
|
|
9
|
+
...snapshot,
|
|
10
|
+
transforms: [...(input.transforms ?? [])]
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export const viewer3DToolModule = defineKonitifToolModule({
|
|
14
|
+
id: 'konitif.viewer-3d',
|
|
15
|
+
name: 'KONITIF Viewer 3D',
|
|
16
|
+
capability: 'spatial-projection',
|
|
17
|
+
description: 'Product-neutral spatial observation and manipulation surface.'
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,qCAAqC,EAKtC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qCAAqC,EAKtC,MAAM,iBAAiB,CAAC;AAiCzB,kFAAkF;AAClF,MAAM,CAAC,MAAM,uCAAuC,GAAG,qCAAqC,CAAC;AAE7F,MAAM,UAAU,2BAA2B,CACzC,QAAwC,EAAE;IAE1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO;QACL,GAAG,QAAQ;QACX,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;IACxD,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,mBAAmB;IACzB,UAAU,EAAE,oBAAoB;IAChC,WAAW,EAAE,+DAA+D;CAC7E,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Visual interaction configuration, not authorization to command a device. */
|
|
2
|
+
export interface ViewerJointHandleDefinition {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly label: string;
|
|
5
|
+
readonly anchorNames?: readonly string[];
|
|
6
|
+
readonly anchorOffset?: Readonly<{
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
z: number;
|
|
10
|
+
}>;
|
|
11
|
+
readonly anchorLocalTargetNames?: readonly string[];
|
|
12
|
+
readonly anchorLocalTargetRatio?: number;
|
|
13
|
+
readonly joints: readonly {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly dragDirection: 'horizontal' | 'vertical';
|
|
16
|
+
readonly dragScale?: number;
|
|
17
|
+
readonly valueRange?: Readonly<{
|
|
18
|
+
min: number;
|
|
19
|
+
max: number;
|
|
20
|
+
}>;
|
|
21
|
+
}[];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=jointHandleDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jointHandleDefinition.d.ts","sourceRoot":"","sources":["../src/jointHandleDefinition.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,aAAa,EAAE,YAAY,GAAG,UAAU,CAAC;QAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9D,EAAE,CAAC;CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jointHandleDefinition.js","sourceRoot":"","sources":["../src/jointHandleDefinition.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Authored ring placement in a model-local frame, independent of physical LED state. */
|
|
2
|
+
export interface ViewerLedPlacementDefinition {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly anchorNames: readonly string[];
|
|
5
|
+
readonly vertical: Readonly<{
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
z: number;
|
|
9
|
+
}>;
|
|
10
|
+
readonly forward: Readonly<{
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
z: number;
|
|
14
|
+
}>;
|
|
15
|
+
readonly normal: Readonly<{
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
z: number;
|
|
19
|
+
}>;
|
|
20
|
+
/** Optional explicit third translation axis. Defaults to vertical × forward. */
|
|
21
|
+
readonly lateral?: Readonly<{
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
z: number;
|
|
25
|
+
}>;
|
|
26
|
+
/** Local X axis of the authored LED plane. Defaults to `vertical`. */
|
|
27
|
+
readonly layoutDirection?: Readonly<{
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
z: number;
|
|
31
|
+
}>;
|
|
32
|
+
readonly mirrorDirection: 1 | -1;
|
|
33
|
+
readonly handTip?: Readonly<{
|
|
34
|
+
sourceJoint: string;
|
|
35
|
+
ratio: number;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ledPlacementDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledPlacementDefinition.d.ts","sourceRoot":"","sources":["../src/ledPlacementDefinition.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,gFAAgF;IAChF,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,sEAAsE;IACtE,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,QAAQ,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledPlacementDefinition.js","sourceRoot":"","sources":["../src/ledPlacementDefinition.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Authored model-local frame for ring placement; axes must be finite unit vectors. */
|
|
2
|
+
export interface ViewerLedReferenceFrame {
|
|
3
|
+
readonly anchorNames: readonly string[];
|
|
4
|
+
readonly centerNames: readonly string[];
|
|
5
|
+
readonly fallbackCenter: Readonly<{
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
z: number;
|
|
9
|
+
}>;
|
|
10
|
+
readonly vertical: Readonly<{
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
z: number;
|
|
14
|
+
}>;
|
|
15
|
+
readonly forward: Readonly<{
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
z: number;
|
|
19
|
+
}>;
|
|
20
|
+
readonly lateral: Readonly<{
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
z: number;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ledReferenceFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledReferenceFrame.d.ts","sourceRoot":"","sources":["../src/ledReferenceFrame.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledReferenceFrame.js","sourceRoot":"","sources":["../src/ledReferenceFrame.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type ViewerLedLayout = 'circle' | 'strip';
|
|
2
|
+
/** Numeric presentation calibration for an LED group; not physical LED state. */
|
|
3
|
+
export interface ViewerLedRingCalibration {
|
|
4
|
+
/** Missing in legacy persisted values means `circle`. */
|
|
5
|
+
layout: ViewerLedLayout;
|
|
6
|
+
forwardOffset: number;
|
|
7
|
+
verticalOffset: number;
|
|
8
|
+
lateralOffset: number;
|
|
9
|
+
separation: number;
|
|
10
|
+
radius: number;
|
|
11
|
+
stripLength: number;
|
|
12
|
+
ledCount: number;
|
|
13
|
+
ledSize: number;
|
|
14
|
+
rotationX: number;
|
|
15
|
+
rotationY: number;
|
|
16
|
+
rotationZ: number;
|
|
17
|
+
isVisible: boolean;
|
|
18
|
+
mireVisible: boolean;
|
|
19
|
+
variantCount: number;
|
|
20
|
+
variantStep: number;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=ledRingCalibration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledRingCalibration.d.ts","sourceRoot":"","sources":["../src/ledRingCalibration.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjD,iFAAiF;AACjF,MAAM,WAAW,wBAAwB;IACvC,yDAAyD;IACzD,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledRingCalibration.js","sourceRoot":"","sources":["../src/ledRingCalibration.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface AnimationLoopHost {
|
|
2
|
+
isDestroyed(): boolean;
|
|
3
|
+
invalidate(): void;
|
|
4
|
+
frame(): void;
|
|
5
|
+
}
|
|
6
|
+
export declare class AnimationLoop {
|
|
7
|
+
private readonly host;
|
|
8
|
+
needsRender: boolean;
|
|
9
|
+
wasContinuousLoopActive: boolean;
|
|
10
|
+
private animationFrame;
|
|
11
|
+
constructor(host: AnimationLoopHost);
|
|
12
|
+
requestRender(): void;
|
|
13
|
+
scheduleLoop(): void;
|
|
14
|
+
cancel(): void;
|
|
15
|
+
beginFrame(): boolean;
|
|
16
|
+
isIdle(): boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=AnimationLoop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationLoop.d.ts","sourceRoot":"","sources":["../../src/renderer/AnimationLoop.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,WAAW,IAAI,OAAO,CAAC;IACvB,UAAU,IAAI,IAAI,CAAC;IACnB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,qBAAa,aAAa;IAKZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,WAAW,UAAQ;IACnB,uBAAuB,UAAS;IAChC,OAAO,CAAC,cAAc,CAAK;gBAEE,IAAI,EAAE,iBAAiB;IAEpD,aAAa,IAAI,IAAI;IAMrB,YAAY,IAAI,IAAI;IAQpB,MAAM,IAAI,IAAI;IAUd,UAAU,IAAI,OAAO;IASrB,MAAM,IAAI,OAAO;CAGlB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export class AnimationLoop {
|
|
2
|
+
host;
|
|
3
|
+
needsRender = true;
|
|
4
|
+
wasContinuousLoopActive = false;
|
|
5
|
+
animationFrame = 0;
|
|
6
|
+
constructor(host) {
|
|
7
|
+
this.host = host;
|
|
8
|
+
}
|
|
9
|
+
requestRender() {
|
|
10
|
+
this.host.invalidate();
|
|
11
|
+
this.needsRender = true;
|
|
12
|
+
this.scheduleLoop();
|
|
13
|
+
}
|
|
14
|
+
scheduleLoop() {
|
|
15
|
+
if (this.host.isDestroyed() || this.animationFrame !== 0 || typeof requestAnimationFrame === 'undefined') {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
this.animationFrame = requestAnimationFrame(this.host.frame);
|
|
19
|
+
}
|
|
20
|
+
cancel() {
|
|
21
|
+
if (this.animationFrame === 0 || typeof cancelAnimationFrame === 'undefined') {
|
|
22
|
+
this.animationFrame = 0;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
cancelAnimationFrame(this.animationFrame);
|
|
26
|
+
this.animationFrame = 0;
|
|
27
|
+
}
|
|
28
|
+
beginFrame() {
|
|
29
|
+
if (this.host.isDestroyed()) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
this.animationFrame = 0;
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
isIdle() {
|
|
36
|
+
return this.animationFrame === 0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=AnimationLoop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationLoop.js","sourceRoot":"","sources":["../../src/renderer/AnimationLoop.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,aAAa;IAKK;IAJ7B,WAAW,GAAG,IAAI,CAAC;IACnB,uBAAuB,GAAG,KAAK,CAAC;IACxB,cAAc,GAAG,CAAC,CAAC;IAE3B,YAA6B,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;IAAG,CAAC;IAExD,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE,CAAC;YACzG,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE,CAAC;YAC7E,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Object3D, OrthographicCamera, PerspectiveCamera, Quaternion, Vector3 } from 'three';
|
|
2
|
+
import type { RobotViewerQuaternion, RobotViewerVector, Viewer3DCameraProjection, Viewer3DOptions, Viewer3DSymmetricCameraView } from './Viewer3DRenderer.js';
|
|
3
|
+
type CameraLike = PerspectiveCamera | OrthographicCamera;
|
|
4
|
+
type ViewerCameraControls = {
|
|
5
|
+
readonly target: Vector3;
|
|
6
|
+
update(): boolean | void;
|
|
7
|
+
};
|
|
8
|
+
export interface OrthographicGroundCoveragePose {
|
|
9
|
+
position: Vector3;
|
|
10
|
+
target: Vector3;
|
|
11
|
+
lift: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Re-expresses a preset offset authored around the normalized simulated robot
|
|
15
|
+
* in the orientation of another visual incarnation. Positions stay anchored
|
|
16
|
+
* by semantic robot objects; this helper only carries the viewing direction.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveRelativeRobotCameraOffset(offset: Vector3, referenceOrientation: Quaternion, activeOrientation: Quaternion): Vector3;
|
|
19
|
+
export interface RobotCameraFocusFrame {
|
|
20
|
+
anchor: Vector3;
|
|
21
|
+
orientation: Quaternion;
|
|
22
|
+
}
|
|
23
|
+
export interface RobotCameraFocusPose {
|
|
24
|
+
position: Vector3;
|
|
25
|
+
target: Vector3;
|
|
26
|
+
up: Vector3;
|
|
27
|
+
}
|
|
28
|
+
export interface QuaternionCameraOrbitPose {
|
|
29
|
+
position: Vector3;
|
|
30
|
+
up: Vector3;
|
|
31
|
+
}
|
|
32
|
+
export interface WorldUpCameraPose {
|
|
33
|
+
position: Vector3;
|
|
34
|
+
up: Vector3;
|
|
35
|
+
}
|
|
36
|
+
/** Shared temporal curve for camera, incarnation placement and opacity. */
|
|
37
|
+
export declare function easeViewerTransition(progress: number): number;
|
|
38
|
+
/**
|
|
39
|
+
* Applies a camera-local arcball step around a stable focus point.
|
|
40
|
+
*
|
|
41
|
+
* Both the camera offset and its tangent up vector are transported by the
|
|
42
|
+
* same quaternions. Unlike a world-up spherical orbit, this representation
|
|
43
|
+
* has no polar singularity and can cross the top or bottom of the sphere
|
|
44
|
+
* without clamping or snapping.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveQuaternionCameraOrbitPose(position: Vector3, target: Vector3, up: Vector3, deltaYawRadians: number, deltaPitchRadians: number): QuaternionCameraOrbitPose | null;
|
|
47
|
+
/** Applies a classic spherical orbit around the immutable world Y axis. */
|
|
48
|
+
export declare function resolveWorldUpCameraOrbitPose(position: Vector3, target: Vector3, deltaYawRadians: number, deltaPitchRadians: number, minimumPolarAngleRadians?: number): WorldUpCameraPose | null;
|
|
49
|
+
/**
|
|
50
|
+
* Reconciles an unrestricted arcball pose with a world-up orbit frame.
|
|
51
|
+
* The viewing position is preserved unless it sits inside the small polar
|
|
52
|
+
* singularity where OrbitControls cannot derive a stable azimuth.
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveWorldUpCameraPose(position: Vector3, target: Vector3, currentUp: Vector3, minimumPolarAngleRadians?: number): WorldUpCameraPose;
|
|
55
|
+
/**
|
|
56
|
+
* Projects one camera pose from a robot incarnation frame into another.
|
|
57
|
+
* Translating and rotating the complete pose preserves the chosen framing,
|
|
58
|
+
* zoom distance and semantic focus instead of snapping to a scene axis.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveRobotCameraFocusPose(position: Vector3, target: Vector3, up: Vector3, from: RobotCameraFocusFrame, to: RobotCameraFocusFrame): RobotCameraFocusPose;
|
|
61
|
+
/**
|
|
62
|
+
* Keeps the lower orthographic view rays above the support plane.
|
|
63
|
+
*
|
|
64
|
+
* Contrary to a perspective camera, orthographic rays start at different
|
|
65
|
+
* world-space heights. With a shallow ISO framing, the bottom rays can start
|
|
66
|
+
* below the floor and therefore never meet it, exposing a hard horizontal
|
|
67
|
+
* background cut even when the ground mesh itself is very large.
|
|
68
|
+
*/
|
|
69
|
+
export declare function resolveOrthographicGroundCoveragePose(position: Vector3, target: Vector3, up: Vector3, viewHeight: number, floorY?: number, margin?: number): OrthographicGroundCoveragePose;
|
|
70
|
+
interface EyeRingPoseLike {
|
|
71
|
+
eyes: Array<{
|
|
72
|
+
id: 'left' | 'right';
|
|
73
|
+
center: Vector3;
|
|
74
|
+
}>;
|
|
75
|
+
orientation: Quaternion;
|
|
76
|
+
radius: number;
|
|
77
|
+
}
|
|
78
|
+
export interface CameraControllerHost {
|
|
79
|
+
readonly perspectiveCamera: PerspectiveCamera;
|
|
80
|
+
readonly orthographicCamera: OrthographicCamera;
|
|
81
|
+
readonly controls: ViewerCameraControls;
|
|
82
|
+
getOptions(): Required<Omit<Viewer3DOptions, 'temporalSchedulerHost' | 'temporalProjectionExperimentCollector'>>;
|
|
83
|
+
getCamera(): CameraLike;
|
|
84
|
+
setCamera(camera: CameraLike): void;
|
|
85
|
+
setControlsCamera(camera: CameraLike): void;
|
|
86
|
+
setCameraTransitionActive(active: boolean): void;
|
|
87
|
+
isDestroyed(): boolean;
|
|
88
|
+
getViewportAspect(): number;
|
|
89
|
+
getOrthographicViewHeight(): number;
|
|
90
|
+
setOrthographicViewHeight(height: number): void;
|
|
91
|
+
resolveOrthographicViewHeightFromPerspectiveDistance(distance: number): number;
|
|
92
|
+
applyCameraPose(position: Vector3, target: Vector3, up?: Vector3): void;
|
|
93
|
+
applyCameraPlanes(near: number, far: number): void;
|
|
94
|
+
updateCameraProjectionForViewport(): void;
|
|
95
|
+
syncPostProcessingCamera(): void;
|
|
96
|
+
requestRender(): void;
|
|
97
|
+
setControlsSettlingFrames(frames: number): void;
|
|
98
|
+
setControlsActive(active: boolean): void;
|
|
99
|
+
serializeCameraVector(vector: Vector3): RobotViewerVector;
|
|
100
|
+
serializeCameraQuaternion(quaternion: Quaternion): RobotViewerQuaternion;
|
|
101
|
+
resolveEyeRingPose(): EyeRingPoseLike | null;
|
|
102
|
+
resolveRobotObject(candidates: readonly string[]): Object3D | null;
|
|
103
|
+
resolveRobotCameraOffset(offset: Vector3): Vector3;
|
|
104
|
+
}
|
|
105
|
+
export declare class CameraController {
|
|
106
|
+
private readonly host;
|
|
107
|
+
private cameraTransitionFrame;
|
|
108
|
+
private cameraTransitionOnCancel;
|
|
109
|
+
constructor(host: CameraControllerHost);
|
|
110
|
+
setCameraPose(position: RobotViewerVector, target?: RobotViewerVector, up?: RobotViewerVector): void;
|
|
111
|
+
orbitCameraBy(deltaYawRadians: number, deltaPitchRadians: number): void;
|
|
112
|
+
worldUpOrbitCameraBy(deltaYawRadians: number, deltaPitchRadians: number): void;
|
|
113
|
+
getCameraPose(): {
|
|
114
|
+
position: RobotViewerVector;
|
|
115
|
+
target: RobotViewerVector;
|
|
116
|
+
up: RobotViewerVector;
|
|
117
|
+
quaternion: RobotViewerQuaternion;
|
|
118
|
+
projection: Viewer3DCameraProjection;
|
|
119
|
+
};
|
|
120
|
+
resolveEyeRingCameraPose(viewId?: Viewer3DSymmetricCameraView): {
|
|
121
|
+
position: RobotViewerVector;
|
|
122
|
+
target: RobotViewerVector;
|
|
123
|
+
projection: Viewer3DCameraProjection;
|
|
124
|
+
} | null;
|
|
125
|
+
resolveRobotObjectCameraPose(anchorNames: readonly string[] | readonly (readonly string[])[], offset: RobotViewerVector, options?: {
|
|
126
|
+
targetOffset?: RobotViewerVector;
|
|
127
|
+
projection?: Viewer3DCameraProjection;
|
|
128
|
+
}): {
|
|
129
|
+
position: RobotViewerVector;
|
|
130
|
+
target: RobotViewerVector;
|
|
131
|
+
projection: Viewer3DCameraProjection;
|
|
132
|
+
} | null;
|
|
133
|
+
transitionCameraPose(position: RobotViewerVector, target?: RobotViewerVector, durationMs?: number, up?: RobotViewerVector, callbacks?: {
|
|
134
|
+
onComplete?: () => void;
|
|
135
|
+
onCancel?: () => void;
|
|
136
|
+
}): void;
|
|
137
|
+
transitionRobotCameraFocus(from: RobotCameraFocusFrame, to: RobotCameraFocusFrame, durationMs?: number): void;
|
|
138
|
+
/**
|
|
139
|
+
* Re-aims the camera at another incarnation while keeping its world position
|
|
140
|
+
* and up vector fixed. This avoids composing a camera dolly with the robot
|
|
141
|
+
* comparison layout tween during REAL connection.
|
|
142
|
+
*/
|
|
143
|
+
transitionRobotCameraFocusTargetOnly(from: RobotCameraFocusFrame, to: RobotCameraFocusFrame, durationMs?: number, delayMs?: number): void;
|
|
144
|
+
private transitionCameraTargetFixed;
|
|
145
|
+
cancelCameraTransition(): void;
|
|
146
|
+
applyCameraPoseImmediate(position: Vector3, target: Vector3, up?: Vector3): void;
|
|
147
|
+
setCameraProjection(cameraProjection: Viewer3DCameraProjection): void;
|
|
148
|
+
handleControlsStart(): void;
|
|
149
|
+
handleControlsChange(): void;
|
|
150
|
+
handleControlsEnd(): void;
|
|
151
|
+
private resolveProjectionPose;
|
|
152
|
+
}
|
|
153
|
+
export {};
|
|
154
|
+
//# sourceMappingURL=CameraController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraController.d.ts","sourceRoot":"","sources":["../../src/renderer/CameraController.ts"],"names":[],"mappings":"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"}
|