mujoco-react 10.5.0 → 10.7.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.
- package/README.md +42 -11
- package/dist/{chunk-KHZ5U36J.js → chunk-EN55TTGH.js} +2 -2
- package/dist/chunk-EN55TTGH.js.map +1 -0
- package/dist/index.d.ts +41 -5
- package/dist/index.js +122 -25
- package/dist/index.js.map +1 -1
- package/dist/onnx.d.ts +1 -1
- package/dist/spark.d.ts +1 -1
- package/dist/spark.js +1 -1
- package/dist/{types-CViUme8D.d.ts → types-Dvtm4I0o.d.ts} +14 -3
- package/package.json +1 -1
- package/src/core/GenericIK.ts +17 -10
- package/src/hooks/useControlGroup.ts +0 -0
- package/src/hooks/useIkController.ts +33 -5
- package/src/index.ts +3 -1
- package/src/types.ts +22 -3
- package/dist/chunk-KHZ5U36J.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { M as MujocoContextValue, a as MujocoCanvasProps, b as MujocoSimAPI, S as SceneConfig, R as ReadyCallbackInput, c as StepCallbackInput, d as SelectionCallbackInput, e as MujocoModule, f as MujocoRenderOptions, P as PhysicsStepCallback, g as MujocoModel, h as MujocoData, C as ControlGroupInfo, A as ActuatedJointInfo, i as ControlGroupSelector, O as ObservationConfig, j as ObservationResult, I as IkConfig, k as IkContextValue, B as BodyProps, l as IkGizmoProps, D as DragInteractionProps, m as SceneLightsProps, n as ScenarioLightingProps, o as SplatEnvironmentProps, V as VisualScenarioEffectsProps, p as VisualScenarioConfig, q as SplatRendererKind, r as PairedSplatEnvironmentConfig, s as SplatFormat, t as SplatCollisionProxyConfig, u as SplatEnvironmentReadiness, v as SplatCollisionPrimitive, w as SplatEnvironmentReadinessStatus, x as SplatSceneConfigInput, y as SplatSceneConfigState, z as VisualScenarioExecutionContextInput, E as VisualScenarioExecutionContext, F as ScenarioLightingPreset, G as SplatEnvironmentMetadataInput, H as SplatEnvironmentMetadata, J as SplatSceneInput, K as CameraFrameCaptureOptions, L as DebugProps, N as GeomInfo, Q as ContactListenerProps, T as TrajectoryPlayerProps, U as ActuatorInfo, W as Sites, X as SitePositionResult, Y as Sensors, Z as SensorHandle, _ as SensorInfo, $ as Joints, a0 as ScalarJointStateResult, a1 as ArrayJointStateResult, a2 as JointStateOptions, a3 as JointStateResult, a4 as Bodies, a5 as BodyStateResult, a6 as Geoms, a7 as Actuators, a8 as CtrlHandle, a9 as ContactInfo, aa as KeyboardTeleopConfig, ab as KeyboardIkTargetConfig, ac as PolicyConfig, ad as PolicyAPI, ae as RemotePolicyConfig, af as RemotePolicyAPI, ag as ObservationHandle, ah as ObservationOutput, ai as TrajectoryInput, aj as TrajectoryStateChangeInput, ak as PlaybackState, al as TrajectoryFrame, am as FrameCaptureOptions, an as FrameCaptureResult, ao as FrameCaptureBlobResult, ap as FrameCaptureAPI, aq as CameraFrameCaptureAPI, ar as Cameras, as as CameraFrameSequenceCamera, at as CameraFrameCaptureSource, au as CameraFrameSequenceOptions, av as CameraFrameSequenceResult, aw as PolicyCameraFrameStream, ax as PolicyCameraFrameCaptureOptions, ay as PolicyCameraFrameCaptureResult, az as FrameCaptureStatus, aA as PolicyCameraFrameCaptureAPI, aB as CameraFrameCaptureTensorOptions, aC as CameraFrameTensorResult, aD as CameraFrameSequenceRecorderAPI, aE as ImagePointCoordinateSpace, aF as ImagePointProjectionOptions, aG as ImagePointProjectionResult, aH as PolicyVector } from './types-
|
|
3
|
-
export { aI as BodyInfo, aJ as CAMERA_FRAME_CAPTURE_PRE_RENDER_USER_DATA_KEY, aK as CAMERA_FRAME_CAPTURE_RENDER_USER_DATA_KEY, aL as CAPTURE_EXCLUDE_KEY, aM as CameraFrameCaptureBlobResult, aN as CameraFrameCaptureQuaternion, aO as CameraFrameCaptureResult, aP as CameraFrameCaptureSession, aQ as CameraFrameCaptureVector3, aR as CameraFramePixelsResult, aS as CameraFrameSequenceCameraSummary, aT as CameraFrameSequenceFrame, aU as CameraFrameSequenceSampleInput, aV as CameraFrameSequenceStepInput, aW as CameraInfo, aX as ControlJointInfo, aY as DebugVirtualCamera, aZ as FrameCaptureTarget, a_ as FrameCaptureTargetRef, a$ as IKSolveFn, b0 as IkGizmoDragInput, b1 as IkSolveInput, b2 as JointInfo, b3 as JointStateKind, b4 as KeyBinding, b5 as KeyboardIkTargetAction, b6 as KeyboardIkTargetBinding, b7 as Keyframes, b8 as ModelActuators, b9 as ModelBodies, ba as ModelCameras, bb as ModelGeoms, bc as ModelJoints, bd as ModelKeyframes, be as ModelOptions, bf as ModelResource, bg as ModelResources, bh as ModelSensors, bi as ModelSites, bj as Models, bk as MujocoContact, bl as MujocoContactArray, bm as MujocoFrameCaptureOptions, bn as ObservationLayoutItem, bo as PhysicsConfig, bp as PhysicsStepInput, bq as PolicyActionChunk, br as PolicyActionInput, bs as PolicyImageTensorLayout, bt as PolicyImageTensorOptions, bu as PolicyImageTensorPixelOptions, bv as PolicyImageTensorRange, bw as PolicyImageTensorResult, bx as PolicyImageTensorSourceOrigin, by as PolicyInferenceInput, bz as PolicyInferenceOutput, bA as PolicyInferenceResult, bB as PolicyObservationInput, bC as RayHit, bD as Register, bE as RegisteredModelMap, bF as RemotePolicyRequestInfo, bG as RemotePolicyRequestInput, bH as RemotePolicyResponseInfo, bI as RemotePolicyStatus, bJ as ResetCallbackInput, bK as ResolvedScenarioCameraConfig, bL as ResolvedScenarioMaterialConfig, bM as ResourceSelector, bN as ScenarioCameraConfig, bO as ScenarioMaterialConfig, bP as SceneMarker, bQ as SceneObject, bR as SensorResult, bS as SiteInfo, bT as SplatAssetConfig, bU as SplatScenarioConfig, bV as StateSnapshot, bW as TrajectoryData, bX as TrajectoryFrameCallbackInput, bY as VisualScenarioMaterialFilterInput, bZ as XmlPatch, b_ as captureCameraFrame, b$ as captureCameraFrameBlob, c0 as captureCameraFrameTensor, c1 as createCameraFrameCaptureSession, c2 as dataUrlToPolicyImageTensor, c3 as getContact, c4 as imageDataToPolicyImageTensor, c5 as pixelsToPolicyImageTensor, c6 as registerModelResources, c7 as renderCameraFrameToCanvas } from './types-
|
|
2
|
+
import { M as MujocoContextValue, a as MujocoCanvasProps, b as MujocoSimAPI, S as SceneConfig, R as ReadyCallbackInput, c as StepCallbackInput, d as SelectionCallbackInput, e as MujocoModule, f as MujocoRenderOptions, P as PhysicsStepCallback, g as MujocoModel, h as MujocoData, C as ControlGroupInfo, A as ActuatedJointInfo, i as ControlGroupSelector, O as ObservationConfig, j as ObservationResult, I as IkConfig, k as IkContextValue, B as BodyProps, l as IkGizmoProps, D as DragInteractionProps, m as SceneLightsProps, n as ScenarioLightingProps, o as SplatEnvironmentProps, V as VisualScenarioEffectsProps, p as VisualScenarioConfig, q as SplatRendererKind, r as PairedSplatEnvironmentConfig, s as SplatFormat, t as SplatCollisionProxyConfig, u as SplatEnvironmentReadiness, v as SplatCollisionPrimitive, w as SplatEnvironmentReadinessStatus, x as SplatSceneConfigInput, y as SplatSceneConfigState, z as VisualScenarioExecutionContextInput, E as VisualScenarioExecutionContext, F as ScenarioLightingPreset, G as SplatEnvironmentMetadataInput, H as SplatEnvironmentMetadata, J as SplatSceneInput, K as CameraFrameCaptureOptions, L as DebugProps, N as GeomInfo, Q as ContactListenerProps, T as TrajectoryPlayerProps, U as ActuatorInfo, W as Sites, X as SitePositionResult, Y as Sensors, Z as SensorHandle, _ as SensorInfo, $ as Joints, a0 as ScalarJointStateResult, a1 as ArrayJointStateResult, a2 as JointStateOptions, a3 as JointStateResult, a4 as Bodies, a5 as BodyStateResult, a6 as Geoms, a7 as Actuators, a8 as CtrlHandle, a9 as ContactInfo, aa as KeyboardTeleopConfig, ab as KeyboardIkTargetConfig, ac as PolicyConfig, ad as PolicyAPI, ae as RemotePolicyConfig, af as RemotePolicyAPI, ag as ObservationHandle, ah as ObservationOutput, ai as TrajectoryInput, aj as TrajectoryStateChangeInput, ak as PlaybackState, al as TrajectoryFrame, am as FrameCaptureOptions, an as FrameCaptureResult, ao as FrameCaptureBlobResult, ap as FrameCaptureAPI, aq as CameraFrameCaptureAPI, ar as Cameras, as as CameraFrameSequenceCamera, at as CameraFrameCaptureSource, au as CameraFrameSequenceOptions, av as CameraFrameSequenceResult, aw as PolicyCameraFrameStream, ax as PolicyCameraFrameCaptureOptions, ay as PolicyCameraFrameCaptureResult, az as FrameCaptureStatus, aA as PolicyCameraFrameCaptureAPI, aB as CameraFrameCaptureTensorOptions, aC as CameraFrameTensorResult, aD as CameraFrameSequenceRecorderAPI, aE as ImagePointCoordinateSpace, aF as ImagePointProjectionOptions, aG as ImagePointProjectionResult, aH as PolicyVector } from './types-Dvtm4I0o.js';
|
|
3
|
+
export { aI as BodyInfo, aJ as CAMERA_FRAME_CAPTURE_PRE_RENDER_USER_DATA_KEY, aK as CAMERA_FRAME_CAPTURE_RENDER_USER_DATA_KEY, aL as CAPTURE_EXCLUDE_KEY, aM as CameraFrameCaptureBlobResult, aN as CameraFrameCaptureQuaternion, aO as CameraFrameCaptureResult, aP as CameraFrameCaptureSession, aQ as CameraFrameCaptureVector3, aR as CameraFramePixelsResult, aS as CameraFrameSequenceCameraSummary, aT as CameraFrameSequenceFrame, aU as CameraFrameSequenceSampleInput, aV as CameraFrameSequenceStepInput, aW as CameraInfo, aX as ControlJointInfo, aY as DebugVirtualCamera, aZ as FrameCaptureTarget, a_ as FrameCaptureTargetRef, a$ as IKSolveFn, b0 as IkGizmoDragInput, b1 as IkSolveInput, b2 as JointInfo, b3 as JointStateKind, b4 as KeyBinding, b5 as KeyboardIkTargetAction, b6 as KeyboardIkTargetBinding, b7 as Keyframes, b8 as ModelActuators, b9 as ModelBodies, ba as ModelCameras, bb as ModelGeoms, bc as ModelJoints, bd as ModelKeyframes, be as ModelOptions, bf as ModelResource, bg as ModelResources, bh as ModelSensors, bi as ModelSites, bj as Models, bk as MujocoContact, bl as MujocoContactArray, bm as MujocoFrameCaptureOptions, bn as ObservationLayoutItem, bo as PhysicsConfig, bp as PhysicsStepInput, bq as PolicyActionChunk, br as PolicyActionInput, bs as PolicyImageTensorLayout, bt as PolicyImageTensorOptions, bu as PolicyImageTensorPixelOptions, bv as PolicyImageTensorRange, bw as PolicyImageTensorResult, bx as PolicyImageTensorSourceOrigin, by as PolicyInferenceInput, bz as PolicyInferenceOutput, bA as PolicyInferenceResult, bB as PolicyObservationInput, bC as RayHit, bD as Register, bE as RegisteredModelMap, bF as RemotePolicyRequestInfo, bG as RemotePolicyRequestInput, bH as RemotePolicyResponseInfo, bI as RemotePolicyStatus, bJ as ResetCallbackInput, bK as ResolvedScenarioCameraConfig, bL as ResolvedScenarioMaterialConfig, bM as ResourceSelector, bN as ScenarioCameraConfig, bO as ScenarioMaterialConfig, bP as SceneMarker, bQ as SceneObject, bR as SensorResult, bS as SiteInfo, bT as SplatAssetConfig, bU as SplatScenarioConfig, bV as StateSnapshot, bW as TrajectoryData, bX as TrajectoryFrameCallbackInput, bY as VisualScenarioMaterialFilterInput, bZ as XmlPatch, b_ as captureCameraFrame, b$ as captureCameraFrameBlob, c0 as captureCameraFrameTensor, c1 as createCameraFrameCaptureSession, c2 as dataUrlToPolicyImageTensor, c3 as getContact, c4 as imageDataToPolicyImageTensor, c5 as pixelsToPolicyImageTensor, c6 as registerModelResources, c7 as renderCameraFrameToCanvas } from './types-Dvtm4I0o.js';
|
|
4
4
|
import * as React$1 from 'react';
|
|
5
5
|
import { CSSProperties, RefObject } from 'react';
|
|
6
6
|
import * as THREE from 'three';
|
|
@@ -795,6 +795,9 @@ declare function useControlWriter(options: ControlWriterOptions): ControlWriterH
|
|
|
795
795
|
* positional arrays, no `as const`, no owner bookkeeping.
|
|
796
796
|
*/
|
|
797
797
|
|
|
798
|
+
type StringKeyOf<T> = Extract<keyof T, string>;
|
|
799
|
+
type ControlDefinitionMap = Record<string, Actuators>;
|
|
800
|
+
type ControlValues<K extends string> = Partial<Record<K, number>>;
|
|
798
801
|
/**
|
|
799
802
|
* A typed description of a set of actuators, keyed by name. Create it once with
|
|
800
803
|
* {@link controlGroup} and reuse it across controllers and scripts; the key
|
|
@@ -810,6 +813,12 @@ interface ControlGroup<K extends Actuators = Actuators> {
|
|
|
810
813
|
* no `as const` required (the `const` type parameter captures them).
|
|
811
814
|
*/
|
|
812
815
|
declare function controlGroup<const T extends readonly Actuators[]>(names: T): ControlGroup<T[number]>;
|
|
816
|
+
interface DefinedControls<TControls extends ControlDefinitionMap = ControlDefinitionMap> {
|
|
817
|
+
readonly controls: TControls;
|
|
818
|
+
readonly aliases: readonly StringKeyOf<TControls>[];
|
|
819
|
+
readonly keys: readonly TControls[StringKeyOf<TControls>][];
|
|
820
|
+
}
|
|
821
|
+
declare function defineControls<const TControls extends ControlDefinitionMap>(controls: TControls): DefinedControls<TControls>;
|
|
813
822
|
interface ControlGroupSetOptions {
|
|
814
823
|
/** Write even when another control writer owns one of these actuators. */
|
|
815
824
|
force?: boolean;
|
|
@@ -817,8 +826,14 @@ interface ControlGroupSetOptions {
|
|
|
817
826
|
interface ControlGroupHandle<K extends string> {
|
|
818
827
|
/** The cooperative-ownership identity used for conflict detection. */
|
|
819
828
|
owner: string;
|
|
829
|
+
/** Set a single actuator by name. Returns false if blocked by a conflict. */
|
|
830
|
+
set(name: K, value: number, options?: ControlGroupSetOptions): boolean;
|
|
820
831
|
/** Set one or more actuators by name. Returns false if blocked by a conflict. */
|
|
821
|
-
|
|
832
|
+
patch(values: ControlValues<K>, options?: ControlGroupSetOptions): boolean;
|
|
833
|
+
/** Write values in the same order as the declared control group. */
|
|
834
|
+
write(values: ArrayLike<number>, options?: ControlGroupSetOptions): boolean;
|
|
835
|
+
/** Read one actuator value by name. */
|
|
836
|
+
get(name: K): number;
|
|
822
837
|
/** Read the current control value of every actuator in the group, by name. */
|
|
823
838
|
read(): Record<K, number>;
|
|
824
839
|
/** Whether this group can currently write (no unresolved conflicts). */
|
|
@@ -827,10 +842,31 @@ interface ControlGroupHandle<K extends string> {
|
|
|
827
842
|
release(): void;
|
|
828
843
|
}
|
|
829
844
|
type UseControlGroupOptions = Omit<ControlWriterOptions, 'owner' | 'selector'> & {
|
|
830
|
-
/**
|
|
845
|
+
/** Human-readable conflict label. */
|
|
846
|
+
label?: string;
|
|
847
|
+
/** Override the generated conflict owner id. Prefer `label` for normal use. */
|
|
831
848
|
owner?: string;
|
|
832
849
|
};
|
|
850
|
+
interface ControlsHandle<TControls extends ControlDefinitionMap> {
|
|
851
|
+
/** The cooperative-ownership identity used for conflict detection. */
|
|
852
|
+
owner: string;
|
|
853
|
+
/** Set one alias by name. Returns false if blocked by a conflict. */
|
|
854
|
+
set(name: StringKeyOf<TControls>, value: number, options?: ControlGroupSetOptions): boolean;
|
|
855
|
+
/** Set one or more aliases by name. Returns false if blocked by a conflict. */
|
|
856
|
+
patch(values: ControlValues<StringKeyOf<TControls>>, options?: ControlGroupSetOptions): boolean;
|
|
857
|
+
/** Write values in the same order as the `defineControls()` object. */
|
|
858
|
+
write(values: ArrayLike<number>, options?: ControlGroupSetOptions): boolean;
|
|
859
|
+
/** Read one alias value by name. */
|
|
860
|
+
get(name: StringKeyOf<TControls>): number;
|
|
861
|
+
/** Read every alias value. */
|
|
862
|
+
read(): Record<StringKeyOf<TControls>, number>;
|
|
863
|
+
/** Whether this group can currently write (no unresolved conflicts). */
|
|
864
|
+
canWrite(): boolean;
|
|
865
|
+
/** Release this group's actuator ownership. */
|
|
866
|
+
release(): void;
|
|
867
|
+
}
|
|
833
868
|
declare function useControlGroup<K extends Actuators>(group: ControlGroup<K>, options?: UseControlGroupOptions): ControlGroupHandle<K>;
|
|
869
|
+
declare function useControls<TControls extends ControlDefinitionMap>(definition: DefinedControls<TControls>, options?: UseControlGroupOptions): ControlsHandle<TControls>;
|
|
834
870
|
|
|
835
871
|
/**
|
|
836
872
|
* @license
|
|
@@ -1595,4 +1631,4 @@ interface CameraAnimationAPI {
|
|
|
1595
1631
|
*/
|
|
1596
1632
|
declare function useCameraAnimation(): CameraAnimationAPI;
|
|
1597
1633
|
|
|
1598
|
-
export { ActuatedJointInfo, ActuatorInfo, Actuators, type ApplyPolicyActionToControlsOptions, type ApplyPolicyActionToControlsResult, ArrayJointStateResult, Bodies, Body, BodyProps, BodyStateResult, type CameraAnimationAPI, CameraFrameCaptureAPI, CameraFrameCaptureOptions, CameraFrameCaptureSource, CameraFrameCaptureTensorOptions, type CameraFrameMountSelector, CameraFrameSequenceCamera, CameraFrameSequenceOptions, CameraFrameSequenceRecorderAPI, CameraFrameSequenceResult, CameraFrameTensorResult, type CameraStreamOptions, CameraView, type CameraViewProps, type CameraViewportOptions, Cameras, type ContactHistoryEntry, type ContactHistoryHandle, type ContactHistoryOptions, ContactInfo, ContactListener, ContactListenerProps, ContactMarkers, type ControlGroup, type ControlGroupHandle, ControlGroupInfo, ControlGroupSelector, type ControlGroupSetOptions, type ControlWriterConflict, type ControlWriterHandle, type ControlWriterOptions, type ControlWriterWriteOptions, type ControllerComponent, type ControllerOptions, type CreateMountedCameraFrameSequenceManifestOptions, type CreateMountedCameraFrameSequencePlanOptions, type CreatePolicyCameraFrameCapturePlanOptions, CtrlHandle, Debug, DebugProps, DragInteraction, DragInteractionProps, FlexRenderer, FrameCaptureAPI, FrameCaptureBlobResult, FrameCaptureOptions, FrameCaptureResult, FrameCaptureStatus, GenericIK, type GenericIKOptions, GeomInfo, Geoms, IkConfig, IkContextValue, IkGizmo, IkGizmoProps, ImagePointCoordinateSpace, ImagePointProjectionOptions, ImagePointProjectionResult, InstancedGeomRenderer, JointStateOptions, JointStateResult, Joints, KeyboardIkTargetConfig, KeyboardTeleopConfig, type MountedCameraFrameCaptureSource, type MountedCameraFrameSequenceCameraOptions, type MountedCameraFrameSequenceDefaults, type MountedCameraFrameSequenceManifest, MountedCameraFrameSequenceManifestStatus, type MountedCameraFrameSequencePlan, type MountedCameraFrameSequencePlanOptions, type MountedCameraFrameSequenceReadiness, MountedCameraFrameSequenceReadinessStatus, type MountedCameraFrameSequenceRecordOptions, type MountedCameraFrameSequenceRecordResult, type MountedCameraFrameSequenceRecorderTarget, type MountedCameraFrameSequenceSourceReadiness, type MountedCameraFrameSequenceStreamSummary, type MountedCameraFrameSourceSuggestion, MountedCameraFrameSourceSuggestionMatch, type MountedCameraSequencePlanOptions, type MountedCameraSequenceReadiness, type MountedCameraSequenceRecordOptions, type MountedCameraSequenceRecordResult, type MountedCameraSequenceRecorderAPI, type MountedPolicyCameraFrameCaptureAPI, type MountedPolicyCameraFrameCaptureOptions, type MountedPolicyCameraTensorOptions, MujocoCanvas, MujocoCanvasProps, MujocoContextValue, MujocoData, type MujocoLoader, type MujocoLoaderOptions, MujocoModel, MujocoModule, MujocoPhysics, type MujocoPhysicsProps, MujocoProvider, type MujocoProviderProps, MujocoSimAPI, MujocoSimProvider, type MujocoWasmVariant, type NamedCameraFrameResource, type NamedObservationField, type NamedObservationHandle, type NamedObservationInput, type NamedObservationLayoutItem, type NamedObservationMissing, type NamedObservationOptions, type NamedObservationResult, ObservationConfig, ObservationHandle, ObservationOutput, ObservationResult, PairedSplatEnvironmentConfig, PhysicsStepCallback, PlaybackState, PolicyAPI, PolicyCameraFrameCaptureAPI, PolicyCameraFrameCaptureOptions, type PolicyCameraFrameCapturePlan, PolicyCameraFrameCaptureResult, type PolicyCameraFrameCaptureTarget, type PolicyCameraFramePlanTarget, PolicyCameraFrameStream, type PolicyCameraFrameStreamOptions, type PolicyCameraTensorStream, type PolicyCameraTensorsAPI, type PolicyCameraTensorsOptions, type PolicyCameraTensorsResult, PolicyConfig, PolicyVector, type PoseReadout, type PoseResourceKind, ReadyCallbackInput, RemotePolicyAPI, RemotePolicyConfig, type ResolveMountedCameraFrameSourceOptions, type ResolvedMountedCameraFrameSource, ScalarJointStateResult, ScenarioLighting, ScenarioLightingPreset, ScenarioLightingProps, SceneConfig, SceneLights, SceneLightsProps, SelectionCallbackInput, SensorHandle, SensorInfo, Sensors, SitePositionResult, Sites, SplatCollisionPrimitive, SplatCollisionProxyConfig, type SplatCollisionProxyGeomPreview, type SplatCollisionProxyGeomsState, SplatCollisionProxyPreview, type SplatCollisionProxyPreviewProps, type SplatCollisionProxyPreviewStatus, type SplatCollisionProxyPreviewVector3, SplatEnvironment, SplatEnvironmentMetadata, SplatEnvironmentMetadataInput, SplatEnvironmentProps, SplatEnvironmentReadiness, SplatEnvironmentReadinessStatus, SplatFormat, SplatRendererKind, SplatSceneConfigInput, SplatSceneConfigState, SplatSceneInput, StepCallbackInput, TendonRenderer, TrajectoryFrame, TrajectoryInput, TrajectoryPlayer, TrajectoryPlayerProps, TrajectoryStateChangeInput, type UseControlGroupOptions, type UseSplatCollisionProxyGeomsOptions, VisualScenarioConfig, VisualScenarioEffects, VisualScenarioEffectsProps, VisualScenarioExecutionContext, VisualScenarioExecutionContextInput, applyPolicyActionToControls, bodyPositionField, buildObservation, canFetchSplatCollisionProxyXml, captureFrame, captureFrameBlob, capturePolicyCameraFrames, capturePolicyCameraFramesFromMountedStreams, clampPolicyActionValue, controlGroup, createContiguousControlGroup, createController, createControllerHook, createMountedCameraFrameSequenceManifest, createMountedCameraFrameSequencePlan, createMountedCameraFrameSequencePlanFromApi, createMountedCameraFrameSequenceReadiness, createMountedCameraFrameSourceSuggestions, createNamedObservationBuilder, createPairedSplatEnvironment, createPolicyCameraFrameCapturePlan, createPolicyCameraFrameCapturePlanFromApi, createSparkSplatViewerUrl, createSplatEnvironmentUserData, createSplatSceneConfig, createVisualScenarioExecutionContext, ctrlField, fetchSplatCollisionProxyXml, findActuatorByName, findBodyByName, findGeomByName, findJointByName, findKeyframeByName, findSensorByName, findSiteByName, findTendonByName, geomPositionField, getActuatedJoints, getCameraFrameCaptureSourceTarget, getControlMap, getMountedCameraFrameCaptureSource, getName, getScenarioBackground, getScenarioCameraPosition, getSplatEnvironmentReadiness, imagePointToNdc, isMountedCameraFrameCaptureSource, loadScene, parseSplatCollisionProxyGeoms, projectImagePointTo3D, qposField, qvelField, readNamedObservation, recordMountedCameraFrameSequence, resolveControlGroup, resolveMountedCameraFrameSource, sitePositionField, useActuators, useAfterPhysicsStep, useBeforePhysicsStep, useBodyMeshes, useBodyPose, useBodyState, useCameraAnimation, useCameraFrameCapture, useCameraSequenceRecorder, useCameraStream, useCameraViewport, useContactEvents, useContactHistory, useContacts, useControlGroup, useControlWriter, useCtrl, useCtrlNoise, useFrameCapture, useGamepad, useGeomPose, useGravityCompensation, useIkController, useJointState, useKeyboardIkTarget, useKeyboardTeleop, useMountedCameraSequenceRecorder, useMujoco, useMujocoWasm, useNamedObservation, useObservation, usePolicy, usePolicyCameraFrames, usePolicyCameraFramesFromMountedStreams, usePolicyCameraTensors, usePolicyCameraTensorsFromMountedStreams, useRemotePolicy, useSceneLights, useSelectionHighlight, useSensor, useSensors, useSitePose, useSitePosition, useSplatCollisionProxyGeoms, useSplatEnvironment, useSplatSceneConfig, useTrajectoryPlayer, useTrajectoryRecorder, useVideoRecorder, useVisualScenarioEffects, useVisualScenarioExecutionContext, withSplatEnvironment };
|
|
1634
|
+
export { ActuatedJointInfo, ActuatorInfo, Actuators, type ApplyPolicyActionToControlsOptions, type ApplyPolicyActionToControlsResult, ArrayJointStateResult, Bodies, Body, BodyProps, BodyStateResult, type CameraAnimationAPI, CameraFrameCaptureAPI, CameraFrameCaptureOptions, CameraFrameCaptureSource, CameraFrameCaptureTensorOptions, type CameraFrameMountSelector, CameraFrameSequenceCamera, CameraFrameSequenceOptions, CameraFrameSequenceRecorderAPI, CameraFrameSequenceResult, CameraFrameTensorResult, type CameraStreamOptions, CameraView, type CameraViewProps, type CameraViewportOptions, Cameras, type ContactHistoryEntry, type ContactHistoryHandle, type ContactHistoryOptions, ContactInfo, ContactListener, ContactListenerProps, ContactMarkers, type ControlGroup, type ControlGroupHandle, ControlGroupInfo, ControlGroupSelector, type ControlGroupSetOptions, type ControlWriterConflict, type ControlWriterHandle, type ControlWriterOptions, type ControlWriterWriteOptions, type ControllerComponent, type ControllerOptions, type ControlsHandle, type CreateMountedCameraFrameSequenceManifestOptions, type CreateMountedCameraFrameSequencePlanOptions, type CreatePolicyCameraFrameCapturePlanOptions, CtrlHandle, Debug, DebugProps, type DefinedControls, DragInteraction, DragInteractionProps, FlexRenderer, FrameCaptureAPI, FrameCaptureBlobResult, FrameCaptureOptions, FrameCaptureResult, FrameCaptureStatus, GenericIK, type GenericIKOptions, GeomInfo, Geoms, IkConfig, IkContextValue, IkGizmo, IkGizmoProps, ImagePointCoordinateSpace, ImagePointProjectionOptions, ImagePointProjectionResult, InstancedGeomRenderer, JointStateOptions, JointStateResult, Joints, KeyboardIkTargetConfig, KeyboardTeleopConfig, type MountedCameraFrameCaptureSource, type MountedCameraFrameSequenceCameraOptions, type MountedCameraFrameSequenceDefaults, type MountedCameraFrameSequenceManifest, MountedCameraFrameSequenceManifestStatus, type MountedCameraFrameSequencePlan, type MountedCameraFrameSequencePlanOptions, type MountedCameraFrameSequenceReadiness, MountedCameraFrameSequenceReadinessStatus, type MountedCameraFrameSequenceRecordOptions, type MountedCameraFrameSequenceRecordResult, type MountedCameraFrameSequenceRecorderTarget, type MountedCameraFrameSequenceSourceReadiness, type MountedCameraFrameSequenceStreamSummary, type MountedCameraFrameSourceSuggestion, MountedCameraFrameSourceSuggestionMatch, type MountedCameraSequencePlanOptions, type MountedCameraSequenceReadiness, type MountedCameraSequenceRecordOptions, type MountedCameraSequenceRecordResult, type MountedCameraSequenceRecorderAPI, type MountedPolicyCameraFrameCaptureAPI, type MountedPolicyCameraFrameCaptureOptions, type MountedPolicyCameraTensorOptions, MujocoCanvas, MujocoCanvasProps, MujocoContextValue, MujocoData, type MujocoLoader, type MujocoLoaderOptions, MujocoModel, MujocoModule, MujocoPhysics, type MujocoPhysicsProps, MujocoProvider, type MujocoProviderProps, MujocoSimAPI, MujocoSimProvider, type MujocoWasmVariant, type NamedCameraFrameResource, type NamedObservationField, type NamedObservationHandle, type NamedObservationInput, type NamedObservationLayoutItem, type NamedObservationMissing, type NamedObservationOptions, type NamedObservationResult, ObservationConfig, ObservationHandle, ObservationOutput, ObservationResult, PairedSplatEnvironmentConfig, PhysicsStepCallback, PlaybackState, PolicyAPI, PolicyCameraFrameCaptureAPI, PolicyCameraFrameCaptureOptions, type PolicyCameraFrameCapturePlan, PolicyCameraFrameCaptureResult, type PolicyCameraFrameCaptureTarget, type PolicyCameraFramePlanTarget, PolicyCameraFrameStream, type PolicyCameraFrameStreamOptions, type PolicyCameraTensorStream, type PolicyCameraTensorsAPI, type PolicyCameraTensorsOptions, type PolicyCameraTensorsResult, PolicyConfig, PolicyVector, type PoseReadout, type PoseResourceKind, ReadyCallbackInput, RemotePolicyAPI, RemotePolicyConfig, type ResolveMountedCameraFrameSourceOptions, type ResolvedMountedCameraFrameSource, ScalarJointStateResult, ScenarioLighting, ScenarioLightingPreset, ScenarioLightingProps, SceneConfig, SceneLights, SceneLightsProps, SelectionCallbackInput, SensorHandle, SensorInfo, Sensors, SitePositionResult, Sites, SplatCollisionPrimitive, SplatCollisionProxyConfig, type SplatCollisionProxyGeomPreview, type SplatCollisionProxyGeomsState, SplatCollisionProxyPreview, type SplatCollisionProxyPreviewProps, type SplatCollisionProxyPreviewStatus, type SplatCollisionProxyPreviewVector3, SplatEnvironment, SplatEnvironmentMetadata, SplatEnvironmentMetadataInput, SplatEnvironmentProps, SplatEnvironmentReadiness, SplatEnvironmentReadinessStatus, SplatFormat, SplatRendererKind, SplatSceneConfigInput, SplatSceneConfigState, SplatSceneInput, StepCallbackInput, TendonRenderer, TrajectoryFrame, TrajectoryInput, TrajectoryPlayer, TrajectoryPlayerProps, TrajectoryStateChangeInput, type UseControlGroupOptions, type UseSplatCollisionProxyGeomsOptions, VisualScenarioConfig, VisualScenarioEffects, VisualScenarioEffectsProps, VisualScenarioExecutionContext, VisualScenarioExecutionContextInput, applyPolicyActionToControls, bodyPositionField, buildObservation, canFetchSplatCollisionProxyXml, captureFrame, captureFrameBlob, capturePolicyCameraFrames, capturePolicyCameraFramesFromMountedStreams, clampPolicyActionValue, controlGroup, createContiguousControlGroup, createController, createControllerHook, createMountedCameraFrameSequenceManifest, createMountedCameraFrameSequencePlan, createMountedCameraFrameSequencePlanFromApi, createMountedCameraFrameSequenceReadiness, createMountedCameraFrameSourceSuggestions, createNamedObservationBuilder, createPairedSplatEnvironment, createPolicyCameraFrameCapturePlan, createPolicyCameraFrameCapturePlanFromApi, createSparkSplatViewerUrl, createSplatEnvironmentUserData, createSplatSceneConfig, createVisualScenarioExecutionContext, ctrlField, defineControls, fetchSplatCollisionProxyXml, findActuatorByName, findBodyByName, findGeomByName, findJointByName, findKeyframeByName, findSensorByName, findSiteByName, findTendonByName, geomPositionField, getActuatedJoints, getCameraFrameCaptureSourceTarget, getControlMap, getMountedCameraFrameCaptureSource, getName, getScenarioBackground, getScenarioCameraPosition, getSplatEnvironmentReadiness, imagePointToNdc, isMountedCameraFrameCaptureSource, loadScene, parseSplatCollisionProxyGeoms, projectImagePointTo3D, qposField, qvelField, readNamedObservation, recordMountedCameraFrameSequence, resolveControlGroup, resolveMountedCameraFrameSource, sitePositionField, useActuators, useAfterPhysicsStep, useBeforePhysicsStep, useBodyMeshes, useBodyPose, useBodyState, useCameraAnimation, useCameraFrameCapture, useCameraSequenceRecorder, useCameraStream, useCameraViewport, useContactEvents, useContactHistory, useContacts, useControlGroup, useControlWriter, useControls, useCtrl, useCtrlNoise, useFrameCapture, useGamepad, useGeomPose, useGravityCompensation, useIkController, useJointState, useKeyboardIkTarget, useKeyboardTeleop, useMountedCameraSequenceRecorder, useMujoco, useMujocoWasm, useNamedObservation, useObservation, usePolicy, usePolicyCameraFrames, usePolicyCameraFramesFromMountedStreams, usePolicyCameraTensors, usePolicyCameraTensorsFromMountedStreams, useRemotePolicy, useSceneLights, useSelectionHighlight, useSensor, useSensors, useSitePose, useSitePosition, useSplatCollisionProxyGeoms, useSplatEnvironment, useSplatSceneConfig, useTrajectoryPlayer, useTrajectoryRecorder, useVideoRecorder, useVisualScenarioEffects, useVisualScenarioExecutionContext, withSplatEnvironment };
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { withContacts, getContact, captureCameraFrame, captureCameraFrameBlob, createCameraFrameCaptureSession, CAMERA_FRAME_CAPTURE_PRE_RENDER_USER_DATA_KEY, CAPTURE_EXCLUDE_KEY, createCaptureCamera, prepareCaptureCamera } from './chunk-
|
|
2
|
-
export { CAMERA_FRAME_CAPTURE_PRE_RENDER_USER_DATA_KEY, CAMERA_FRAME_CAPTURE_RENDER_USER_DATA_KEY, CAPTURE_EXCLUDE_KEY, ModelActuators, ModelBodies, ModelCameras, ModelGeoms, ModelJoints, ModelKeyframes, ModelResources, ModelSensors, ModelSites, ScenarioLighting, SplatEnvironment, SplatEnvironmentReadinessStatus, VisualScenarioEffects, captureCameraFrame, captureCameraFrameBlob, captureCameraFrameTensor, createCameraFrameCaptureSession, createPairedSplatEnvironment, createSparkSplatViewerUrl, createSplatEnvironmentUserData, createSplatSceneConfig, createVisualScenarioExecutionContext, dataUrlToPolicyImageTensor, getContact, getScenarioBackground, getScenarioCameraPosition, getSplatEnvironmentReadiness, imageDataToPolicyImageTensor, pixelsToPolicyImageTensor, registerModelResources, renderCameraFrameToCanvas, useSplatEnvironment, useSplatSceneConfig, useVisualScenarioEffects, useVisualScenarioExecutionContext, withSplatEnvironment } from './chunk-
|
|
1
|
+
import { withContacts, getContact, captureCameraFrame, captureCameraFrameBlob, createCameraFrameCaptureSession, CAMERA_FRAME_CAPTURE_PRE_RENDER_USER_DATA_KEY, CAPTURE_EXCLUDE_KEY, createCaptureCamera, prepareCaptureCamera } from './chunk-EN55TTGH.js';
|
|
2
|
+
export { CAMERA_FRAME_CAPTURE_PRE_RENDER_USER_DATA_KEY, CAMERA_FRAME_CAPTURE_RENDER_USER_DATA_KEY, CAPTURE_EXCLUDE_KEY, ModelActuators, ModelBodies, ModelCameras, ModelGeoms, ModelJoints, ModelKeyframes, ModelResources, ModelSensors, ModelSites, ScenarioLighting, SplatEnvironment, SplatEnvironmentReadinessStatus, VisualScenarioEffects, captureCameraFrame, captureCameraFrameBlob, captureCameraFrameTensor, createCameraFrameCaptureSession, createPairedSplatEnvironment, createSparkSplatViewerUrl, createSplatEnvironmentUserData, createSplatSceneConfig, createVisualScenarioExecutionContext, dataUrlToPolicyImageTensor, getContact, getScenarioBackground, getScenarioCameraPosition, getSplatEnvironmentReadiness, imageDataToPolicyImageTensor, pixelsToPolicyImageTensor, registerModelResources, renderCameraFrameToCanvas, useSplatEnvironment, useSplatSceneConfig, useVisualScenarioEffects, useVisualScenarioExecutionContext, withSplatEnvironment } from './chunk-EN55TTGH.js';
|
|
3
3
|
import loadMujoco from '@mujoco/mujoco';
|
|
4
4
|
import defaultMujocoWasmUrl from '@mujoco/mujoco/mujoco.wasm?url';
|
|
5
5
|
import { createContext, forwardRef, useRef, useEffect, useContext, useState, useCallback, useMemo, useLayoutEffect, useId } from 'react';
|
|
@@ -3791,12 +3791,6 @@ function resolveOptions(opts) {
|
|
|
3791
3791
|
jointLimits: opts?.jointLimits
|
|
3792
3792
|
};
|
|
3793
3793
|
}
|
|
3794
|
-
function clampJoint(value, limit) {
|
|
3795
|
-
if (!limit) return value;
|
|
3796
|
-
const [min, max] = limit;
|
|
3797
|
-
if (!Number.isFinite(min) || !Number.isFinite(max) || min >= max) return value;
|
|
3798
|
-
return Math.max(min, Math.min(max, value));
|
|
3799
|
-
}
|
|
3800
3794
|
var GenericIK = class {
|
|
3801
3795
|
mujoco;
|
|
3802
3796
|
constructor(mujoco) {
|
|
@@ -3821,7 +3815,7 @@ var GenericIK = class {
|
|
|
3821
3815
|
savedQpos.set(data.qpos);
|
|
3822
3816
|
const R_target = quatToMat3(targetQuat);
|
|
3823
3817
|
const q = new Float64Array(n);
|
|
3824
|
-
for (let i = 0; i < n; i++) q[i] =
|
|
3818
|
+
for (let i = 0; i < n; i++) q[i] = currentQ[i];
|
|
3825
3819
|
const J = new Float64Array(6 * n);
|
|
3826
3820
|
const JJt = new Float64Array(36);
|
|
3827
3821
|
const rhs = new Float64Array(6);
|
|
@@ -3833,6 +3827,8 @@ var GenericIK = class {
|
|
|
3833
3827
|
const pertSiteMat = new Float64Array(9);
|
|
3834
3828
|
let bestQ = null;
|
|
3835
3829
|
let bestErr = Infinity;
|
|
3830
|
+
const patience = 4;
|
|
3831
|
+
let noImprove = 0;
|
|
3836
3832
|
if (n === 0) return null;
|
|
3837
3833
|
for (let iter = 0; iter < o.maxIterations; iter++) {
|
|
3838
3834
|
for (let i = 0; i < n; i++) data.qpos[qposAdr[i]] = q[i];
|
|
@@ -3858,11 +3854,15 @@ var GenericIK = class {
|
|
|
3858
3854
|
const errNorm = Math.sqrt(
|
|
3859
3855
|
error[0] * error[0] + error[1] * error[1] + error[2] * error[2] + error[3] * error[3] + error[4] * error[4] + error[5] * error[5]
|
|
3860
3856
|
);
|
|
3861
|
-
if (errNorm < bestErr) {
|
|
3857
|
+
if (errNorm < bestErr - 1e-9) {
|
|
3862
3858
|
bestErr = errNorm;
|
|
3863
3859
|
bestQ = Array.from(q);
|
|
3860
|
+
noImprove = 0;
|
|
3861
|
+
} else {
|
|
3862
|
+
noImprove++;
|
|
3864
3863
|
}
|
|
3865
3864
|
if (errNorm < o.tolerance) break;
|
|
3865
|
+
if (noImprove >= patience) break;
|
|
3866
3866
|
for (let j = 0; j < n; j++) {
|
|
3867
3867
|
const adr = qposAdr[j];
|
|
3868
3868
|
const saved = data.qpos[adr];
|
|
@@ -3898,7 +3898,7 @@ var GenericIK = class {
|
|
|
3898
3898
|
}
|
|
3899
3899
|
dq[j] = sum;
|
|
3900
3900
|
}
|
|
3901
|
-
for (let i = 0; i < n; i++) q[i]
|
|
3901
|
+
for (let i = 0; i < n; i++) q[i] += dq[i];
|
|
3902
3902
|
}
|
|
3903
3903
|
data.qpos.set(savedQpos);
|
|
3904
3904
|
this.mujoco.mj_forward(model, data);
|
|
@@ -4018,6 +4018,12 @@ function solve6x6(A, b, x) {
|
|
|
4018
4018
|
|
|
4019
4019
|
// src/hooks/useIkController.ts
|
|
4020
4020
|
var _syncMat4 = new THREE11.Matrix4();
|
|
4021
|
+
function toIkVector3(value) {
|
|
4022
|
+
return "x" in value ? new THREE11.Vector3(value.x, value.y, value.z) : new THREE11.Vector3(value[0], value[1], value[2]);
|
|
4023
|
+
}
|
|
4024
|
+
function toIkQuaternion(value) {
|
|
4025
|
+
return "x" in value ? new THREE11.Quaternion(value.x, value.y, value.z, value.w) : new THREE11.Quaternion(value[0], value[1], value[2], value[3]);
|
|
4026
|
+
}
|
|
4021
4027
|
function syncGizmoToSite(data, siteId, target) {
|
|
4022
4028
|
if (siteId === -1) return;
|
|
4023
4029
|
const sitePos = data.site_xpos.subarray(siteId * 3, siteId * 3 + 3);
|
|
@@ -4090,7 +4096,15 @@ var useIkController = createControllerHook(
|
|
|
4090
4096
|
const ikSolveFn = useCallback(
|
|
4091
4097
|
({ position, quaternion, currentQ, context }) => {
|
|
4092
4098
|
if (!config) return null;
|
|
4093
|
-
|
|
4099
|
+
const targetPosition = toIkVector3(position);
|
|
4100
|
+
const targetQuaternion = toIkQuaternion(quaternion);
|
|
4101
|
+
const normalizedInput = {
|
|
4102
|
+
position: targetPosition,
|
|
4103
|
+
quaternion: targetQuaternion,
|
|
4104
|
+
currentQ,
|
|
4105
|
+
context
|
|
4106
|
+
};
|
|
4107
|
+
if (config.ikSolveFn) return config.ikSolveFn(normalizedInput);
|
|
4094
4108
|
const model = mjModelRef.current;
|
|
4095
4109
|
const data = mjDataRef.current;
|
|
4096
4110
|
const controlGroup2 = controlGroupRef.current;
|
|
@@ -4100,8 +4114,8 @@ var useIkController = createControllerHook(
|
|
|
4100
4114
|
data,
|
|
4101
4115
|
siteIdRef.current,
|
|
4102
4116
|
controlGroup2.qposAdr,
|
|
4103
|
-
|
|
4104
|
-
|
|
4117
|
+
targetPosition,
|
|
4118
|
+
targetQuaternion,
|
|
4105
4119
|
currentQ,
|
|
4106
4120
|
{
|
|
4107
4121
|
damping: config.damping,
|
|
@@ -4212,7 +4226,7 @@ var useIkController = createControllerHook(
|
|
|
4212
4226
|
if (!ikEnabledRef.current) setIkEnabled(true);
|
|
4213
4227
|
const target = ikTargetRef.current;
|
|
4214
4228
|
if (!target) return;
|
|
4215
|
-
const targetPos = pos
|
|
4229
|
+
const targetPos = toIkVector3(pos);
|
|
4216
4230
|
const targetRot = new THREE11.Quaternion().setFromEuler(
|
|
4217
4231
|
new THREE11.Euler(Math.PI, 0, 0)
|
|
4218
4232
|
);
|
|
@@ -6745,19 +6759,35 @@ function useControlWriter(options) {
|
|
|
6745
6759
|
}
|
|
6746
6760
|
|
|
6747
6761
|
// src/hooks/useControlGroup.ts
|
|
6762
|
+
function objectKeys(value) {
|
|
6763
|
+
return Object.keys(value);
|
|
6764
|
+
}
|
|
6765
|
+
function singleControlValue(name, value) {
|
|
6766
|
+
const values = {};
|
|
6767
|
+
values[name] = value;
|
|
6768
|
+
return values;
|
|
6769
|
+
}
|
|
6748
6770
|
function controlGroup(names) {
|
|
6749
6771
|
return { keys: names };
|
|
6750
6772
|
}
|
|
6773
|
+
function defineControls(controls) {
|
|
6774
|
+
const aliases = objectKeys(controls);
|
|
6775
|
+
return {
|
|
6776
|
+
controls,
|
|
6777
|
+
aliases,
|
|
6778
|
+
keys: aliases.map((alias) => controls[alias])
|
|
6779
|
+
};
|
|
6780
|
+
}
|
|
6751
6781
|
function useControlGroup(group, options = {}) {
|
|
6752
6782
|
const generatedOwner = useId();
|
|
6753
|
-
const owner = options.owner ?? `control-group:${generatedOwner}`;
|
|
6783
|
+
const owner = options.owner ?? options.label ?? `control-group:${generatedOwner}`;
|
|
6754
6784
|
const { mjModelRef, mjDataRef, status } = useMujocoContext();
|
|
6755
6785
|
const names = group.keys;
|
|
6756
6786
|
const namesRef = useRef(names);
|
|
6757
6787
|
namesRef.current = names;
|
|
6758
6788
|
const namesKey = names.join("\0");
|
|
6759
6789
|
const selector = useMemo(
|
|
6760
|
-
() => ({ actuators:
|
|
6790
|
+
() => ({ actuators: names }),
|
|
6761
6791
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
6762
6792
|
[namesKey]
|
|
6763
6793
|
);
|
|
@@ -6777,15 +6807,15 @@ function useControlGroup(group, options = {}) {
|
|
|
6777
6807
|
return id;
|
|
6778
6808
|
});
|
|
6779
6809
|
}, [mjModelRef, status, namesKey]);
|
|
6780
|
-
const
|
|
6810
|
+
const patch = useCallback(
|
|
6781
6811
|
(values, setOptions = {}) => {
|
|
6782
6812
|
const data = mjDataRef.current;
|
|
6783
6813
|
if (!data) return false;
|
|
6784
6814
|
if (!setOptions.force && !canWrite()) return false;
|
|
6785
6815
|
const groupNames = namesRef.current;
|
|
6786
6816
|
const indices = indicesRef.current;
|
|
6787
|
-
for (
|
|
6788
|
-
const value = values[
|
|
6817
|
+
for (const [i, name] of groupNames.entries()) {
|
|
6818
|
+
const value = values[name];
|
|
6789
6819
|
if (value === void 0) continue;
|
|
6790
6820
|
const adr = indices[i];
|
|
6791
6821
|
if (adr >= 0) data.ctrl[adr] = value;
|
|
@@ -6794,20 +6824,87 @@ function useControlGroup(group, options = {}) {
|
|
|
6794
6824
|
},
|
|
6795
6825
|
[canWrite, mjDataRef]
|
|
6796
6826
|
);
|
|
6827
|
+
const write = useCallback(
|
|
6828
|
+
(values, setOptions = {}) => {
|
|
6829
|
+
const data = mjDataRef.current;
|
|
6830
|
+
if (!data) return false;
|
|
6831
|
+
if (!setOptions.force && !canWrite()) return false;
|
|
6832
|
+
const groupNames = namesRef.current;
|
|
6833
|
+
const indices = indicesRef.current;
|
|
6834
|
+
for (let i = 0; i < Math.min(groupNames.length, values.length); i += 1) {
|
|
6835
|
+
const adr = indices[i];
|
|
6836
|
+
if (adr >= 0) data.ctrl[adr] = values[i];
|
|
6837
|
+
}
|
|
6838
|
+
return true;
|
|
6839
|
+
},
|
|
6840
|
+
[canWrite, mjDataRef]
|
|
6841
|
+
);
|
|
6842
|
+
const set = useCallback(
|
|
6843
|
+
(name, value, setOptions) => patch(singleControlValue(name, value), setOptions),
|
|
6844
|
+
[patch]
|
|
6845
|
+
);
|
|
6797
6846
|
const read = useCallback(() => {
|
|
6798
6847
|
const data = mjDataRef.current;
|
|
6799
6848
|
const groupNames = namesRef.current;
|
|
6800
6849
|
const indices = indicesRef.current;
|
|
6801
6850
|
const result = {};
|
|
6802
|
-
for (
|
|
6851
|
+
for (const [i, name] of groupNames.entries()) {
|
|
6803
6852
|
const adr = indices[i];
|
|
6804
|
-
result[
|
|
6853
|
+
result[name] = data && adr >= 0 ? data.ctrl[adr] ?? 0 : 0;
|
|
6805
6854
|
}
|
|
6806
6855
|
return result;
|
|
6807
6856
|
}, [mjDataRef]);
|
|
6857
|
+
const get = useCallback((name) => read()[name], [read]);
|
|
6858
|
+
return useMemo(
|
|
6859
|
+
() => ({ owner, set, patch, write, get, read, canWrite, release }),
|
|
6860
|
+
[owner, set, patch, write, get, read, canWrite, release]
|
|
6861
|
+
);
|
|
6862
|
+
}
|
|
6863
|
+
function useControls(definition, options = {}) {
|
|
6864
|
+
const group = useControlGroup(controlGroup(definition.keys), options);
|
|
6865
|
+
const controlsRef = useRef(definition.controls);
|
|
6866
|
+
const aliasesRef = useRef(definition.aliases);
|
|
6867
|
+
controlsRef.current = definition.controls;
|
|
6868
|
+
aliasesRef.current = definition.aliases;
|
|
6869
|
+
const set = useCallback(
|
|
6870
|
+
(name, value, setOptions) => group.set(controlsRef.current[name], value, setOptions),
|
|
6871
|
+
[group]
|
|
6872
|
+
);
|
|
6873
|
+
const patch = useCallback(
|
|
6874
|
+
(values, setOptions) => {
|
|
6875
|
+
const next = {};
|
|
6876
|
+
for (const alias of aliasesRef.current) {
|
|
6877
|
+
const value = values[alias];
|
|
6878
|
+
if (value !== void 0) next[controlsRef.current[alias]] = value;
|
|
6879
|
+
}
|
|
6880
|
+
return group.patch(next, setOptions);
|
|
6881
|
+
},
|
|
6882
|
+
[group]
|
|
6883
|
+
);
|
|
6884
|
+
const get = useCallback(
|
|
6885
|
+
(name) => group.get(controlsRef.current[name]),
|
|
6886
|
+
[group]
|
|
6887
|
+
);
|
|
6888
|
+
const read = useCallback(() => {
|
|
6889
|
+
const values = group.read();
|
|
6890
|
+
const result = {};
|
|
6891
|
+
for (const alias of aliasesRef.current) {
|
|
6892
|
+
result[alias] = values[controlsRef.current[alias]] ?? 0;
|
|
6893
|
+
}
|
|
6894
|
+
return result;
|
|
6895
|
+
}, [group]);
|
|
6808
6896
|
return useMemo(
|
|
6809
|
-
() => ({
|
|
6810
|
-
|
|
6897
|
+
() => ({
|
|
6898
|
+
owner: group.owner,
|
|
6899
|
+
set,
|
|
6900
|
+
patch,
|
|
6901
|
+
write: group.write,
|
|
6902
|
+
get,
|
|
6903
|
+
read,
|
|
6904
|
+
canWrite: group.canWrite,
|
|
6905
|
+
release: group.release
|
|
6906
|
+
}),
|
|
6907
|
+
[group, set, patch, get, read]
|
|
6811
6908
|
);
|
|
6812
6909
|
}
|
|
6813
6910
|
var geomNameCacheByModel2 = /* @__PURE__ */ new WeakMap();
|
|
@@ -8832,6 +8929,6 @@ function useCameraAnimation() {
|
|
|
8832
8929
|
* useCameraAnimation — composable camera animation hook.
|
|
8833
8930
|
*/
|
|
8834
8931
|
|
|
8835
|
-
export { Body, CameraView, ContactListener, ContactMarkers, Debug, DragInteraction, FlexRenderer, GenericIK, IkGizmo, InstancedGeomRenderer, MountedCameraFrameSequenceManifestStatus, MountedCameraFrameSequenceReadinessStatus, MountedCameraFrameSourceSuggestionMatch, MujocoCanvas, MujocoPhysics, MujocoProvider, MujocoSimProvider, SceneLights, SplatCollisionProxyPreview, TendonRenderer, TrajectoryPlayer, applyPolicyActionToControls, bodyPositionField, buildObservation, canFetchSplatCollisionProxyXml, captureFrame, captureFrameBlob, capturePolicyCameraFrames, capturePolicyCameraFramesFromMountedStreams, clampPolicyActionValue, controlGroup, createContiguousControlGroup, createController, createControllerHook, createMountedCameraFrameSequenceManifest, createMountedCameraFrameSequencePlan, createMountedCameraFrameSequencePlanFromApi, createMountedCameraFrameSequenceReadiness, createMountedCameraFrameSourceSuggestions, createNamedObservationBuilder, createPolicyCameraFrameCapturePlan, createPolicyCameraFrameCapturePlanFromApi, ctrlField, fetchSplatCollisionProxyXml, findActuatorByName, findBodyByName, findGeomByName, findJointByName, findKeyframeByName, findSensorByName, findSiteByName, findTendonByName, geomPositionField, getActuatedJoints, getCameraFrameCaptureSourceTarget, getControlMap, getMountedCameraFrameCaptureSource, getName, imagePointToNdc, isMountedCameraFrameCaptureSource, loadScene, parseSplatCollisionProxyGeoms, projectImagePointTo3D, qposField, qvelField, readNamedObservation, recordMountedCameraFrameSequence, resolveControlGroup, resolveMountedCameraFrameSource, sitePositionField, useActuators, useAfterPhysicsStep, useBeforePhysicsStep, useBodyMeshes, useBodyPose, useBodyState, useCameraAnimation, useCameraFrameCapture, useCameraSequenceRecorder, useCameraStream, useCameraViewport, useContactEvents, useContactHistory, useContacts, useControlGroup, useControlWriter, useCtrl, useCtrlNoise, useFrameCapture, useGamepad, useGeomPose, useGravityCompensation, useIkController, useJointState, useKeyboardIkTarget, useKeyboardTeleop, useMountedCameraSequenceRecorder, useMujoco, useMujocoWasm, useNamedObservation, useObservation, usePolicy, usePolicyCameraFrames, usePolicyCameraFramesFromMountedStreams, usePolicyCameraTensors, usePolicyCameraTensorsFromMountedStreams, useRemotePolicy, useSceneLights, useSelectionHighlight, useSensor, useSensors, useSitePose, useSitePosition, useSplatCollisionProxyGeoms, useTrajectoryPlayer, useTrajectoryRecorder, useVideoRecorder };
|
|
8932
|
+
export { Body, CameraView, ContactListener, ContactMarkers, Debug, DragInteraction, FlexRenderer, GenericIK, IkGizmo, InstancedGeomRenderer, MountedCameraFrameSequenceManifestStatus, MountedCameraFrameSequenceReadinessStatus, MountedCameraFrameSourceSuggestionMatch, MujocoCanvas, MujocoPhysics, MujocoProvider, MujocoSimProvider, SceneLights, SplatCollisionProxyPreview, TendonRenderer, TrajectoryPlayer, applyPolicyActionToControls, bodyPositionField, buildObservation, canFetchSplatCollisionProxyXml, captureFrame, captureFrameBlob, capturePolicyCameraFrames, capturePolicyCameraFramesFromMountedStreams, clampPolicyActionValue, controlGroup, createContiguousControlGroup, createController, createControllerHook, createMountedCameraFrameSequenceManifest, createMountedCameraFrameSequencePlan, createMountedCameraFrameSequencePlanFromApi, createMountedCameraFrameSequenceReadiness, createMountedCameraFrameSourceSuggestions, createNamedObservationBuilder, createPolicyCameraFrameCapturePlan, createPolicyCameraFrameCapturePlanFromApi, ctrlField, defineControls, fetchSplatCollisionProxyXml, findActuatorByName, findBodyByName, findGeomByName, findJointByName, findKeyframeByName, findSensorByName, findSiteByName, findTendonByName, geomPositionField, getActuatedJoints, getCameraFrameCaptureSourceTarget, getControlMap, getMountedCameraFrameCaptureSource, getName, imagePointToNdc, isMountedCameraFrameCaptureSource, loadScene, parseSplatCollisionProxyGeoms, projectImagePointTo3D, qposField, qvelField, readNamedObservation, recordMountedCameraFrameSequence, resolveControlGroup, resolveMountedCameraFrameSource, sitePositionField, useActuators, useAfterPhysicsStep, useBeforePhysicsStep, useBodyMeshes, useBodyPose, useBodyState, useCameraAnimation, useCameraFrameCapture, useCameraSequenceRecorder, useCameraStream, useCameraViewport, useContactEvents, useContactHistory, useContacts, useControlGroup, useControlWriter, useControls, useCtrl, useCtrlNoise, useFrameCapture, useGamepad, useGeomPose, useGravityCompensation, useIkController, useJointState, useKeyboardIkTarget, useKeyboardTeleop, useMountedCameraSequenceRecorder, useMujoco, useMujocoWasm, useNamedObservation, useObservation, usePolicy, usePolicyCameraFrames, usePolicyCameraFramesFromMountedStreams, usePolicyCameraTensors, usePolicyCameraTensorsFromMountedStreams, useRemotePolicy, useSceneLights, useSelectionHighlight, useSensor, useSensors, useSitePose, useSitePosition, useSplatCollisionProxyGeoms, useTrajectoryPlayer, useTrajectoryRecorder, useVideoRecorder };
|
|
8836
8933
|
//# sourceMappingURL=index.js.map
|
|
8837
8934
|
//# sourceMappingURL=index.js.map
|