Help us understand the problem. What is going on with this article?

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

これは 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が良いかと思います。
以上、読んで頂きありがとうございました。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away