Проецирование 3D-точки на видовой экран с отрицательной глубиной - PullRequest
1 голос
/ 10 октября 2011

Я много искал, но не нашел решения этой проблемы.

У меня есть окно просмотра, где центр (откуда мы смотрим) всегда находится в (0,0,0). Мы всегда смотрим в направлении (0,0,1). После выполнения всей моей математики, она упростилась до:

Projected X = 3D X Coordinate / 3D Z Coordinate
Projected Y = 3D Y Coordinate / 3D Z Coordinate

И это прекрасно работает. Каждая точка правильно проецируется на плоскость при z = 1. Но есть проблема с глубинами негативов. Я мог бы просто не визуализировать полигоны с отрицательными точками глубины, но что, если у треугольника есть другие вершины, которые достигают области видимости? Я хочу по-прежнему отображать треугольник, потому что вы все еще можете видеть его часть.

Как я могу либо:

A: Найти точку на плоскости просмотра, которая может представлять эту вершину, а затем нарисовать треугольник, используя эту точку?

или

B: Найдите 2 точки и нарисуйте 2 треугольника, чтобы разрезать треугольник пополам где-то между z = 0 и где треугольник входит в усеченный глаз?

РЕДАКТИРОВАТЬ: Хорошо, извините, я думаю, я просто понял, что делать. Я просто установил почти обтравочную панель, чтобы я мог видеть, где линия или треугольник пересекает ее. Он работает правильно для линий, и я собираюсь начать работать с треугольниками.

...