@viamrobotics/motion-tools 1.32.0 → 1.33.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/dist/components/App.svelte +17 -11
- package/dist/components/App.svelte.d.ts +14 -7
- package/dist/components/Entities/Entities.svelte +18 -25
- package/dist/components/Entities/Entities.svelte.d.ts +2 -17
- package/dist/components/Entities/Label.svelte +79 -13
- package/dist/components/Entities/Label.svelte.d.ts +2 -1
- package/dist/components/Entities/Labels.svelte +36 -0
- package/dist/components/Entities/Labels.svelte.d.ts +3 -0
- package/dist/components/Entities/LineDots.svelte +8 -3
- package/dist/components/Entities/labelLayout/applyTeleports.d.ts +9 -0
- package/dist/components/Entities/labelLayout/applyTeleports.js +39 -0
- package/dist/components/Entities/labelLayout/buildNeighborhood.d.ts +8 -0
- package/dist/components/Entities/labelLayout/buildNeighborhood.js +26 -0
- package/dist/components/Entities/labelLayout/cameraHash.d.ts +8 -0
- package/dist/components/Entities/labelLayout/cameraHash.js +25 -0
- package/dist/components/Entities/labelLayout/cost.d.ts +44 -0
- package/dist/components/Entities/labelLayout/cost.js +126 -0
- package/dist/components/Entities/labelLayout/createLabelLayout.d.ts +27 -0
- package/dist/components/Entities/labelLayout/createLabelLayout.js +194 -0
- package/dist/components/Entities/labelLayout/geometry.d.ts +20 -0
- package/dist/components/Entities/labelLayout/geometry.js +151 -0
- package/dist/components/Entities/labelLayout/labelStore.svelte.d.ts +17 -0
- package/dist/components/Entities/labelLayout/labelStore.svelte.js +28 -0
- package/dist/components/Entities/labelLayout/measure.d.ts +13 -0
- package/dist/components/Entities/labelLayout/measure.js +42 -0
- package/dist/components/Entities/labelLayout/slots.d.ts +11 -0
- package/dist/components/Entities/labelLayout/slots.js +47 -0
- package/dist/components/Entities/labelLayout/solve.d.ts +11 -0
- package/dist/components/Entities/labelLayout/solve.js +93 -0
- package/dist/components/Entities/labelLayout/spatialHash.d.ts +15 -0
- package/dist/components/Entities/labelLayout/spatialHash.js +53 -0
- package/dist/components/Entities/labelLayout/types.d.ts +105 -0
- package/dist/components/Entities/labelLayout/types.js +19 -0
- package/dist/components/Entities/labelLayout/writeBack.d.ts +20 -0
- package/dist/components/Entities/labelLayout/writeBack.js +51 -0
- package/dist/components/Scene.svelte +42 -48
- package/dist/components/SceneProviders.svelte +0 -3
- package/dist/components/SelectedTransformControls.svelte +65 -47
- package/dist/components/overlay/Details.svelte +198 -224
- package/dist/components/overlay/Details.svelte.d.ts +1 -1
- package/dist/components/overlay/Popover.svelte +6 -4
- package/dist/components/overlay/Popover.svelte.d.ts +6 -2
- package/dist/components/overlay/dashboard/Button.svelte +7 -2
- package/dist/components/overlay/dashboard/Button.svelte.d.ts +2 -1
- package/dist/components/overlay/details/AxesHelperDetails.svelte +32 -0
- package/dist/components/overlay/details/AxesHelperDetails.svelte.d.ts +7 -0
- package/dist/components/overlay/details/ColorDetails.svelte +35 -0
- package/dist/components/overlay/details/ColorDetails.svelte.d.ts +7 -0
- package/dist/components/overlay/details/GeometryDetails.svelte +104 -0
- package/dist/components/overlay/details/GeometryDetails.svelte.d.ts +7 -0
- package/dist/components/overlay/details/LineDetails/LineDetails.svelte +196 -0
- package/dist/components/overlay/details/LineDetails/LineDetails.svelte.d.ts +7 -0
- package/dist/components/overlay/details/LineDetails/linePositions.d.ts +3 -0
- package/dist/components/overlay/details/LineDetails/linePositions.js +30 -0
- package/dist/components/overlay/details/OpacityDetails.svelte +44 -0
- package/dist/components/overlay/details/OpacityDetails.svelte.d.ts +7 -0
- package/dist/components/overlay/details/PoseDetails.svelte +189 -0
- package/dist/components/overlay/details/PoseDetails.svelte.d.ts +14 -0
- package/dist/components/overlay/settings/ConnectionSettings.svelte +42 -0
- package/dist/components/overlay/settings/ConnectionSettings.svelte.d.ts +18 -0
- package/dist/components/overlay/settings/DebugSettings.svelte +13 -0
- package/dist/components/{xr/frame-configure/Controllers.svelte.d.ts → overlay/settings/DebugSettings.svelte.d.ts} +3 -3
- package/dist/components/overlay/settings/PointcloudSettings.svelte +61 -0
- package/dist/components/overlay/settings/PointcloudSettings.svelte.d.ts +3 -0
- package/dist/components/overlay/settings/SceneSettings.svelte +110 -0
- package/dist/components/overlay/settings/SceneSettings.svelte.d.ts +18 -0
- package/dist/components/overlay/settings/Settings.svelte +27 -312
- package/dist/components/overlay/settings/Settings.svelte.d.ts +8 -1
- package/dist/components/overlay/settings/Tabs.svelte +5 -3
- package/dist/components/overlay/settings/Tabs.svelte.d.ts +3 -3
- package/dist/components/overlay/settings/VisionSettings.svelte +31 -0
- package/dist/components/overlay/settings/VisionSettings.svelte.d.ts +3 -0
- package/dist/components/overlay/settings/WeblabSettings.svelte +27 -0
- package/dist/components/overlay/settings/WeblabSettings.svelte.d.ts +18 -0
- package/dist/components/overlay/settings/WidgetSettings.svelte +49 -0
- package/dist/components/overlay/settings/WidgetSettings.svelte.d.ts +3 -0
- package/dist/components/overlay/widgets/FramePov.svelte +1 -12
- package/dist/ecs/traits.d.ts +1 -1
- package/dist/ecs/traits.js +1 -1
- package/dist/hooks/useWorldState.svelte.js +39 -50
- package/dist/{components/xr → plugins/XR}/ArmTeleop.svelte +3 -5
- package/dist/plugins/XR/DebugPanel.svelte +29 -0
- package/dist/plugins/XR/DebugPanel.svelte.d.ts +3 -0
- package/dist/plugins/XR/OriginMarker.svelte +341 -0
- package/dist/plugins/XR/PendingEditsPanel.svelte +60 -0
- package/dist/plugins/XR/PendingEditsPanel.svelte.d.ts +18 -0
- package/dist/plugins/XR/WristDisplay.svelte +60 -0
- package/dist/plugins/XR/WristDisplay.svelte.d.ts +19 -0
- package/dist/{components/xr → plugins/XR}/XR.svelte +69 -23
- package/dist/plugins/XR/XRPlugins.svelte +9 -0
- package/dist/plugins/XR/XRPlugins.svelte.d.ts +26 -0
- package/dist/plugins/XR/XRSettings.svelte +240 -0
- package/dist/plugins/XR/XRSettings.svelte.d.ts +3 -0
- package/dist/{components/xr → plugins/XR}/XRToast.svelte +6 -9
- package/dist/plugins/XR/debug.svelte.d.ts +7 -0
- package/dist/plugins/XR/debug.svelte.js +13 -0
- package/dist/plugins/XR/frame-configure/Controllers.svelte +413 -0
- package/dist/plugins/XR/teleop/Controllers.svelte.d.ts +3 -0
- package/dist/{components/xr → plugins/XR}/useAnchors.svelte.d.ts +4 -0
- package/dist/{components/xr → plugins/XR}/useAnchors.svelte.js +22 -0
- package/dist/plugins/XR/useOrigin.svelte.d.ts +24 -0
- package/dist/plugins/XR/useOrigin.svelte.js +50 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.js +2 -0
- package/dist/three/OBBHelper.js +1 -0
- package/package.json +3 -1
- package/dist/components/xr/OriginMarker.svelte +0 -151
- package/dist/components/xr/XRControllerSettings.svelte +0 -242
- package/dist/components/xr/XRControllerSettings.svelte.d.ts +0 -3
- package/dist/components/xr/frame-configure/Controllers.svelte +0 -6
- package/dist/components/xr/useOrigin.svelte.d.ts +0 -9
- package/dist/components/xr/useOrigin.svelte.js +0 -27
- /package/dist/{components/xr → plugins/XR}/ArmTeleop.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/BentPlaneGeometry.svelte +0 -0
- /package/dist/{components/xr → plugins/XR}/BentPlaneGeometry.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/CameraFeed.svelte +0 -0
- /package/dist/{components/xr → plugins/XR}/CameraFeed.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/JointLimitsWidget.svelte +0 -0
- /package/dist/{components/xr → plugins/XR}/JointLimitsWidget.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/OriginMarker.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/PointDistance.svelte +0 -0
- /package/dist/{components/xr → plugins/XR}/PointDistance.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/XR.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/XRConfigPanel.svelte +0 -0
- /package/dist/{components/xr → plugins/XR}/XRConfigPanel.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/XRToast.svelte.d.ts +0 -0
- /package/dist/{components/xr/teleop → plugins/XR/frame-configure}/Controllers.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/math.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/math.js +0 -0
- /package/dist/{components/xr → plugins/XR}/teleop/Controllers.svelte +0 -0
- /package/dist/{components/xr → plugins/XR}/toasts.svelte.d.ts +0 -0
- /package/dist/{components/xr → plugins/XR}/toasts.svelte.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { useThrelte } from '@threlte/core'
|
|
3
3
|
import { TransformControls } from '@threlte/extras'
|
|
4
|
-
import { Matrix4
|
|
4
|
+
import { Matrix4 } from 'three'
|
|
5
5
|
|
|
6
6
|
import type { FrameEditSession } from '../editing/FrameEditSession'
|
|
7
7
|
|
|
@@ -11,14 +11,7 @@
|
|
|
11
11
|
import { useFrameEditSession } from '../hooks/useFrameEditSession.svelte'
|
|
12
12
|
import { usePartConfig } from '../hooks/usePartConfig.svelte'
|
|
13
13
|
import { useSettings } from '../hooks/useSettings.svelte'
|
|
14
|
-
import {
|
|
15
|
-
createPose,
|
|
16
|
-
matrixToPose,
|
|
17
|
-
poseToMatrix,
|
|
18
|
-
quaternionToPose,
|
|
19
|
-
solveEditedMatrix,
|
|
20
|
-
vector3ToPose,
|
|
21
|
-
} from '../transform'
|
|
14
|
+
import { createPose, matrixToPose, poseToMatrix, solveEditedMatrix } from '../transform'
|
|
22
15
|
|
|
23
16
|
const { scene } = useThrelte()
|
|
24
17
|
const settings = useSettings()
|
|
@@ -64,9 +57,10 @@
|
|
|
64
57
|
})
|
|
65
58
|
const isSphereScale = $derived(activeMode === 'scale' && sphere.current !== undefined)
|
|
66
59
|
const isCapsuleScale = $derived(activeMode === 'scale' && capsule.current !== undefined)
|
|
60
|
+
const transforming = $derived(
|
|
61
|
+
ref && entity && activeMode && !isFragmentComponentWithVariables && !invisible.current
|
|
62
|
+
)
|
|
67
63
|
|
|
68
|
-
const quaternion = new Quaternion()
|
|
69
|
-
const vector3 = new Vector3()
|
|
70
64
|
const refPose = createPose()
|
|
71
65
|
const tempRefMatrix = new Matrix4()
|
|
72
66
|
const tempEditedMatrix = new Matrix4()
|
|
@@ -119,28 +113,14 @@
|
|
|
119
113
|
}
|
|
120
114
|
|
|
121
115
|
const onChange = () => {
|
|
122
|
-
if (!ref || !entity || !activeMode)
|
|
123
|
-
return
|
|
124
|
-
}
|
|
116
|
+
if (!ref || !entity || !activeMode) return
|
|
125
117
|
|
|
126
118
|
const isFrameEntity = entity.has(traits.FramesAPI)
|
|
127
|
-
|
|
128
119
|
if (activeMode === 'translate' || activeMode === 'rotate') {
|
|
129
120
|
if (isFrameEntity) {
|
|
130
121
|
stageFrameTransform()
|
|
131
122
|
} else {
|
|
132
|
-
|
|
133
|
-
if (matrix) {
|
|
134
|
-
matrixToPose(matrix, tempPose)
|
|
135
|
-
if (activeMode === 'translate') {
|
|
136
|
-
vector3ToPose(ref.getWorldPosition(vector3), tempPose)
|
|
137
|
-
} else {
|
|
138
|
-
quaternionToPose(ref.getWorldQuaternion(quaternion), tempPose)
|
|
139
|
-
ref.quaternion.copy(quaternion)
|
|
140
|
-
}
|
|
141
|
-
poseToMatrix(tempPose, matrix)
|
|
142
|
-
entity.changed(traits.Matrix)
|
|
143
|
-
}
|
|
123
|
+
stageLocalTransform()
|
|
144
124
|
}
|
|
145
125
|
} else {
|
|
146
126
|
// scale → bake the gizmo's scale factor into the geometry trait,
|
|
@@ -194,40 +174,46 @@
|
|
|
194
174
|
}
|
|
195
175
|
|
|
196
176
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
* Three.js parent has identity world, so `ref.position` / `ref.quaternion`
|
|
200
|
-
* are world-space values. Matrix and EditedMatrix store local-to-parent
|
|
201
|
-
* transforms, so we left-multiply by the parent's inverted WorldMatrix
|
|
202
|
-
* before staging — otherwise WorldMatrix recomposition (parent × edited)
|
|
203
|
-
* re-applies the parent's rotation/translation and the frame ends up at
|
|
204
|
-
* parent × where-the-user-pulled-it.
|
|
177
|
+
* Build the entity's parent-relative drag target from the gizmo's world-space
|
|
178
|
+
* `ref` transform into `out`.
|
|
205
179
|
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
180
|
+
* Entity renderers mount at the scene root with `matrixAutoUpdate = false`
|
|
181
|
+
* and recompose `group.matrix` from the `WorldMatrix` trait, so
|
|
182
|
+
* `ref.position` / `ref.quaternion` are world-space. Matrix-shaped traits
|
|
183
|
+
* store local-to-parent, so we left-multiply by the parent's inverted
|
|
184
|
+
* WorldMatrix. Otherwise recomposition (parentWorld × local) re-applies the
|
|
185
|
+
* parent transform and the entity lands at parentWorld × where-it-was-dragged.
|
|
209
186
|
*/
|
|
210
|
-
const
|
|
187
|
+
const computeLocalDragTarget = (out: Matrix4) => {
|
|
211
188
|
if (!ref || !entity) return
|
|
212
189
|
|
|
213
|
-
|
|
214
|
-
|
|
190
|
+
out.makeRotationFromQuaternion(ref.quaternion)
|
|
191
|
+
out.setPosition(ref.position)
|
|
215
192
|
|
|
216
|
-
const
|
|
217
|
-
const parentWorld = parentEntity?.get(traits.WorldMatrix)
|
|
193
|
+
const parentWorld = entity.targetFor(relations.ChildOf)?.get(traits.WorldMatrix)
|
|
218
194
|
if (parentWorld) {
|
|
219
195
|
tempParentInverse.copy(parentWorld).invert()
|
|
220
|
-
|
|
196
|
+
out.premultiply(tempParentInverse)
|
|
221
197
|
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Stages a translate/rotate drag for a frame system entity into the edit
|
|
202
|
+
* session. With a kinematic offset (LiveMatrix + Matrix both present), the
|
|
203
|
+
* parent-relative target feeds solveEditedMatrix to back out the EditedMatrix
|
|
204
|
+
* satisfying live × baseline⁻¹ × edited = local. Without one, Frame.svelte's
|
|
205
|
+
* blend short-circuits to EditedMatrix, so we stage the target pose directly.
|
|
206
|
+
*/
|
|
207
|
+
const stageFrameTransform = () => {
|
|
208
|
+
if (!ref || !entity) return
|
|
222
209
|
|
|
210
|
+
computeLocalDragTarget(tempRefMatrix)
|
|
223
211
|
matrixToPose(tempRefMatrix, refPose)
|
|
224
212
|
|
|
225
213
|
const live = liveMatrix.current
|
|
226
214
|
const config = configMatrix.current
|
|
227
215
|
|
|
228
216
|
if (!live || !config) {
|
|
229
|
-
// No live matrix available — Frame.svelte's blend short-circuits to
|
|
230
|
-
// editedMatrix, so the parent-relative target is what we stage.
|
|
231
217
|
if (activeMode === 'translate') {
|
|
232
218
|
session?.stagePose(entity, {
|
|
233
219
|
x: refPose.x,
|
|
@@ -249,9 +235,41 @@
|
|
|
249
235
|
matrixToPose(tempEditedMatrix, tempPose)
|
|
250
236
|
session?.stagePose(entity, { ...tempPose })
|
|
251
237
|
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Stages a translate/rotate drag for a non-frame-system entity (e.g. a gizmo)
|
|
241
|
+
* by writing the dragged component into the Matrix trait. Gizmos carry no
|
|
242
|
+
* LiveMatrix, so there's no live-pose blend to invert — the parent-relative
|
|
243
|
+
* target is the new local transform.
|
|
244
|
+
*/
|
|
245
|
+
const stageLocalTransform = () => {
|
|
246
|
+
if (!ref || !entity) return
|
|
247
|
+
|
|
248
|
+
const matrix = entity.get(traits.Matrix)
|
|
249
|
+
if (!matrix) return
|
|
250
|
+
|
|
251
|
+
computeLocalDragTarget(tempRefMatrix)
|
|
252
|
+
|
|
253
|
+
// update only the dragged component
|
|
254
|
+
matrixToPose(matrix, tempPose)
|
|
255
|
+
matrixToPose(tempRefMatrix, refPose)
|
|
256
|
+
if (activeMode === 'translate') {
|
|
257
|
+
tempPose.x = refPose.x
|
|
258
|
+
tempPose.y = refPose.y
|
|
259
|
+
tempPose.z = refPose.z
|
|
260
|
+
} else {
|
|
261
|
+
tempPose.oX = refPose.oX
|
|
262
|
+
tempPose.oY = refPose.oY
|
|
263
|
+
tempPose.oZ = refPose.oZ
|
|
264
|
+
tempPose.theta = refPose.theta
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
poseToMatrix(tempPose, matrix)
|
|
268
|
+
entity.changed(traits.Matrix)
|
|
269
|
+
}
|
|
252
270
|
</script>
|
|
253
271
|
|
|
254
|
-
{#if
|
|
272
|
+
{#if transforming}
|
|
255
273
|
{#key entity}
|
|
256
274
|
<TransformControls
|
|
257
275
|
object={ref}
|