Перспективные проблемы проекции при увеличении - PullRequest
4 голосов
/ 14 августа 2011

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

Вот изображение этого странного поведения:enter image description here

Обратите внимание на то, как линии сетки собираются в одной точке.

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

Для масштабирования у меня просто есть глобальная переменная window.scaleFactor, которую я умножаю на каждую точку:

Point.prototype.projection = function(matrix){
    var point = $M([[this.x *window.scaleFactor],[this.y * window.scaleFactor],[this.z * window.scaleFactor],[1]]);
    var projection = matrix.x(point);
    return new Point(projection.e(1,1)/projection.e(4,1) + window.panX,projection.e(2,1)/projection.e(4,1) + window.panY,0);
}

Так же верно, или вычисление масштабирования должно бытьсвязанные с точкой зрения?

Вы можете попробовать демо здесь: http://ahmedkotb.0fees.net/3d/projection_demo.html

РЕДАКТИРОВАТЬ: Вы можете масштабировать с помощью колеса мыши и вращать, перетаскивая внутри холста ... Также яне проверял это кроме как на хроме извините за это.

Любая иллюстрация будет оценена, спасибо.

1 Ответ

3 голосов
/ 29 августа 2011

Я думаю, что проблема заключается в следующем: когда вы увеличиваете масштаб, некоторые из ваших линий доходят до камеры, и вы не обрезаете их (линии).Артефакт, который я вижу, типичен для проекции без отсечения.Решение: обрежьте строки или воспользуйтесь другой библиотекой 3D-рендеринга, которая подойдет для вас.

...