Почему пересечение двух 3D объектов зигзагообразно? - PullRequest
0 голосов
/ 24 августа 2018

У меня нет опыта работы с DirectX, я был назначен в проект, требующий быстрой модификации.

В настоящее время я сталкиваюсь с этой проблемой: у меня есть поверхность, которая является фактически текстурированной плоскостью, определяемой 1024x1024 точками (рельеф). Это хорошо, и я доволен этим. Тогда есть ортогональная желтая полупрозрачная плоскость, которая пересекает местность. Со стороны это выглядит так, как показано на следующем рисунке (обратите внимание на плоскую поверхность):

enter image description here

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

enter image description here

Есть идеи, как убедить DirectX создать плавное пересечение? (Может быть, это просто вопрос одного параметра, который я не могу найти?)

1 Ответ

0 голосов
/ 24 августа 2018

Почему?

Недостаточное разрешение буфера Z.

Может быть, дело только в одном параметре, который я не могу найти?

Основным параметром является матрица проекции мира * вид *, которую вы передаете своим вершинным шейдерам.

Один из способов исправить ограничение размера Z области просмотра, перемещая ближние и дальние плоскости отсечения Z близковместе.

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

...