@threlte/rapier

<World>

This component provides the basic physics context and loads rapier.

All components that rely on physics (e.g. <RigidBody> or <Collider>) must be a child of <World>.

Structure

A typical structure of a physics-enabled wrapper component might look like this:

Wrapper.svelte
<script lang="ts">
  import { Canvas } from '@threlte/core'
  import { World } from '@threlte/rapier'
  import Scene from './Scene.svelte'
</script>

<Canvas>
  <World>
    <Scene />
    <!-- Everything is happening inside this component -->
  </World>
</Canvas>

This structure ensures that all components inside the component <Scene> have access to the physics context.

Fallback

rapier is a Rust-based physics engine and as such bundled and used as a WASM module. If loading of rapier fails for any reason, a slot with the name fallback is mounted to e.g. display a fallback scene without physics.

Wrapper.svelte
<script lang="ts">
  import { Canvas } from '@threlte/core'
  import { World } from '@threlte/rapier'
  import Scene from './Scene.svelte'
  import FallbackScene from './FallbackScene.svelte'
</script>

<Canvas>
  <World>
    <Scene />
    {#snippet fallback()}
      <FallbackScene />
    {/snippet}
  </World>
</Canvas>

Component Signature

Props

name
type
required
default

gravity
Position
no
{ y: -9.81 }

rawBodies
RawRigidBodySet
no

rawBroadPhase
RawBroadPhase
no

rawCCDSolver
RawCCDSolver
no

rawColliders
RawColliderSet
no

rawDebugRenderPipeline
RawDebugRenderPipeline
no

rawImpulseJoints
RawImpulseJointSet
no

rawIntegrationParameters
RawIntegrationParameters
no

rawIslands
RawIslandManager
no

rawMultibodyJoints
RawMultibodyJointSet
no

rawNarrowPhase
RawNarrowPhase
no

rawPhysicsPipeline
RawPhysicsPipeline
no

rawQueryPipeline
RawQueryPipeline
no

rawSerializationPipeline
RawSerializationPipeline
no