このプロジェクトについて

Avianは、Bevyゲームエンジン専用に設計されたECS駆動の2Dおよび3D物理エンジンです。既存のエンジンをラップするのではなく、BevyのEntity Component Systemを中核としてゼロから構築されているため、物理状態はゲームの他のエンティティと同じワールドに存在します。 設計原則 - BevyのためにBevyで作られており、既存エンジンのラッパーはありません。 - 人間工学的で馴染みやすいAPI。 - 別個の物理ワールドではなく、ECSを多用。 - エンジンの一部を置き換えられるモジュール式プラグインアーキテクチャ。 - ドキュメントを重視。 機能 - 剛体: 動的、キネマティック、静的に対応し、線形および角速度、外力、トルク、インパルス、重力と重力スケール、線形および角減衰、軸ロック、剛体ドミナンス、連続衝突検出(CCD)、スリープによる自動非アクティブ化を備えます。 - Parryによる衝突検出: 衝突レイヤー、密度、マテリアル特性を設定可能なコライダー、メッシュおよびシーン全体のコライダー生成、衝突イベント、衝突エンティティへのアクセス、衝突のフィルタリングと変更のための衝突フック、手動のコンタクトクエリと交差テスト。 - 制約とジョイント: 組み込みの固定、距離、プリズマティック、レボリュート、球面ジョイントに加え、XPBDを用いたカスタムジョイントと制約のサポート。 - 空間クエリ: レイキャスト、シェイプキャスト、点投影、交差テストを、コンポーネントベースのAPI、柔軟なSpatialQueryシステムパラメータ、クエリフィルタとともに提供。 - 固定タイムステップのためのトランスフォーム補間と外挿。 - コライダー、AABB、コンタクト、ジョイント、空間クエリのデバッグ描画。 - 設定可能なスケジューリング、高いカスタマイズ性、モジュール式プラグイン、カスタム衝突バックエンドのサポート、f32/f64精度(デフォルトはf32)。 使用方法 Cargo.tomlにavian2dまたはavian3dを追加し、BevyのDefaultPluginsとともにPhysicsPluginsを登録してから、RigidBody、Collider、AngularVelocity、Transformなどのコンポーネントを持つエンティティをスポーンします。READMEには、回転する立方体が静的な円柱プラットフォームに落下する完全な3D例が含まれています。 例とバージョン 多数の2Dおよび3Dの例がcrates/avian2d/examplesとcrates/avian3d/examplesにあります。これらはf32とf64の両方の精度をサポートしており、f64ではデフォルト機能を無効化し、次元と精度を手動で選択する必要があります。バージョン表がBevyのリリースとAvianのリリースを対応付けており(例えばBevy 0.19とAvian 0.7)、移行ガイドも提供されています。AvianはBevy XPBDの後継です。 コミュニティとライセンス コントリビューションはissueとpull requestを通じて歓迎されており、まず確認するためのAIポリシーがあります。開発に関する議論はAvian Dev DiscordとBevy Discordで行われています。このプロジェクトはMITまたはApache-2.0のデュアルライセンスで、ユーザーの選択によります。