DEMO: https://ninja-core.vercel.app
NinjaGL のコアライブラリ
- Editor: https://github.com/foasho/NinjaGL
- Core: HERE
- API: https://github.com/foasho/NinjaApi
- three
- @react-three/fiber
- @react-three/drei
- @react-three/xr
- @react-three/postprocessing
物理エンジンはthree-mesh-bvhで構成される。
- static: 外的移動のない静的なMesh
- step1: OMの変更フラグ[changedBvh]を付ける(全体として)
- staticなomがsetPosition、setRotation, setScaleで変更されたとき
- 新しいOMが追加/削除されたとき
- step2: useFrame内で設定されたフラグをチェック
- フラグがTrueの場合、regenerateMesh()を実施
- step1: OMの変更フラグ[changedBvh]を付ける(全体として)
- moveable: 衝突によって移動するMesh
- step1: moveablesにgrp化されたchildrenをforEachで、IDに紐づくOMを確認
- step2: OMにorderMovedフラグをチェック
- step3: 該当するOMのBVHMeshの衝突点とmoveableの質量(mass)
マルチプレイヤーや AINPCs をテストするときに利用
pnpm install
pnpm dev
lib issue
npm publish
pnpm vitest
アニメーションのキー名は以下に設定
- 静止: Idle
- 歩く: Walk
- 走る: Run
- ジャンプ: Jump