https://github.com/pmndrs/cannon-es-debugger
Wireframe debugger for use with cannon-es https://github.com/react-spring/cannon-es
https://github.com/pmndrs/cannon-es-debugger
cannonjs physics threejs
Last synced: 4 months ago
JSON representation
Wireframe debugger for use with cannon-es https://github.com/react-spring/cannon-es
- Host: GitHub
- URL: https://github.com/pmndrs/cannon-es-debugger
- Owner: pmndrs
- License: mit
- Created: 2020-06-10T07:46:44.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-05T18:26:24.000Z (over 2 years ago)
- Last Synced: 2024-10-29T15:32:10.223Z (8 months ago)
- Topics: cannonjs, physics, threejs
- Language: HTML
- Homepage: https://pmndrs.github.io/cannon-es-debugger/
- Size: 359 KB
- Stars: 107
- Watchers: 11
- Forks: 17
- Open Issues: 7
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# cannon-es-debugger
[](https://pmndrs.github.io/cannon-es-debugger/)
This is a debugger for use with [cannon-es](https://github.com/pmndrs/cannon-es). It was adapted from the [original cannon.js debugger](https://github.com/schteppe/cannon.js/blob/master/tools/threejs/CannonDebugRenderer.js) written by Stefan Hedman [@schteppe](https://github.com/schteppe).
**Note:** This debugger is included in [use-cannon](https://github.com/pmndrs/use-cannon#debug) directly.
### Example
https://pmndrs.github.io/cannon-es-debugger/
### Installation
```
yarn add cannon-es-debugger
```Make sure you also have `three` and `cannon-es` as dependencies.
```
yarn add three cannon-es
```### Usage
Give `cannon-es-debugger` references to your three.js scene object and cannon-es world:
```js
import { Scene } from 'three'
import { World } from 'cannon-es'
import CannonDebugger from 'cannon-es-debugger'const scene = new Scene()
const world = new World()
const cannonDebugger = new CannonDebugger(scene, world, {
// options...
})// ...
function animate() {
requestAnimationFrame(animate)world.step(timeStep) // Update cannon-es physics
cannonDebugger.update() // Update the CannonDebugger meshes
renderer.render(scene, camera) // Render the three.js scene
}
animate()
```New meshes with wireframe material will be generated from your physics body shapes and added into the scene. The position of the meshes will be synched with the Cannon physics body simulation on every animation frame.
### API
```ts
import type { Scene, Color } from 'three'
import type { Body } from 'cannon-es'type DebugOptions = {
color?: string | number | Color
scale?: number
onInit?: (body: Body, mesh: Mesh, shape: Shape) => void
onUpdate?: (body: Body, mesh: Mesh, shape: Shape) => void
}export default class CannonDebugger {
constructor(scene: Scene, world: World, options: DebugOptions): voidupdate(): void
}
```The available properties of the `options` object are:
- **`color`** - a [Three Color](https://threejs.org/docs/#api/en/math/Color) argument that sets the wireframe color, defaults to `0x00ff00`
- **`scale`** - scale factor for all the wireframe meshes, defaults to 1
- **`onInit`** - callback function that runs once, right after a new wireframe mesh is added
- **`onUpdate`** - callback function that runs on every subsequent animation frame
The `update()` method needs to be called in a `requestAnimationFrame` loop to keep updating the wireframe meshes after the bodies have been updated.