Правильный способ обработки 2D-Z-индексирования в 3D-сцене (DirectX)

Мне нужно добиться следующего:

Два 2D-квадрата выглядят так, как будто они наложены друг на друга (как две половины одной и той же текстуры), но на самом деле они разделены по оси z координатами n. Так что, если между ними проходит 3D-объект, одна половина появляется перед объектом, а другая позади.

Могу ли я добиться этого, применив ортогональную проекцию к двум квадратам, а затем нормальную перспективу к остальным 3D-данным? Не потеряет ли это данные о глубине?

Я надеюсь, что мой пример не слишком вводит в заблуждение!


person Adam Naylor    schedule 11.12.2008    source источник


Ответы (1)


Простой ответ — да, если у вас включена запись z во время рендеринга квадов. Ваши z-данные никогда не удаляются, если вы не сделаете это явно.

Однако заставить ортагональные глубины хорошо сочетаться с глубинами проекций может быть непросто. (Я никогда не пробовал, но я думаю, что это не будет хорошо выстраиваться.) В этом случае было бы лучше сделать одно из следующего:

  • Визуализация всей геометрии в виде в перспективе
  • Визуализация всей геометрии в ортогональном виде
  • Визуализируйте ортогональную геометрию в отсортированных слоях без Z-тестирования (сзади наперед), визуализируя перспективную геометрию между ними.

Я предполагаю, что вы уже знаете недостатки первых двух методов, поэтому вам решать, приемлемо ли это. Я думаю, что третий метод является наиболее традиционным.

person Toji    schedule 22.01.2009