Вы находитесь на странице: 1из 4

Задача: “Shape from Shading” получить геометрию объекта из «закраски».

Он же «генератор
ландшафта»

Необходимо создать программу, которая бы на базе существующих двумерных графических


файлов восстанавливала бы трехмерную геометрию объекта. Информация о двух
координатах X и Y берется из положения пикселя в файле. Цвет пикселя определяет его
координату Z.

В качестве исходных данных для программы выступает следующая информация:


1. графический файл произвольного разрешения в градациях серого
2. длина искомого трехмерного объекта (масштаб по Х)
3. ширина искомого трехмерного объекта (масштаб по Y)
4. разница высот между самой нижней и самой верхней точками искомого объекта
5. положение центра координат
6. метод воостановления геометрии:
• - равномерный шаг по длине и ширине (количество линий уровня)
• - определение густоты сетки из разницы градиента цвета

По умолчанию считается что:


1. координаты Х, Y, Z искомого объекта меняются в пределах 0 - 1
2. центр координат лежит в нижнем левом углу графического файла
3. количество линий уровня = 10

Рис.1 Рис.2

Построенную геометрию необходимо:


1. визуализировать внутри собственной программы
◦ в изометрическом виде
◦ в трехмерном виде (с возможностью вращения, масштабирования и пр. к примеру
с использованием OpenGL или Direct3D)
2. передать/построить в произвольную CAD систему (на выбор разработчика)
◦ в сеточном формате
◦ в формате аналитически заданной поверхности (NURBS, B-Spline и пр.)
Дополнительно поощряются следующие возможности разрабатываемого программного
продукта:
1. Обработка исходного изображения:
.1 изменение цветности изображения
.2 поворот, зеркалирование изображения
.3 обрезка изображения
.4 сглаживание/резкость, контраст/яркость
.5 попиксельное редактирование: «резинка», «карандаш», «кисти» с различными
эффектами (к примеру сглаживание), заливка области и пр..
2. Обработка полученной геометрии:
.1 поворот полученной геометрии в трехмерном пространстве
.2 «обрезка» полученной геометрии до нужной формы границы
.3 «склейка» нескольких трехмерных кусков
.4 алгебраические операции (сложение, вычитание, усреднение) нескольких
трехмерных кусков в единое целое
.5 наложение текстуры
.6 анализ полученной геометрии (возможностями собственной программы):
.1 кривзна/радиус
.2 «зебра»
.3 линии равного уровня (по всем координатам)
.4 прочее
2. Экспорт :
◦ сеточной геометрии в STL формат
◦ поверхности в IGES/STEP
◦ кривых уровня в IGES/STEP/DXF
Приложение1. Структура файла в формате STL
solid Object01
facet normal 7.160495e-002 -2.368895e-001 9.688942e-001
outer loop
vertex 8.335612e+000 -1.087681e+002 2.561384e+001
vertex 1.934397e+001 -1.055182e+002 2.559488e+001
vertex 1.927599e+001 -9.714783e+001 2.764641e+001
endloop
endfacet
facet normal 8.911768e-002 -2.524342e-001 9.635015e-001
outer loop
vertex 1.927599e+001 -9.714783e+001 2.764641e+001
vertex 7.897567e+000 -1.003823e+002 2.785143e+001
vertex 8.335612e+000 -1.087681e+002 2.561384e+001
endloop
endfacet

endsolid Object01
solid Object02

endsolid Object02

solid – начало тела, поверхности, объекта


endsolid – конец информации по телу/поверхности
В цикле solid - endsolid – содержится информация о всех полигонах описывающих
геометрию объекта
Object01, Object02 – название тел, поверхностей, объектов

facet normal – начало данных по полигону.


endfacet – конец данных по полигону
В цикле facet normal - endfacet – содержится следующая информация: нормаль к полигону и
список вершин.

outer loop, end loop – обозначение начала и конца списка вершин полигона соответственно
vertex – координаты вершин треугольника

Жирным шрифтом выделены стандартные обозначения формата. Курсивом выделены


куски кода, которые могут содержать произвольную информацию. Все цифры описывающие
особенности геометрии подчеркнуты. Формат STL не содержит информацию о единицах
измерений. Формат STL работает исключительно с прямоугольной декартовой системой
координат для описания трехмерных объектов. Все команды и цифры разделены между
собой пробелами.
Для уменьшения количества ошибок чтения *.stl файлов, не следует делать:
• пустых строк,
• полигонов содержащих количество вершин отличное от трех;
следует учитывать, что при обходе одних и тех же вершин в разном порядке направление
вектора нормали полигона может отличаться.
Приложение2. Методы оценки

Основная таблица оценки


Вес (%) Макс.баллы Итог
1. Вычитка данных 10 10 1
2. Получение координат точек 30*
результирующей поверхности
2.1. Равномерная сетка 10 10 1
2.2. Сетка от градиента 20 10 2
3.визуализировать внутри 30*
собственной программы
3.1. в изометрическом виде 15 10 1,5
3.2. в трехмерном виде 15 10 1,5
4. Экспорт в CAD 30*
4.1. сеточный формат 2/3 10/10 0,2/0,3
(открытие/создание)**
4.2. аналитический вид 15/10 10/10 1,5/1
(открытие, создание)**
итого 100% 10 10

Таблица оценки дополнительных возможностей***


Вес (%) Макс.баллы итог

1. Обработка исходного изображения: 100**** 0,5 0,5


1.1. цветность 40*
1.1.1. градации серого 10 10 1
1.1.2. цветная палитра 30 10 3
1.2. поворот, зеркалирование 5 10 0,5
1.3. обрезка 5 10 0,5
1.4. сглаживание, контраст 5 10 0,5
1.5. попиксельное редактирование: 10 10 1
2. Обработка полученной геометрии: 100**** 0,5 0,5
2.1. поворот 10 10 1
2.2. «обрезка» 10 10 1
2.3. «алгебра» 30 10 3
2.4. текстуры 10 10 1
2.5. анализ: 100**** 0,5 0,5
1.5.1. кривизна/радиус 20 10 2
1.5.2. «зебра» 30 10 3
1.5.3. линии равного уровня 10 10 1
1.5.4. прочее (за каждую доп. 10 10 1
возможность)

* Общий вес пункта оценки. Оценка по данному пункту состоит исключительно из суммы
оценок подпунктов
** Открытие – открытие стандартной CAD уже готового файла в нейтральном формате.
Создание – создание геометрии определенного типа внутри CAD системы.
*** Дополнительные возможности оцениваются в случае, если созданная программа набрала
по основной таблице не менее чем 6 (шесть) итоговых баллов.
**** За наличие любой из возможностей пункта участник получает 0,5б + количество балов
заработанных на подпунктах.