seregadanser / Three-dimensional-editor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Трехмерный редактор на уровне ребер, вершин, полигонов

Задача: разработать универсальное приложение для редактирования трехмерной модели на уровне полигонов, ребер и вершин.

В приложении реализованы следующие виды рендера: растеризация интерполяцией, растеризация барицентрическими координатами, трассировка лучей (параллельная и однопоточная).

Для отсечения невидимых граней используется z-буфер для растеризации или трасировка лучей.

Управление камерой: w/s - вперед/назад, a/d - влево/вправо, q/e - вверх/вниз, z/x - вращение вокруг центра сцены, c/v - поворот влево/вправо, f/g - наклон вверх/вниз.

Левой кнопкой мыши можно выбрать объект, чей выбор обозначен в меню сверху. Правой кнопкой мыши можно добавить точку на модель к близжайшей линии. Правой кнопкой мыши+ctrl можно добавить полигон, выбрав 3 точки.

По коду и программе:

Я запускал и писал в visual studio 2022, при скачивании архива проект должен запускаться и компилироваться без ошибок. На экране должен появляться куб.

Помимо стандартных фигур: куба, пирамиды, полигона, в программу можно загрузить модель из obj файла. Для этого в сцену необходимо передать объект ObjReader, в который в свою очередь, передается строка к obj файлу. НЕ РЕКОМЕНДУЮ на защите использовать не стандартные фигуры из-за долгой загрузки obj файлов в программу (я честно пытался это оптимизировать, но видимо не судьба) и довольно долгой отрисовки.

Если есть вопросы по коду или проблемы с программой писать в тг @serega_dancer

About


Languages

Language:C# 100.0%