Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What is going on with this article?
@naotaro0123

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

More than 1 year has passed since last update.

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

参考

15
Help us understand the problem. What is going on with this article?
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
naotaro0123
Webエンジニアです。BlenderとWebGLと漫画が大好きです ◆ソース http://github.com/naotaro0123

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
15
Help us understand the problem. What is going on with this article?