Javascript/WASM bindings for Nvidia PhysX 5.6.1
npm install physx-js-webidlLooking for pre-built binaries / build instructions? See below
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
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).
However, the demos are written in kotlin, not javascript.
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-webidlEnter that directory
cd physx-js-webidlDownload submodule containing the PhysX code
git submodule update --initGenerate build-scripts
./generate.shBuild
./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.$3
The docker build also generates typescript definitions.
`
Build the image
docker compose upBuild Release
docker compose run --rm builder ./make.shBuild Profile
docker compose run --rm builder ./make-profile.shBuild Debug
docker compose run --rm builder ./make-debug.sh
``