LoginSignup
24
17

More than 3 years have passed since last update.

2019年の3D物理演算ライブラリ状況

Last updated at Posted at 2019-12-08

これは Three.js Advent Calendar 2019 の8日目の記事です。
Three.js Meetup Tokyo #0で「Oimo.jsがシンプルで使いやすくてオススメ!」と言ったけど、色々と考慮するとCannon.js または Ammo.jsの方が良いという話です。

メジャーな3D物理演算ライブラリ

2019年現在でThree.jsと組み合わせやすい物理演算ライブラリは、主に以下があります(更新日順)

ライブラリ名 サイズ 最終更新日
Ammo.js 1.68MB 2019/11/16
Oimo.js 352KB 2019/01/22
Cannon.js 384KB 2016/05/03
Physijs 43KB 2015/10/20

現状でメンテされているのはAmmo.jsですね(npmの ammo.js は4年前から更新されてないけど)
Cannon.jsPhysijsは3年以上更新されてない状況です。

オススメの物理演算ライブラリの話は three.js forum でも議論されてます。
Cannon.js はドキュメントが整備されており使いやすいがメンテされてない、Ammo.js はメンテされているがファイルサイズが大きいと言ってる人もいますね。

ちなみにBabylon.jsではCannon.jsOimo.jsEnergy.jsAmmo.jsと幅広くサポートしてます。
しかも物理演算用のInterfaceが提供されているので、どのライブラリを選択してもほぼ同じコードで動くという(babylon.js強い!)

Babylon.jsでCannon.jsを使う場合
const scene = new BABYLON.Scene(engine);
const gravityVector = new BABYLON.Vector3(0, -9.81, 0);
const physicsPlugin = new BABYLON.CannonJSPlugin();
scene.enablePhysics(gravityVector, physicsPlugin);

APIドキュメント

  • Ammo.js
    • ドキュメントなし。本家のBullet physicsやexamplesコードをみる必要あり。
    • Three.js examplesのphysicsシリーズAmmo.jsを使ってるのでそれを見ればいける
  • Oimo.js
    • ドキュメントなし。シンプルなのでReadmeとdemosコードでいける
  • Cannon.js
  • Physijs

TypeScript対応

TypeSearchで調べると、現状はCannon.jsPyshijsが対応していました。
Oimo.jsは対応する方向がなさそうですね。

Ammon.jsはTypeSearchでヒットしないが、有志の方が対応してくれてます。

その他ライブラリなどの物理演算の採用状況

まとめ

更新が止まってるのは少し不安ですが、お手軽に使うならCanno.jsがベストかと思います。
保守性を求めてガッツリ作るならAmmo.jsが良いかと思います。
以上、読んで頂きありがとうございました。

参考

24
17
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
17