newtonxr is a library designed to seamlessly integrate physics-based hands
into XR/VR experiences. At the heart of newtonxr is the TrueHand component,
which utilizes @dimforge/rapier3d-compat to provide a realistic and
interactive hand physics model.
@coconut-xr/natuerlich is used to properly integrate newtonxr with WebXR
@react-three/rapier is used to create the physics objects and world.
newtonxr is developed using pnpm, but it is packaged in a way that allows it
to be easily installed and used in projects that utilize npm or yarn.
To install newtonxr, you can use npm, yarn, or pnpm:
npm install @vixuslabs/newtonxr
# or
yarn add @vixuslabs/newtonxr
# or
pnpm add @vixuslabs/newtonxrTo use newtonxr in your project, you can import the components and utilities
as needed. Here's an example of how to use the TrueHand component, the
centerpiece of the library:
import { Suspense } from "react";
import { getInputSourceId } from "@coconut-xr/natuerlich";
import { XRCanvas } from "@coconut-xr/natuerlich/defaults";
import {
FocusStateGuard,
ImmersiveSessionOrigin,
useEnterXR,
useHeighestAvailableFrameRate,
useInputSources,
} from "@coconut-xr/natuerlich/react";
import { TrueHand } from "@vixuslabs/newtonxr";
const sessionOptions: XRSessionInit = {
requiredFeatures: ["local-floor", "hand-tracking"],
optionalFeatures: ["mesh-detection", "plane-detection"],
};
function MyXRScene() {
const inputSources = useInputSources();
return (
/* Essentially the @react-three/fiber canvas with XR configurated */
<XRCanvas>
<XRPhysics>
<TrueHand
key={getInputSourceId(inputSource)}
id={getInputSourceId(inputSource)}
XRHand={inputSource.hand}
inputSource={inputSource}
/* Properties for TrueHand */
/>
{/* Other XR scene and @react-three/rapier components */}
</XRPhysics>
</XRCanvas>
);
}The newtonxr library provides several components and utilities for building
immersive XR experiences, with a focus on physics-integrated hands:
TrueHand: The core component of the library, representing a hand with physics interactions.XRPhysics: Sets up the physics environment for your XR scene.PhysicalObject: Represents a physical object in the XR scene. More of a helper component to get started.
Contributions are welcome! As of now, there are not contribution guidelines - this will be updated in the future.
newtonxr is licensed under the MIT License.