Для моего личного проекта мне нужно:
Создайте перспективную проекцию 3D-объекта на 2D-плоскость (на точку, определенную в пространстве, которая будет камерой).
Получить точные координаты области/точек перспективной проекции
Создайте перспективную проекцию нескольких 3D-объектов, где одни объекты могут находиться позади других.
Визуализируйте сцену (только одно изображение, анимации не будет, поэтому рендеринг в реальном времени не требуется).
Для пунктов 1,2 и 4 я нашел способ сделать это с помощью PyGame, как описано здесь: http://codentronix.com/2011/04/21/rotating-3d-wireframe-cube-with-python/
Но с пунктом 3 я немного застрял, потому что даже если я могу получить перспективные проекции для каждого из моих объектов, как я могу узнать, какой объект действительно виден, а какой (полный объект или его часть) нет?
Мне действительно нужно точно знать, какие части объектов видны, а какие нет, поэтому моей конечной целью было бы иметь матрицу моего изображения на экране с четко определенными областями проекции каждого объекта.
Например, если матрица содержит все пиксели моего изображения на экране, и у нас есть 10 объектов, мы получим 0, где нет объекта, 1, где мы можем видеть объект n1, 2, где виден объект n2, и т.д..
Я должен добавить, что я опытный разработчик Python и многих других языков, но я никогда раньше не занимался разработкой игр или рендерингом.
Может ли кто-нибудь помочь мне встать на правильный путь?
PS: побочный вопрос: если бы вы также могли указать мне на более оптимизированную реализацию перспективной проекции и рендеринга, чем PyGame, мне было бы очень интересно!