سؤال

أنا بناء صغير محرك 3D لعبة أنا أعمل على.لدي أساسيات فرز:محكم مثلثات مع backface اعدام.ومع ذلك عمق الفرز يبرهن على أن تكون مشكلة صعبة.

أنا حساب الوجه Z من قبل في المتوسط من 3 نقاط التي تشكل الوجه الثلاثي.يعد يواجه تتداخل أحيانا أصغر يواجه منذ لديهم أكبر قيمة Z وبالتالي ترتفع في عمق فرز قائمة العرض.

كيف يمكنني إصلاح هذا ؟ أنا متأكد من أن هناك يعرف عمق الفرز تقنيات إذا أنا يمكن فقط الحصول على بعض المساعدة العملية في البرمجة لهم.لقد بناء على تقديم خط أنابيب نفسي حتى أستطيع الوصول إلى جميع البيانات المطلوبة - مثلثات, نقاط, القوام, الأشعة فوق البنفسجية الإحداثيات ، إلخ.

كاتدرائية المقدمة في 3D البرنامج

alt text

كاتدرائية المقدمة في محرك 3D

alt text

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

المحلول

تحتاج إلى إجراء تقسيم فرعي مثلثات بحيث تكون كلها تقريبا نفس الحجم - بغض النظر عما إذا كنت تفعل الفرز نفسك أو توظيف z-buffer.إلا بالطبع z-buffer خوارزمية أيضا يقسم طويلة رقيقة مثلثات لك.

المشكلة هي أنه إذا كنت قد حصلت على بعض المدمجة الصغيرة مثلثات وبعض طويلة رقيقة منها (على سبيل المثال) الخوارزمية سوف يغيب تصنيف طويلة رقيقة منها في أكثر الأحيان.إذا كنت تستخدم نقطة منتصف المثلث سيكون هناك عرض النقاط حيث سيتم اعتبار "أمام" أكثر إحكاما واحدة في حين إذا حقا هو وراء.خذ هذا أعلى إلى أسفل عرض فيها + تمثل نقطة الوسط.

            o

-+-            1
-----+------   2
         -+-   3

*

تبحث عن * إلى o كبير مثلث (2) يمكن أن يفسر على أنه أمام مثلث صغير (3) ومن ثم توضع على أعلى من ذلك.

إذا (2) كان تقسيمها إلى 3 أو 4 مثلثات صغيرة ثم z-جارى العمل أكثر من مرة.

نصائح أخرى

لك الخيارات هي إما:

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

  2. استخدام Z-Buffer, الذي يدعمه كل أجهزة الرسومات و هو أساسا مجانا.

الزاوية حال يعقد أي مثلث خوارزمية الفرز يمثلها الرسم البياني التالي:

unsortable triangles

كل من مثلثات أمام مثلث واحد وراء الآخر.اضطررت إلى القيام ببعض الخدع البسيطة في إنكسكيب فقط لخلق هذا المخطط.

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

هذا هو واحد من الأسباب Z مخازن هي شعبية جدا (هذا وهم بسهولة تسارع في الأجهزة).

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