MCPcopy Index your code
hub / github.com/fabmax/physx-js-webidl

github.com/fabmax/physx-js-webidl @v2.7.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.7.3 ↗ · + Follow
4 symbols 14 edges 1 files 1 documented · 25%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

physx-js-webidl

Javascript/WASM bindings for Nvidia PhysX 5.6.1.

Looking for pre-built binaries / build instructions? See below

Library coverage

The bindings include most major parts of the PhysX SDK (excluding CUDA stuff, which is not possible with WASM): - [x] Basics - Static and dynamic actors - All geometry types (box, capsule, sphere, plane, convex mesh, triangle mesh and height field) - [x] All joint types (revolute, spherical, prismatic, fixed, distance and D6) - [x] Articulations - [x] Vehicles - [x] Character controllers - [x] Scene serialization

Getting started

There is a basic hello world example: 10 boxes falling on the ground (drawn as wireframe on a plain canvas).

Documentation

The API is very close to the original PhysX C++ API, so you can simply use the official PhysX API documentation

However, in order to make the bindings work with emscripten a few additional wrappers are needed here and there. So it might make sense to also take a look into the PhysXWasm.idl interface definiton file.

Update as of v2.2.0: Thanks to Shannon Poole, PhysX enums can now be accessed by their qualified names (e.g. PhysX.PxIDENTITYEnum.PxIdentity, see also the hello world demo mentioned above).

Demos

I use this library in my engine kool and have a few demos in place: - Vehicle: Basic vehicle demo with a few obstacles. - Character: 3rd person character demo on an island. - Ragdolls: A simple ragdoll demo. - Joints: A chain running over two gears. - Collision: The obligatory box (and other shapes) collision physics demo.

However, the demos are written in kotlin, not javascript.

Pre-built binaries

This library is published as a npm package:

npm i physx-js-webidl

Alternatively you can grab the pre-built binaries (.wasm + support .mjs) from the latest Release.

Building

In order to build the library you need a recent version of the emscripten SDK - I'm using version 4.0.19. Alternatively, you can use docker as described below. After successful build, the binaries (.wasm + support .mjs) will appear in the dist directory.

# Clone this repo
git clone https://github.com/fabmax/physx-js-webidl

# Enter that directory
cd physx-js-webidl

# Download submodule containing the PhysX code
git submodule update --init

# Generate build-scripts
./generate.sh

# Build
./make.sh

To add bindings to additional PhysX interfaces you only have to edit the PhysXJs.idl file located in PhysX/physx/source/webidlbindings/src/wasm/ and recompile the library.

Build with Docker

The docker build also generates typescript definitions.

# Build the image
docker compose up

# Build Release
docker compose run --rm builder ./make.sh

# Build Profile
docker compose run --rm builder ./make-profile.sh

# Build Debug
docker compose run --rm builder ./make-debug.sh

Core symbols most depended-on inside this repo

add_node
called by 2
types/generate.js
add_class
called by 2
types/generate.js
add_enum
called by 2
types/generate.js
add_module
called by 1
types/generate.js

Shape

Function 4

Languages

TypeScript100%

Modules by API surface

types/generate.js4 symbols

For agents

$ claude mcp add physx-js-webidl \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page