عن المشروع
BepuPhysics for Rust هو منفذ سطر بسطر لـ BepuPhysics v2، ويصفه مؤلفه بأنه محرك فيزياء عالي الأداء كُتب أصلاً بلغة C#. يحافظ المنفذ على تركيز الأصل في كشف التصادم وحل القيود المُحسّن بواسطة SIMD، ويضيف جدولة مهام بدون قفل مع توزيع تلقائي للعمل للمعالجة المتعددة المهام، ويقدم تكاملًا اختياريًا مع محرك الألعاب Bevy. تشمل دعم الاستعلامات المكانية إسقاطات أشعة مُرشّحة ومسح أشكال.
تتطلب متطلبات البناء ملاحظة: تحتاج الحزمة إلى راست ليلي 1.95.0 أو أحدث لأنها تستخدم ميزات portable_simd وgeneric_const_exprs، وتستهدف macOS (NEON SIMD) أو x86_64 (SSE/AVX2). التثبيت عبارة عن تبعية عادية عبر Cargo، مع وجود علامة ميزة bevy لتفعيل المكون الإضافي.
يُقدّم مسار Bevy كأسهل طريقة للبدء. يتم إضافة BepuPhysicsPlugin جنبًا إلى جنب مع المكونات الافتراضية، ويتم إدخال الجاذبية كمورد، ويتم إنشاء الأجسام مع مكونات: أنواع RigidBody للأجسام الديناميكية والساكنة والكينماتيكية؛ والكواشف للتضاريس الكروية والمكعبية والأسطوانية والكبسولية؛ وخصائص المواد للكتلة والاحتكاك والارتداد والتخميد الخطي أو الزاوي. تتم مزامنة مكونات السرعة ثنائي الاتجاه مع المحاكاة. تغطي مكونات الضبط الإضافية تقييد الدوران حول المحاور المحلية للجسم (بما في ذلك إعداد مسبق UPRIGHT الذي يحرر الاتجاه الأفقي، وإعداد ALL)، والهوامش التخمينية التي تتحكم في مسافة إنشاء نقاط الاتصال قبل السطح، وعتبات النوم، وأقنعة طبقات الاستعلام المستخدمة فقط لترشيح الاستعلامات المكانية وليس للاستجابة التصادمية. تشمل الموارد Gravity و BepuConfig للخطوة الزمنية والخطوات الفرعية وعدد الخيوط والثبات، ويُقصد بالأخير سيناريوهات إعادة التشغيل أو الشبكات.
تُعرض الاستعلامات المكانية عبر معلمة نظام BepuSpatialQuery التي تستعير المحاكاة في الوضع المشترك، لذا يمكن تشغيل عدة أنظمة استعلام متوازية، مع تخصيص ذاكرة مؤقتة لكل نظام. يجب جدولة الاستعلامات خارج مجموعة خطوات الفيزياء. تغطي الواجهة البرمجية إسقاطات الأشعة الأقرب والكل، بالإضافة إلى مسح الأشكال، مع دعم QueryFilter لاستبعاد الكيانات وأقنعة الطبقات والقيود الساكنة فقط أو الأجسام فقط. يشير الملف الموضح (README) إلى حالة خاصة SweepResult::StartPenetrating للمسح الذي يبدأ ملامسًا بالفعل: نظرًا لعدم تعريف وقت الاصطدام أو نقطة الاتصال أو المتجه الطبيعي في هذه الحالة، يحافظ المنفذ على فصلها عن الحالة الفاشلة أو الناجحة لكي يقرر المستدعيون كيفية التعامل معها. يُوثّق حل الكيانات بأنه يعتمد على فرع حسب حركة الكائن القابل للاصطدام قبل استخدام المقبض، نظرًا لأن مقبض الجسم والساكن ذات القيمة الأولية نفسها يشيران إلى كائنات غير مرتبطة.
يحتوي المستودع على أمثلة Bevy مثل rain و tower و hello_physics، ويؤكد على ضرورة تشغيلها في وضع الإصدار لأن البناءات في وضع التصحيح أبطأ بعشر إلى مائة مرة دون تحسينات SIMD. توجد معايير المقارنة في عضو workspace منفصل يسمى bepu-benchmarks ليبقى تبعياته الثقيلة والمحددة بالمنصة خارج المكتبة؛ وتشمل مقارنة مع Avian، ووراء ميزة اختيارية csharp، نفس المشهد الذي يعمل مقابل محرك BepuPhysics الأصلي عبر FFI. تُترك هذه الميزة اختيارية لأن تبعيتها الأصلية تفشل في الربط على MSVC. المشروع مرخص تحت Apache 2.0، متوافقًا مع محرك BepuPhysics v2 الأصلي، ويُنسب الفضل إلى Ross Nordby كمؤلف أصلي، مع وصف الملفاف Bevy بأنه مستوحى من تصميم محرك الفيزياء Avian.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.