24
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Three.jsAdvent Calendar 2019

Day 8

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 はメンテされているがファイルサイズが大きいと言ってる人もいますね。

スクリーンショット 2019-12-08 17.43.12.png

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

スクリーンショット 2019-12-08 17.46.16.png
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
  • Wikiにドキュメントあり

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?