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

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

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

Могу ли я достичь этого, применяя ортогональную проекцию к двум квадрам и затем нормальную перспективу к остальным трехмерным данным? Это потеряет данные глубины?

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

11.12.2008 21:02:21
1 ОТВЕТ
РЕШЕНИЕ

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

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

  • Рендеринг всей геометрии в перспективе
  • Отобразить всю геометрию в отогональном виде
  • Рендеринг ортогональной геометрии в отсортированных слоях, не прошедших z-тестирование (задом наперед), предоставляя вам промежуточную геометрию в перспективе.

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

1
22.01.2009 00:15:50