Я не можу реально зрозуміти, що викликає перекриття однієї поверхні іншою. У 3D-двигуні, який я створюю, моя техніка виходить з ладу у кращих випадках.
Мій метод - сортування поверхонь, які слід пофарбувати, від найбільш віддалених до найближчих. Для визначення близькості я порівнюю середні значення z. Однак іноді поверхня, що перекривається, має більш високе середнє значення z, ніж перекриття. Таким чином, поверхня надалі зафарбована ближче - в результаті виходить химерне відображення так:
Потрібно побачити лише фіолетову передню поверхню куба, в той час як червона бічна поверхня пофарбована над фіолетовою. Середнє значення z поверхні фіолетової поверхні вище, а отже, «далі». Тож у мене виникають сумніви щодо правильності цієї методики.
Я також намагався отримати відстань від камери (тобто походження) до поверхні, але тоді мені потрібна була точка. Я вибрав середину кожної поверхні, але також це не завжди працює, оскільки не всі поверхні такі великі, як одна.
Отже, який надійний спосіб визначити порядок близькості поверхонь до походження?