В самом начале развития трехмерной графики возникло несколько направлений, каждое из которых было востребовано в своей сфере. Так, наряду с инструментами для создания сложных трехмерных поверхностей, моделирования персонажей и создания анимации, огромным спросом пользовались программные решения, предназначенные для имитации природного ландшафта. Стабильный интерес к программам для генерирования природных ландшафтов вполне объясним и понятен. С одной стороны, эти программы несложны в освоении, и начинающий 3D-художник может создавать трехмерные виртуальные миры сразу после знакомства с программой. С другой стороны, такие программы как Vue, выпускаемая компанией e-on software - это незаменимый инструмент для разработчиков компьютерных игр, которым регулярно приходится создавать реалистичное окружение.
К сожалению, многие интересные и перспективные проекты трехмерной графики часто оказываются заброшенными или, не выдержав конкуренции со стороны более мощных компаний, и вовсе "сходят с дистанции". Поэтому сегодня уже мало кто помнит такие названия, как Raydream Studio или Amorphium. Замедлил свое развитие и популярный генератор ландшафтов Bryce, несмотря на большой интерес, проявляемый к нему дизайнерами и художниками. Передаваемый из рук в руки, от одной компании к другой, этот редактор за последние несколько лет практически не развивался. Отчасти это можно объяснить слабой конкуренцией на рынке программного обеспечения для ландшафтного дизайна - один из альтернативных редакторов ландшафтов, Terragen, практически не обновляется, а продукт Mojoworld от компании Pandromeda объективно слабоват для того, чтобы его можно было считать серьезным оппонентом. Ограниченный выбор специальных трехмерных редакторов обусловлен спецификой визуализации таких сцен. Моделирование трехмерных пейзажей отличается от обычного создания трехмерных поверхностей и сопряжено с целым рядом трудностей, которые программистам нелегко преодолеть. Например, один из главных принципов создания реалистичного окружения в 3D состоит в том, чтобы показать зрителю высокую детализацию изображения. Причем поверхности демонстрируемых объектов природы должны иметь уникальную, неповторяющуюся структуру, которую трудно воссоздать стандартным способом, с помощью текстуры высокого разрешения. Моделировать каждую впадину на скале или каждую травинку не представляется возможным, поэтому в основе большинства генераторов природных ландшафтов лежит принцип фрактального алгоритма. Именно по фрактальному алгоритму генерируется трехмерный рельеф поверхности, фрактальный алгоритм определяет естественный неповторяющийся узор на поверхности водной глади, с помощью этого алгоритма моделируется случайная облачность и т.д. Несмотря на то, что для финального просчета трехмерного проекта этот метод используют все популярные генераторы ландшафтов - и Bryce, и Terragen, и MojoWorld, и Vue, - последний редактор выглядит наиболее привлекательно для разработчиков компьютерной графики. В последнее время этот пакет активно развивается и продвигается компанией e-on software, и вполне успешно. Мало кто из зрителей может заметить, что завораживающие пейзажи за спинами актеров в кадрах фильмов "Пираты Карибского моря" или "Индиана Джонс: храм хрустального черепа" - всего-навсего трехмерная подделка, созданная с помощью Vue.
Ниже речь пойдет о самой "продвинутой" из линейки программ - Vue 7 xStream.
По периметру рабочей области расположены две панели инструментов - вертикальная и горизонтальная. Значки инструментов программы, которые расположены на этих панелях, используются несколько непривычно. Некоторые из них имеют двойную функцию и действуют по-разному, в зависимости от того, какой кнопкой мыши был выполнен щелчок, правой или левой. В этом очень помогают всплывающие подсказки, появляющиеся при наведении курсора на тот или иной инструмент.
При работе над обычным трехмерным проектом положение трехмерных объектов в окнах проекций дает представление о том, как будет выглядеть конечная сцена. При моделировании ландшафтного дизайна все обстоит несколько иначе. Помимо трехмерных объектов, которые, безусловно, играют не последнюю роль, в сцене используются атрибуты естественного окружения, такие как атмосфера, облачность и т.д. Эти факторы также влияют на конечный результат работы в программе, и поэтому необходимо иметь представление о том, как эти атрибуты сказываются на внешнем виде природного ландшафта. Решение этой задачи в Vue 7 xStream реализовано с помощью интерактивного окна предварительного просмотра свитка Main Camera - в небольшом окне происходит интерактивная визуализация, которая пересчитывается каждый раз при внесении изменений в проект.
Наличие такого примитива как объемный текст говорит о том, что программа может использоваться и при создании рекламных роликов. Сам по себе текст - плоская фигура, поэтому чтобы придать такому объекту форму, разработчики использовали две настройки выдавливания - обычное выдавливание и выдавливание с фаской. Чтобы в различных проектах текст не выглядел одинаково, можно использовать разную гарнитуру шрифта, а также различный профиль выдавливания.
К сожалению, объемный текст на русском не совсем корректно отображается, впрочем, как нам кажется, это не очень большой недостаток, ведь модель трехмерного текста можно легко создать в любом трехмерном редакторе - и Cinema4D, и 3ds Max, и Maya. Также в Vue можно импортировать файлы практически всех известных 3D-форматов: 3DS, 3DMF, COB, DAE, DEM, DXF, LWO, OBJ, PZ3, PZZ, RAW, SKP, VRM и других. Кроме вышеперечисленных примитивов, в Vue 7 xStream предусмотрено создание двух типов гор - Standard Heightfield Terrain и Procedural Terrain. Эти два объекта отличаются между собой тем, что в первом случае плотность полигональной структуры остается одинаковой вдоль всей площади. Процедурные горы имеют более сложную топологию, причем плотность сетки такого объекта зависит от расстояния до него - чем дальше отстоит от виртуальной камеры процедурная гора, тем меньше ее детализация и, следовательно, меньшее количество полигонов используется. Форму как первого, так и второго объекта можно отредактировать с помощью редактора рельефа земной поверхности. Он представляет собой удобный мини-редактор, в котором при помощи виртуальных кистей обозначаются возвышенности и впадины, а также различного рода неровности. Во многом помогает то, что в этом редакторе есть возможность генерирования случайного рельефа для разного типа гор - для каньона, для имитации дюн, колотой формы айсберга и так далее. Аппарат моделлинга в программах для ландшафтного дизайна обычно довольно скуден или вообще отсутствует как таковой. В принципе, это можно считать слабой стороной программы, так как отсутствие инструментов трехмерного моделирования ограничивает возможности 3D-дизайнера. Рассматривая возможности моделирования в Vue, следует отметить, что этот недостаток сведен к минимуму. Во-первых, его с лихвой компенсирует арсенал инструментов для моделирования трехмерных редакторов, с которыми обеспечивается тесная интеграция генератора ландшафтов. Во-вторых, в программу включены несколько важных средств, позволяющих получить несложные трехмерные формы. Так, например, Vue позволяет использовать трехмерные объекты для булевых операций. Еще один инструмент для имитации сложных органических форм - метабол, примитив, который обладает свойством слияния с аналогичным объектом при расположении их в непосредственной близости друг от друга. Используя этот тип объекта, можно быстро создать трехмерную модель, на создание которой обычным способом ушло бы намного больше времени. Работать с метаболами очень просто - достаточно разместить несколько примитивов в непосредственной близости друг от друга и выбрать на вертикальной панели инструментов команду Create Metablob Object.
Подбор настроек материалов заметно упрощается благодаря обширной библиотеке образцов для любых объектов. Стоит щелкнуть по образцу материала, и откроется окно, в котором собрана большая коллекция материалов. В ней, в частности, имеются различные материалы для имитации разных горных пород, материалы, имитирующие дерево, стекло, железо и другие вещества. Имеются также анимированные материалы, которые удобно применять, например, для текстурирования морской глади или имитации движущейся облачности.
Работа с мастером анимации позволяет создать анимацию с выбранным объектом в несколько этапов: указывается характер движения объекта, выполняется настройка основных параметров движения (задается цикличность, можно придавать вращательный момент анимируемому объекту и т.д.). Далее определяется траектория движения объекта, которая формируется с помощью узловых точек, через которые должен пройти объект во время перемещения, устанавливается продолжительность движения. На последнем этапе мастера создания анимации можно посмотреть движение объекта согласно указанным настройкам. Если мастер анимации не планируется использовать, его назойливое появление на экране можно остановить, убрав флажок Display this Wizard when creating a new object animation (Отображать этот мастер при создании нового объекта анимации). Другой способ анимации - вручную, для чего используются ключи анимации и треки анимации. Находясь в режиме автоматического создания ключей анимации, можно указать исходные параметры анимируемого объекта, переместить ползунок анимации на нужный кадр и изменить исходные параметры на новые. При этом программа автоматически проследит за изменением значения анимируемого параметра (например, координаты объекта) и в промежуточных кадрах сама поставит надлежащее значение, так, что объект станет анимированным. Чтобы включить режим автоматического создания ключей анимации, необходимо выполнить команду Animation > Autokeyframing. Тонкую настройку характера изменения анимируемого параметра между двумя ключевыми значениями можно осуществлять при помощи кривых анимации, которые являются зависимостью значения анимируемого параметра от времени. Этот метод аналогичен настройке кривых анимации в профессиональных редакторах трехмерной графики, например, в таких, как 3ds Max 2009.
Следует отметить, что визуализация статического изображения и визуализация анимационной сцены в Vue 7 xStream - это разные вычислительные процедуры, которые запускаются разными командами. Так, например, чтобы визуализировать изображение, нужно использовать команду Render > Render. Однако если необходимо просчитать анимационный клип, следует вначале открыть окно с настройками визуализации анимационной сцены (Render > Animation Render Options), указать параметры просчета (разрешение, продолжительность и пр.), указать расположение файла на диске и определить его формат, а только лишь после этого нажать кнопку Render animation в окне настроек.
Параметров визуализации в Vue 7 xStream более чем достаточно - от возможности просчета эффектов каустики и глобальной освещенности, до визуализации с эффектом смазанного движения и глубины резкости. Имеется также возможность послойного рендеринга. Поскольку визуализация сложных сцен занимает много времени, удобно использовать инструмент для пакетной визуализации (batch rendering). Составленный список заданий будет автоматически обработан программой, согласно выбранным настройкам визуализации и очередности. Визуализированное изображение (или анимация) - это готовый продукт трехмерного редактора. И, тем не менее, он часто требует дополнительной коррекции. Использовать постобработку изображения для коррекции цветопередачи для большинства 3D-художников - обычное дело. Коррекция изображения бывает необходима даже в тех случаях, когда освещение сцены настроено должным образом. В Vue 7 xStream включены некоторые инструменты для постобработки. После визуализации изображения на экране появляется окно Post Render Options с настройками цветопередачи и некоторыми инструментами для постобработки просчитанного изображения.
В списке дополнительных модулей программы следует отыскать модуль с названием Vue7xStream.mll - это и есть установленный плагин. Включается этот модуль с помощью флажка Loaded (Загруженный). Если необходимо, чтобы этот модуль подгружался при каждом последующем запуске Autodesk Maya 2009, следует установить флажок напротив опции Auto load (Автоматически загружать). После этого в главном меню Autodesk Maya 2009 появится пункт Vue 7 xStream, который будет неизменно присутствовать в интерфейсе программы, независимо от того, в каком режиме работы используется 3D-редактор. При использовании дополнительного модуля, можно использовать фотореалистичный визуализатор MentalRay, а также программный визуализатор Maya.
В связке с LightWave и Cinema4D программа Vue 7 xStream используется со стандартными модулями визуализации, назначенными в программах по умолчанию. Интересно, что, несмотря на заявленную полную интеграцию с различными пакетами, возможности Vue 7 xStream немного отличаются в разных программах. Например, интерактивное раскрашивание моделей Экосистемами (EcoSystems) или, попросту говоря, размещение объектов растительности по трехмерной поверхности доступно только пользователям 3ds Max и Cinema4D. Что же касается пакетов Softimage XSI, LightWave и Maya, то подобная функция в этих программах пока что только планируется, и соответствующие версии дополнительных модулей находятся на стадии разработки.
Если же сравнивать Vue 7 xStream с другими программами для моделирования природных ландшафтов, то тут лидерство продукта от e-on software очевидно. Vue 7 xStream опережает конкурентов буквально во всем - в наличии средств для создания анимации, в тонкой настройке визуализации, в создании самых разных материалов. Очень важно и наличие удобного и понятного интерфейса, который можно освоить за короткое время. На последнем хотелось бы сделать особый акцент, так как создание трехмерных вселенных - это увлекательнейшее занятие, которое наверняка придется по душе каждому, кто захочет поближе узнать о Vue 7 xStream.
Доброго времени суток, Хабровчане! В этой статье я хочу рассказать про простой и быстрый способ генерации ландшафта. Прежде чем мы приступим к разбору самого алгоритма, хотелось бы отметить, что по отношению к генерации ландшафта мною данный алгоритм на просторах сети замечен не был, однако подобный алгоритм для генерации уровней был описан в статье, ссылка на которую будет в конце.
В какой ситуации удобен алгоритм
Недавно столкнулся с задачей: написать простую стратегию с трёхмерным ландшафтом. Так как я в данный момент обладаю маленьким опытом программирования на языке С++, мои попытки написать «diamond-square» закончились ошибками на ровном месте (ссылка на статью по «diamond-square» также будет в конце). Требовался простой в написании алгоритм, не дающий реалистичный ландшафт, так что данный метод поможет в первую очередь новичкам.
Алгоритм и результат
Прежде чем описывать сам алгоритм поделюсь его результатами:
Алгоритм заключается в том, что программа в случайных координатах заполняет карту прямоугольниками случайного размера. Карта имеет вид двухмерного массива, представляющего карту высот нашего ландшафта.
Для простоты создадим структуру прямоугольника:
Struct tRect
{
int x1, y1, x2, y2;
}
Переменные x1 и y1 - левая нижняя координата прямоугольника, x2 и y2 - правая верхняя.
Наша карта представлена в виде массива HM;
- mapsizey и mapsizex - переменные, определяющие размер вашей карты;
- genStep - переменная, отвечающая за количество наших прямоугольников;
- zscale - некий коэффициент растяжения карты в высоту. Можно заменить числом.
- recSizex и recSizey - пределы размеров прямоугольника.
Теперь необходимо заполнить нашу карту прямоугольниками:
For (int i=0; i
genStep = 1024
zscale = 512
mapsizex и mapsizey = 128
recSize = 10
Преимущества и недостатки алгоритма
Преимущества:
Надеюсь, данная статья была Вам полезной.
Ландшафтный дизайн на компьютере Орлов Андрей Сергеевич
Генерация ландшафтов
На страницах данной книги о ландшафтном дизайне под этим понятием подразумевалось создание и благоустройство территории, озеленение и планирование красивых уголков. В рассматриваемых программах в качестве заднего плана можно было использовать изображения различных ландшафтов, вносимых в базу данных приложения.
В данной главе познакомимся с программами, которые сами генерируют ландшафты. Таких приложений довольно много, остановимся на Terragen и CyberMotion 3D-Designer. Рассмотрим создание ландшафта и сохраним его в виде изображения, что позволит в дальнейшем использовать созданное изображение в качестве заднего плана при работе в программах ландшафтного дизайна. Начнем знакомство с программами – генераторами ландшафтов с приложения Terragen.
Из книги Прикладное программное обеспечение: системы автоматической обработки текстов автора Мальковский Михаил Георгиевич1.2. Генерация текста С необходимостью генерации хотя бы простейших фраз разработчики практических систем столкнулись еще на заре их создания. Даже в столь примитивно организованной (в плане дружественности пользовательского интерфейса) среде, как DOS, при попытке
Из книги Документация NetAMS автора Автор неизвестенOID, их автоматическая генерация и перезагрузки При создании конфигурационного файла, и при добавлении юнитов вручную oid можно не указывать. При этом значение oid генерируется автоматически, так что если набрать show config, значения oid выставятся каким–то случайным образом.
автора Реймонд Эрик Стивен Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен Из книги BPwin и Erwin. CASE-средства для разработки информационных систем автора Маклаков Сергей Владимирович9.2. Генерация специального кода Операционная система Unix оснащена несколькими мощными генераторами кода специального назначения, предназначенного для таких целей, как создание лексических анализаторов (tokenizers) и синтаксических анализаторов; они рассматриваются в главе
Из книги Инфраструктуры открытых ключей автора Полянская Ольга Юрьевна15.4.4. Генерация make-файлов Одним из неочевидных преимуществ Unix make по сравнению с базами данных зависимостей, встроенных в многие IDE-среды, является то, что make-файлы представляют собой простые текстовые файлы, т.е. файлы, которые могут создаваться программами.В середине 1980-х
Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим2.6.1. Генерация словаря ERwin Для управления большими проектами ERwin имеет специальный инструмент - ERwin Dictionary, который обеспечивает коллективную работу над диаграммами и позволяет сохранять и документировать различные версии моделей данных. ERwin Dictionary представляет собой
Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.Генерация пар ключей При помощи этого сервиса генерируется пара ключей (открытый ключ/секретный ключ), секретный ключ хранится в файле, защищенном паролем или иными средствами (например, на смарт-карте или при помощи другого аппаратного или программного средства,
Из книги Инфобизнес на полную мощность [Удвоение продаж] автораГенерация ключа RSA. Для генерации вашей собственной уникальной пары открытый/секретный ключ заданного размера, наберите:pgp -kgPGP покажет вам меню рекомендуемых размеров ключа (простой уровень, коммерческий уровень или военный уровень) и запросит требуемый размер ключа
Из книги Социальные сети [Источники новых клиентов для бизнеса] автора Парабеллум Андрей АлексеевичГенерация случайных чисел Прежде всего, давайте опишем, что мы понимаем под случайным числом (random number). Без четкого определения термина мы будем неуверенно себя чувствовать при разработке и реализации генератора случайных чисел.Будет ли число 2 случайным числом? Просто
Из книги Разработка ядра Linux автора Лав Роберт Из книги Описание языка PascalABC.NET автора Коллектив РуБоард Из книги автораГенерация контента Как часто нужно писать статьи, выкладывать новые материалы? В среднем, оптимальный вариант – один раз в сутки. У вас на сайте и во всех ваших соцсетях должно постоянно что-то появляться. Хотя мы пишем значительно больше.Видео удобнее выкладывать на YouTube,
Из книги автораГенерация потенциальных клиентов Остановимся более подробно на том, как с помощью соцсетей проходить каждый из указанных этапов и как грамотно их использовать. Ранее уже говорилось о том, что нужно правильно настроить сайт. Тогда генерация новых клиентов будет идти за
Из книги автораГенерация заплат Все изменения исходного кода ядра Linux распространяются в виде заплат (patch). Заплаты представляют собой результат вывода утилиты GNU diff(1) в формате, который может подаваться на вход программы patch(1). Наиболее просто сгенерировать заплату можно в случае, когда
Думаю все заметили, что сейчас стало появляться множество всяких бродилок с выживанием в стиле Minecraft . Сделать такую решился и я. Начало было лёгким - Unity3d имеет огромный функционал для сознания простеньких игр (и не только). Персонаж, игровые объекты, в общем основу сделать быстро. Но какой minecraft без рандомно генерируемого мира? Это стало первой трудной задачей. И думаю не только для меня. Просмотрев весь гугл и потратив кучу времени на эту бесполезную вещь я решил написать эту статью дабы сократить страдания других.
Итак, поняв общий план действий, надо приступать к делу.
Perlin noise (Шум Перлина, также иногда Классический шум Перлина) - математический алгоритм по генерированию процедурной текстуры псевдо-случайным методом. Используется в компьютерной графике для увеличения реализма или графической сложности поверхности геометрических объектов. Также может использоваться для генерации эффектов дыма, тумана и т.д.
Using UnityEngine;
using System.Collections;
public class PerlinNoisePlane: MonoBehaviour {
public float power = 3.0f;
public float scale = 1.0f;
private Vector2 startPoint = new Vector2(0f, 0f);
void Start () {
MakeNoise ();
}
void MakeNoise() {
MeshFilter mf = GetComponent
Я бы не сказал, что данный способ даёт ошеломляюще реалистичные результаты, но он довольно неплох для создания пустынь или равнин.
Using UnityEngine;
using System.Collections;
public class TerrainGenerator: MonoBehaviour {
public float R; // Коэффициент скалистости
public int GRAIN=8; // Коэффициент зернистости
public bool FLAT = false; // Делать ли равнины
public Material material;
private int width=2048;
private int height=2048;
private float WH;
private Color32 cols;
private Texture2D texture;
void Start ()
{
int resolution = width;
WH = (float)width+height;
// Задаём карту высот
Terrain terrain = FindObjectOfType
Думаю все заметили, что сейчас стало появляться множество всяких бродилок с выживанием в стиле Minecraft . Сделать такую решился и я. Начало было лёгким - Unity3d имеет огромный функционал для сознания простеньких игр (и не только). Персонаж, игровые объекты, в общем основу сделать быстро. Но какой minecraft без рандомно генерируемого мира? Это стало первой трудной задачей. И думаю не только для меня. Просмотрев весь гугл и потратив кучу времени на эту бесполезную вещь я решил написать эту статью дабы сократить страдания других.
Итак, поняв общий план действий, надо приступать к делу.
Perlin noise (Шум Перлина, также иногда Классический шум Перлина) - математический алгоритм по генерированию процедурной текстуры псевдо-случайным методом. Используется в компьютерной графике для увеличения реализма или графической сложности поверхности геометрических объектов. Также может использоваться для генерации эффектов дыма, тумана и т.д.
Using UnityEngine;
using System.Collections;
public class PerlinNoisePlane: MonoBehaviour {
public float power = 3.0f;
public float scale = 1.0f;
private Vector2 startPoint = new Vector2(0f, 0f);
void Start () {
MakeNoise ();
}
void MakeNoise() {
MeshFilter mf = GetComponent
Я бы не сказал, что данный способ даёт ошеломляюще реалистичные результаты, но он довольно неплох для создания пустынь или равнин.
Using UnityEngine;
using System.Collections;
public class TerrainGenerator: MonoBehaviour {
public float R; // Коэффициент скалистости
public int GRAIN=8; // Коэффициент зернистости
public bool FLAT = false; // Делать ли равнины
public Material material;
private int width=2048;
private int height=2048;
private float WH;
private Color32 cols;
private Texture2D texture;
void Start ()
{
int resolution = width;
WH = (float)width+height;
// Задаём карту высот
Terrain terrain = FindObjectOfType