Мой вопрос довольно прост в области компьютерной графики, но почему-то я не нашел ответа.Просмотр конвейера и 3D-преобразований
Пролог:
Я хочу, чтобы написать программу, которая печатает многоугольники на холсте, и я хотел бы, чтобы пользователи могли играть с полигонов - масштаб, переводить и вращаться (около х/у/z).
Я должен использовать только java AWT; не JOGL (библиотека java для openGL).
Я получаю многоугольники в 3d мировых координат, как с помощью входного файла в программу, а также «камера» свойство, такие как координаты камеры, посмотрите на точке, до вектора и размера окна (используется в проекция от 3d до 2d).
Первый вопрос:
Моя первая проблема заключается в написании просмотра трубопровода, поэтому мир 3D coordinats бы преобразовать просмотра координаты (координаты камеры), а затем проецировать его на 2d координат и выполнить обрезку, чтобы создать перспективу. Я видел бесчисленные видео и методы, но я не могу принять решение о последних матрицах.
Второй вопрос:
Моя вторая проблема в том, где применить 3D-матрицы преобразования. Должны ли преобразования применяться к исходным мировым координатам (а затем, конечно, продолжать работу с конвейером просмотра) или непосредственно для просмотра координат (и продолжить конвейер с этой точки)?
Для пояснения обозначим рассматриваемый трубопровод как A-> B-> C-> D, который пересчитывается для каждого пользовательского преобразования, а инициированное пользователем преобразование (может быть любым из вышеперечисленных), как T.
Меня беспокоит, следует ли делать T A-> B-> C-> D или A-> T B-> C-> D.
Спасибо за помощь.
Следите за ответом pingul и моим комментарием. Обычно в методе 'reshape' вы вычисляете (и загружаете) матрицу проецирования и' glViewport'. Просмотреть матрицу вместо начала отображения 'display' и матрицы модели каждой модели в начале рендеринга i-й модели – elect