Написать код на языке Python , выполняющий следующие операции

2 000 руб. за проект
04 декабря 2021, 13:07 • 1 отклик • 201 просмотр
3д модель отправлю личным сообщением потому что прикрепить файл сюда не удается .
Необязательно делать все задания , но хотя бы несложные первые несколько нужно сделать . Срок до вторника .


Произвести рендеринг трехмерной модели. В процедуре рендеринге предусмотреть реализацию следующих требований:

1. Матрицы перехода между системами координат:
- Mo2w - матрица перехода между системой координат модели и мировой системой координат . Представить в виде произведения трех матриц RTS (вращения, переноса, масштабирования).
Матрица вращения представлена в виде произведения 3 матриц поворота вокруг базисных осей. Построить матрицу таким образом, чтобы был осуществлен поворот вокруг оси Ox на 8 градусов, вокруг оси Oy на 12 и вокруг оси OZ на 16 градусов.
Матрица переноса построена на основе векторе (-1, 0, -1)
Матрица масштабирования осуществляет изменение масштаба в 0.9 раз.
- Mw2c - матрица перехода между мировой системой координат и системой координат камеры.
Камера располагается в точке (2,2,2) и смотрит в точку (-2,-2,0)
- Mproj - матрица проекции (перспективная/ортографическая)
Выбрать параметры пирамиды отсечения таким образом, чтобы модель полностью попадала в неё
- Mviewport - матрица перехода в систему координат области вывода (ViewPort)
Предусмотреть учет параметров области вывода (левая нижняя точка, размеры) при задании матрицы. По умолчанию область вывода занимает все графическое окно. Размер графического окна 1024x1024
- При переходе от одной системы координат к другой, матрица перехода умножается на вектор из координат вершины. Для нормалей при переходе используется обратная, транспонированная матрица, которая умножается на вектор координат нормали.

2. Отсечение невидимых и пересекающихся фрагментов модели:
- Проверка скалярного произведения вектора нормали к грани с вектором направленным от грани к камере
- Проверка с использованием z-buffer для пересекающихся фрагментов модели

3. Наложение текстуры:
- Расчет цвета пикселя (попавшего в спроецированную грань) на основе его барицентричесх координат (a,b,c) относительно спроецированных вершин граней P0, P1, P2. Барицентрические координаты пикселя используются для интерполяции текстурных координат пикселя на основе текстурных координат вершин грани:
(u,v) = a*(u0,v0) + b*(u1,v1) + c*(u2,v2).
Цвет пикселя берется из текстуры (изображения) по индексам, рассчитаным на основе текстурных координат:
i = u*w
j = v*h
При этом необходимо учесть раcположение точки начала отсчета в текстурных координатах.
- Вычисление барицентрических координат можно осуществить с помощью отношения определителей, составленных из координат вершин грани и координат рассматриваемой точки.

4. Анимация:
- Представить анимацию облёта объекта камерой, направленной в центральную точку объекта. Камера в каждый момент облёта находится на определённой высоте (например 3) и на определенном расстоянии (например 4) от центра объекта.

5. Получаемые изображения:
- Рендеринг проволочной модели. Отображаются только проекции ребер модели.
- Рендеринг модели с гранями. Цвет грани задать в полутоновом виде (серый цвет). Интенсивность цвета определить на основе проверки на видимость грани.
- Рендеринг модели с текстурой.
- Анимация облета модели камерой.