سؤال

أولا، أنا آسف لهذا السؤال الخام، لكنني لا أريد أن أقدم الكثير من التفاصيل، لذلك أطلب فقط من الموارد ذات الصلة مثل مقالات, المكتبات أو نصائح.

يحتاج برنامجي إلى القيام بحسوبة مكثفة بين تقاطع مثلث الأشعة (هناك ملايين الأشعة والمثلثات)، وهدف هدفي هو جعله بأسرع ما أستطيع.

ما فعلته هو:

  1. استخدام الأسرع راي مثلث خوارزمية أعرفها.

  2. استخدم OCTREE. (من Game Programming Gem 1، 4.10. 4.11)

  3. يستخدم خوارزمية تقاطع الأشعة بصندوق فعالة وقوية الذي يستخدم في خوارزمية OCTREE.

إنه أسرع مما كان عليه قبل أن أطبق تلك الخوارزميات الأفضل، لكنني أعتقد أنه قد يكون أسرع، هل يمكن أن تتراجع الأنوار على أي أماكن محتملة يمكن أن تجعلها أسرع؟

شكرا.

هل كانت مفيدة؟

المحلول

المكان الذي يجب طرح هذه الأسئلة OMPF2.COM.. وبعد منتدى مع مواضيع حول الوقت الحقيقي (على الرغم من أنه أيضا غير حقيقي) Raytracing

نصائح أخرى

منتدى OMPF هو المكان المناسب لهذا السؤال، ولكن منذ أن أكون هنا اليوم ...

لا تستخدم تقاطع أشعة / مربع مقابل اجتياز مثادثة. يمكنك استخدامها لعقدة الجذر للشجرة، ولكن هذا كل شيء. بمجرد معرفة المسافة إلى صندوق الجذر والخروج، يمكنك حساب المسافات إلى طائرات قسم X و Y و Z - الطائرات التي تنفذ مربع. إذا كانت المسافة إلى الأمامية والخلفية هي F و B على التوالي، فيمكنك تحديد العقد الطفل من المربع التي تضغط عليها عن طريق تحليل F، B، X، Y، Z. يمكنك أيضا تحديد ترتيب اجتياز عقد الطفل ورفضه تماما الكثير منهم.

يمكن أن تصل إلى أكثر من 4 من الأطفال منذ بدء تشغيل RAY في أكملت ويتغير فقط الثمل فقط عندما يعبر أحد طائرات التقسيم الثلاث.

أيضا، لأنه يصبح متكررا، ستحتاج إلى مسافات الدخول والخروج من العقد الطفل. يتم اختيار هذه المسافات من المجموعة (F، B، X، Y، Z) التي قمت بحسابها بالفعل.

لقد قمت بتحسين ذلك لفترة طويلة جدا، ويمكن أن أقول بأمان أن لديك حول أمر أداء الحجم لا يزال على الطاولة للأشجار العديد من المستويات العميقة. لقد بدأت بشكل صحيح حيث أنت الآن.

هناك العديد من التحسينات التي يمكنك القيام بها، ولكن كل منهم يعتمدون على المجال الدقيق لمشكلتك. بقدر ما يذهب الخوارزميات العامة، فأنت على الطريق الصحيح. اعتمادا على المجال، يمكنك:

  1. تقديم نظام بوابة
  2. انقل الحسابات إلى GPU واستفد من حساب مواز
  3. اتجاه شعبي جدا في Raytracing مؤخرا تحطيم حجم التسلسل الهرمي

لقد حصلت بالفعل على بداية جيدة باستخدام فرز مكاني مقترن بخوارزميات تقاطع سريعة. لتتبع الأشعة الفردية في وقت واحد، واحدة من أفضل الهياكل هناك (للمشاهد الثابتة) هي شجرة KD التي بنيت باستخدام منطقة سطح السطح.

ومع ذلك، بالنسبة لتتبع راي عالي السرعة حقا، تحتاج إلى الاستفادة من:

  • حزم متماسكة من الأشعة
  • frusta.
  • سيمد

أود أن أقترح عليك أن تبدأ "راي تتبع مشاهد متحركة باستخدام اجتياز الشبكة متماسكة". إنه يعطي مثال سهل التنفيذ لهذا النهج الحديث. يمكنك أيضا اتباع المراجع لمعرفة كيف يتم تطبيق هذه الأفكار على أشجار KD و BVHS.

في نفس الصفحة، تحقق أيضا من "حالة الفن في راي مشاهد الرسوم المتحركة".

مجموعة أخرى رائعة من الموارد هي جميع منشورات Siggraph على مر السنين. هذا مؤتمر تنافسي للغاية، لذلك تميل هذه الأوراق إلى أن تكون من الدرجة الأولى.

أخيرا، إذا كنت على استعداد لاستخدام التعليمات البرمجية الموجودة، تحقق من صفحة المشروع ل openrt..

مورد مفيد رأيته هو مجلة أدوات الرسومات. وبعد اعتمادا على مشاهدك، قد يكون BVH آخر أكثر ملاءمة من octree.

أيضا، إذا لم تكن قد نظرت إلى أدائك مع ملف تعريف، فعليك ذلك. أصبح سمك القرش رائعا على OSX، وقد حصلت على نتائج جيدة مع نائمة للغاية على النوافذ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top