Создание реалистичных моделей в высоконагруженных проектах
Методы создания моделей флоры при низкополигональном проектировании трехмерных сцен в высоконагруженных проектах. Методы скульптурных примов, пример их программной реализации на OpenGL. Соотношение один к одному между вершинами на карте и на меше.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 26.07.2018 |
Размер файла | 3,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru//
Размещено на http://www.allbest.ru//
Волжский политехнический институт (филиал) Волгоградский государственный технический университет
Создание реалистичных моделей в высоконагруженных проектах
Абрамова Оксана Федоровна, доцент, доцент
Книжко Александр Владимирович, бакалавр, студент
В данной статье рассмотрены методы создания моделей флоры при низкополигональном проектировании трехмерных сцен в высоконагруженных проектах. Подробно рассмотрен метод скульптурных примов, приведен пример программной реализации метода на OpenGL.
Введение
В современной компьютерной графике для создания сцен с большим количеством объектов, требуется большое количество ресурсов компьютера. Разрабатываются различные методы и алгоритмы оптимизации и минимизации использования ресурсов для создания современных реалистичных сцен как для игровой индустрии, производств и социальной сферы. Самую большую нагрузку в современном моделировании создают элементы флоры (растения, деревья и т.д.). При количестве объектов флоры в 3D сценах превышающих 3000 единиц, и применении данных сцен для моделирования географических карт и иных, актуально будет создание моделей флоры из перекрещивающихся плоскостей с наложением на них текстур, рис. 1.
Существует два способа низкополигонального проектирования флоры для высоконагруженных проектов:
Наложение текстур на две пересекающиеся плоскости. (Рис. 2), наложение текстур на четыре пересекающиеся плоскости.(Рис. 3)
Наложение карт высот на группу примитивов (куб, сфера) и группировка их в один элемент (фрукты + тарелка.). (Рис. 5)
Методы создания моделей
Пересекающиеся плоскости
Применение перекрещивающихся плоскостей актуально поскольку восприятие пространства идет на базе 3х мерных координат, поэтому, можно использовать тот же трюк для создания иллюзии 3D для простых объектов. Деревья, кустарники, трава и тд.
Рисунок 1
Рисунок 2
Рисунок 3
Достоинства:
Простота.
Возможность размещения большого количества объектов (3000 и более) на одной сцене.
Недостатки:
При очень большом количестве объектов (6000 и более) резко снижается FPS. В современной компьютерной графике не актуален.
Скульптурные примитивы (примы)
Для создания скульптурных примитивов, необходимо сначала понять их основные принципы. Независимо от того являетесь ли Вы новичком или опытным 3D модельером, Вы должны знать:
Скульптурные примитивы должны быть построены из особых и неизменных мешей.
Скульптурные примитивы должны быть отображаемы на особых и неизменных UV-картах.
У скульптурного примитива может быть не больше, чем 1024 грани.
Основы скульптурных примов
В основе создания скульптурных примов лежат скульптурные карты (карты высот), рисунок 4. Эти небольшие текстурные файлы называются скульптурными картами (sculptmap).
Самый основной скульптурный прим - простая плоская поверхность (simple plane surface). Эта поверхность имеет 2 измерения, которые мы назовем X, и Y. И поверхность сделана из прямоугольных граней (faces). Эти грани также называют четырехугольниками. Эта специальная поверхность здесь сделана из 32 граней по оси Х, и 32 граней по оси Y. Следовательно, общее количество граней для этой поверхности 32х32, то есть 1024 грани. Более внимательный осмотр показывает, что каждая грань этого меша сделана из 4 вершин (vertices) и 4 ребер (edges). Каждые 2 соседние грани имеют одно общее ребро и 2 общие вершины. Эта особенность расположения является самой простой и самой постоянной у мешей, которую можно определить на поверхности. Фактически точно такую же решетчатую топологию (mesh topology) используют - все скульптурные примы в мире. Так как решетчатая топология предопределена (pre-defined), мы лишь должны указать перечень точек в 3D пространстве. И так как меш является строго прямоугольным, мы можем использовать ряды и колонки вершин как указатели перечня.
Рисунок 4
Пусть нижний левый пункт будет координатами [0,0]. Это означает, что он расположен в первом ряду (если считать снизу) и в первой колонке (если считать слева направо). Эта нумерация универсальна. Это означает, что пока Вы сохраняете решетчатую топологию в целости, Вы можете передвигать вершины (vertices) как вам угодно, а также сгибать и растягивать меш во всех трех измерениях. Пока соединяющие ребра (edges) не изменены и пока Вы не добавили новые вершины (vertices) к мешу или не удалили существующие вершины из него, объект всегда можно преобразовать в скульптурный прим.
Другими словами: нижняя левая вершина исходной поверхности всегда будет вершиной номер [0,0]. Даже если её переместить в верхнее правое положение меша. И это работает, пока не удалены ребра. Когда Вы удаляете (cut) или меняете порядок расположения (rearrange) ребер (edges), тогда объект перестает быть скульптурным примом. Теперь мы знаем, что эта решетчатая топология универсальна для всех скульптурный примов в мире. По умолчанию скульптурный прим содержит 32 ряда с 32 гранями в каждом ряду. И то, как "соткан" меш, строго определено и сохранено в отдельной карте.
Рисунок 5
Существует неизменное соотношение один к одному между вершинами на карте и вершинами на меше. Общепринято горизонтальную ось на карте называть U, а вертикальную - V. Саму карту называют "UV-карта" (UV-map). Вы можете перемещать вершины на меше в любое нравящееся Вам положение, но UV-карта при этом всегда остается постоянной! Даже, если Вы меняете свой меш в трех измерениях, UV-карта при этом не изменяется. И каждая вершина (vertex) меша может всегда быть найдена на UV-карте. Далее, давайте создадим основной цилиндр (basic cylinder). Мы просто сгибаем плоскость вокруг полной окружности на 360 градусов. После изгиба две стороны плоскости соприкасаются. Другими словами, некоторые из вершин получили одинаковое местоположение. Иными словами, при наложении UV-карты на примитив, мы получаем нужный нам объект, путем позиционирования вершин в соответствии с картой высот.
Достоинства:
Простота.
Возможность создания сложных объектов (Дерево) путем группировки простых (ствол, листва).
Разрабатываются различные методы и алгоритмы оптимизации, минимизации с повышением качества.
Недостатки:
При очень большом количестве объектов (500 и более) резко снижается FPS.
В сравнении с методом наложения текстур на плоскости для создания флоры, данный метод более актуален в компьютерной графике.
Пример кода на языке C# для отрисовки деревьев
//Массив векторов для задания плоскостей
float[] TreeVectors = {
0.0f, 0.0f, 0.0f,
9.0f, 0.0f, 0.0f,
9.0f, 20, 0.0f,
0.0f, 20, 0.0f,
4.5f, 20, 4.5f,
4.5f, 0, 4.5f,
4.5f, 0, -4.5f,
4.5f, 20, -4.5f
};
/// Функция отрисовки дерева по 2м плоскостям результат на рис.6.
//x, y,z - координаты на сцене в которых будет происходить отрисовка модели
private void DrawTree(double x, double y, double z)
{
gl.PushMatrix(); // сохранение текущей матрицы в стек
gl.LoadIdentity(); // возврат начальной точки рисования в исходную точку
gl.Translate(x, y, z); // смещение начальной точки рисования объектов
texture[2].Bind(gl); // добавление текстуры
gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, OpenGL.GL_NEAREST);
gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_NEAREST);
gl.EnableClientState(OpenGL.GL_VERTEX_ARRAY);
gl.EnableClientState(OpenGL.GL_TEXTURE_COORD_ARRAY);
gl.VertexPointer(3, 0, TreeVectors); // задание координат векторов из массива
gl.TexCoordPointer(2, OpenGL.GL_FLOAT, 4, TreeTexArray); //наложение текстуры
gl.DrawArrays(OpenGL.GL_QUADS, 0, 8); // отрисовка объекта на сцене
gl.DisableClientState(OpenGL.GL_VERTEX_ARRAY); //отключение режима работы с массивами вершин
gl.DisableClientState(OpenGL.GL_TEXTURE_COORD_ARRAY); //отключение режима работы с массивами вершин текстур
gl.PopMatrix(); // Возврат предыдущей матрицы из стека
}
Рисунок 6 - Пример реализации
Заключение
скульптурный прим программный модель
Метод построения моделей на основе пересекающихся плоскостей был использован для выполнения контрольной работы по дисциплине «Компьютерная графика» при моделировании опушки леса. Расставлять модели деревьев и травы вручную - неэффективно. Поэтому был написан алгоритм случайного распределения флоры по поверхности земли, по квадрантам координатной сетки, таким образом, чтобы сформировать опушку (границу) между лесами.
Написаны две функции, одна для отрисовки элемента травы, другая - дерева. Координаты отрисовки передаются параметрами из массива который генерируется случайным образом для создания опушки леса. Применив данный метод вместе с библиотекой OpenGL при количестве объектов равным 3284, был достигнут FPS=10-12. При включении функции имитации ветра, FPS снизился до 4-7 кадров в секунду. Данный алгоритм можно дорабатывать, получив более высокие результаты, введя различные виды оптимизации.
Список литературы
Основы Скульптурных Примов [Электронный ресурс] // http://denisgradenko.narod.ru/blenderforsl/the_basics_of_sculpted_prims.html
Создаем скульптурные примы, часть первая [Электронный ресурс] // http://www.secondlife.ru/?act=articles&id=156
Котов В. К вопросу об импорте 3D моделей в программы с использованием графической библиотеки OpenGL [Электронный ресурс] / В. Котов, О.Ф. Абрамова // Современная техника и технологии. - 2014. - № 1. - C. Режим доступа : http://technology.snauka.ru/2014/01/2965.
Трифанов А.И. Реализация собственного метода визуализации водной поверхности «скользящая текстура» / А.И. Трифанов, О.Ф. Абрамова // Современные наукоёмкие технологии. - 2013. - № 8 (ч. 1). - C. 96-97
Шлыков А.А. Практическая реализация алгоритма поиска кратчайшего пути А* для трёхмерных моделей зданий / А.А. Шлыков, О.Ф. Абрамова // Современные наукоёмкие технологии. - 2014. - № 5 (ч. 2). - C. 17-18.
Размещено на Allbest.ru
...Подобные документы
Понятие высоконагруженных компьютерных систем. Традиционные качества, интерактивность, распределенная система, большое количество пользователей. Распределение задач сервером. Балансировка нагрузки. Исследование высоконагруженных систем Google и Вконтакте.
дипломная работа [552,9 K], добавлен 11.12.2015Анализ современного состояния проблем тестирования высоконагруженных информационных систем. Построение математической модели определения высоконагруженных операций. Разработка программного обеспечения системы генерации сценариев нагрузочного тестирования.
дипломная работа [4,4 M], добавлен 24.08.2017Основные преимущества 3D-систем автоматизированного проектирования. Характеристика назначения и основных методов создания твердотельных параметрических моделей в системе КОМПАС-3D, предназначенной для создания трехмерных параметрических моделей деталей.
лабораторная работа [85,1 K], добавлен 25.06.2013Назначение компьютерной графики. Особенности трехмерной анимации. Технология создания реалистичных трехмерных изображений. Компьютерная графика для рисования на SGI: StudioPaint 3D. Пакет PowerAnimator как одна из программ трехмерной анимации на SGI.
реферат [25,7 K], добавлен 31.03.2014Автоматизация проектно-конструкторских работ и применение программы AutoCAD для выполнения трехмерных чертежей. Возможность преобразования и редактирования моделей, получения плоских изображений деталей и адаптация системы к требованиям пользователя.
курсовая работа [2,2 M], добавлен 13.10.2010Создание сложных двумерных и трехмерных моделей в среде AutoCAD, КОМПАС-3D и Autodesk Inventor. Построение эскизов на плоскости, порядок создания чертежей. Способы построения моделей и особенности их применения в той или иной ситуации на практике.
контрольная работа [1,2 M], добавлен 30.05.2015Принципы разработки в системе программного обеспечения САПР. Выбор среды для формирования моделей и функций. Процесс создания моделей деталей. Разработка API-приложения для среды разработки. Тестирование разработанного функционала портала-хранилища.
курсовая работа [704,0 K], добавлен 18.01.2017Принцип работы систем быстрого прототипирования. Многоструйное моделирование с помощью 3D-принтеров. Селективное лазерное спекание. Изготовление моделей из ламинатов. Существующие технологии быстрого прототипирования. Многофазовое струйное отверждение.
контрольная работа [199,4 K], добавлен 14.05.2011Описание технологии создания таблиц в режиме "Конструктор" в программной среде Microsoft Access. Сортировка и фильтрация данных в таблицах, создание полей с подстановкой. Пример структуры многотабличного запроса и пример создания итогового запроса.
лабораторная работа [1,6 M], добавлен 17.02.2013Программный код OpenGL. Синтаксис команд OpenGL. OpenGL как конечный автомат. Конвейер визуализации OpenGL. Библиотеки, относящиеся к OpenGL. Библиотека OpenGL. Подключаемые файлы. GLUT, инструментарий утилит библиотеки OpenGL.
курсовая работа [304,9 K], добавлен 01.06.2004Язык моделирования GPSS World, его особенности и версии. Разработка заданий для обучения основным и специальным приемам создания имитационных моделей на языке GPSS World. Разработка программной документации. Разработка и написание методических указаний.
дипломная работа [4,4 M], добавлен 07.07.2012Изучение моделирования и визуализации трехмерных динамических сцен в пакете 3Ds Max на примере создания анимированной сцены, содержащей мышь, стул, чашку, чайную ложку и море. Создание материалов, камер и анимации, постановка света и визуализация сцены.
курсовая работа [1,2 M], добавлен 26.02.2012Построение реалистических изображений, его этапы, принципы. Эффект одновременного контраста: его природа и значение. Механизм освещения объектов. Нормаль к поверхности и ее особенности для объектов из различных материалов. Поверхности, пропускающие свет.
курсовая работа [986,9 K], добавлен 21.03.2011Создание трехмерных моделей. Основные возможности программы "Sculptric Alpha 6". Главный персонаж серии видеоигр Sonic the Hedgehog компании Sega. Создание персонажа в "Sculptris Alpha 6". Формирование туловища, рук и ног. Моделирование ладоней и пальцев.
курсовая работа [1,5 M], добавлен 02.04.2015Информационные технологии как отрасль, занимающаяся сбором, обработкой и хранением данных, с применением компьютерных ресурсов. Описание ключевых моделей разработки программного обеспечения. Основные черты проявления групповой осознанности персонала.
дипломная работа [69,6 K], добавлен 29.06.2017Изучение основных возможностей создания трехмерных объектов в программе OpenGL, методика наложения текстур. Механизм подключения библиотек. Создание поверхности ландшафта. Реализация ориентирования на поверхности. Изменение поверхности ландшафта.
курсовая работа [21,5 K], добавлен 29.11.2010Игра арканный симулятор гонок разработана: в среде Delphi 5 с использованием библиотеки OpenGL 1.3.4582, Pixia 2.4g для создания и редактирования текстур, Image Editor 3.0 для создания иконок, 3D-Stydio Max 5.0 для создания моделей машин (игрока).
курсовая работа [34,1 K], добавлен 23.12.2007Ошибки, которые воздействуют на программное обеспечение и методы прогнозирования программных отказов. Анализ моделей надежности программного обеспечения и методика оценки ее надежности. Экспоненциальное распределение. Методика оценки безотказности.
курсовая работа [71,5 K], добавлен 15.12.2013Методы создания и наложения текстур (сделанных на основе полученных фотографий) в программах Autodesk 3ds MAX и Adobe Photoshop. Добавление карт нормалей и бликов в программе PixPlant для создания материалов. Создание развертки 3D-объекта в 3ds MAX.
дипломная работа [6,2 M], добавлен 15.06.2013Описание внешних иерархических моделей базы данных. Проектирование нормализованных локальных ER-моделей. Выявление и устранение эквивалентных сущностей и категорий, дублирования атрибутов и связей. Создание внутренней реляционной модели данного проекта.
курсовая работа [87,9 K], добавлен 20.01.2015