BlenderУкраина
Главная
Новости
Статьи
Уроки
Файлы
Ссылки
Форум
Галерея
Конкурсы
• Поиск по сайту


Логин:

Пароль:

 Запомнить
Восстановление пароля

Зарегистрироваться

Наше сообщество:

 Форум

 Галерея
       Все работы по рейтингу
       Все новые работы
       Последние комментарии

 Конкурсы
       Ежедневный
       На баннер (прием работ)
       Повтори
       Художественный
       Модель для сборки

 Гостевая

 Радио

RSSНовости Blender
Последние сообщения форума

 Добавить новость
парфюмерияпарфюмерия : Днепропетровск : модели радиомоделирадиомодели модели на радиоуправлении
Сейчас на сайте 8 посетителей:
и 8 гостей

Обсуждаемые темы:

Linux (hikkikamori)
gold`s недоделки (gold)
Болталка (Old Demon)
Общие вопросы. Python. (Parfeen)
Имитация чертежа (biomechanic)
Конкурсы от Lanuhum (Ya)
Еженедельный конкурс "2D-арт" (MageasteR)
Как вам мой аватар???))) (ПыщПыщ)
Ежедневный Конкурс моделирования в Blender (ПыщПыщ)
Анекдоты (sungreen)
Вопросы новичков и ответы (INFERNAL)
motion blur для анимации (Lanuhum)
Проблема с моделированием квартиры (Непонимашка)
SILICONE-2 (игра разрабатывается) (INFERNAL)
Свои фото (ПыщПыщ)
primera WIP (primera)

Работа дня:

Игор
Ежедневный конкурс моделирования

Новые работы в галерее:


Автор: Gelergo

Автор: Hook

Автор: neanglas


Автоматический полив


Лекарственные травы


Прически и стрижки  

Сообщений 6, на страницах: 1
добавить сообщение

Hello World! Альтернативный способ создания окружения (Blender 2.4x)





Автор урока Fantomaker


Вместо вступления



Редкий человек, летавший на самолете, не восхищался открывающимся видом. Возможно, люди начали летать только затем, чтобы наслаждаться красотой безграничного пространства. Понятно, что полетная сцена не может обойтись без сооответствующего окружения. Его-то мы и попробуем воспроизвести в Blender 3D.

Также нам потребуется замечательная программа SASPlanet, незаменимый источник текстур земной поверхности.




Мир в Blender имеет ограничения. Дальность камеры ограничена 5000 Blender Units, т. е. 5 км, если считать 1 BU за метр. В этих пределах мы и будем создавать наше окружение.

Для удобства работы рекомендуется настроить в настройках 3D-окна меню: View → View Properties параметр ClipEnd в 10000.



Часть 1. Солнце и небо



В пустую сцену добавляем объект-камеру Camera:SPACE → Add → Camera и пустой объект Empty: SPACE → Add → Empty . Сразу настроим параметр END камеры на 5000.



Переименуем Empty в SunPointer, поместим его в начало координат и обнулим углы поворота (окно Transform Properties вызывается нажатием клавиши +N).



Добавим в сцену лампу типа Sun: SPACE → Add → Lamp → Sun, поместим ее на оси X объекта SunPointer на некотором удалении от него и направим в центр SunPointer.

Переименуем лампу в Sun и сделаем ее потомком SunPointer (выделяем сначала Sun, потом, удерживая удерживая SHIFT, выделяем SunPointer, затем CTRL P → Make Parent). Теперь мы можем управлять движение Солца по небу естественным образом - задавая азимут и склонение через углы вращения SunPointer вокруг осей Y и Z. Совместим камеру с объектом SunPointer и свяжем SunPointer с камерой констрейном CopyLocation.



Солнце - достаточно удаленный объект, поэтому оно не должно менять свое положение при линейных перемещениях камеры в сцене. Камеру повернем так, чтобы она смотрела на Sun.
Теперь настроим цвет неба. С некоторых пор в Blender появилась замечательная фишка - Sky и Atmosphere. Перед тем как настраивать освешенность неба следует сделать черный фон в настройках World.



Затем настроим Солнце:



Теперь небо в нашей сцене окрашивается в соответствии с положением Солнца.

Восход Солнца:



Солнце на 30° над горизонтом:



Следующий шаг - засветка от Солнца. Замечали, наверное: если Солнце попадает в кадр, оно дает причудливую засветку на линзах объектива. С данными эффектами замечательно справляются блендеровский материал Halo.

Добавляем плоскость SPACE → Add → Mesh → Plane, в режиме редактирования сетки (переход в режим редактирования и наоборот - TAB) удаляем все вершины кроме одной, а эту одну вершину совмещаем с центром объекта. Полученный объект назовем SunFlare.

Продублируем SunFlare, переименуем копию в SunRays. Первый объект будет создавать радужную засветку на линзах, второй - световое пятно и "звезду" в том месте, где будет Солнце.

Совместим оба объекта с объектом Sun и сделаем SunFlare и SunRays потомками Sun. Теперь Солнце можно поставить на свое место - на расстояние 4900 BU от SunPointer.

Вообще нежелательно задавать предельные значения удаления для объектов окружения, т. к. в этом случае возможно появление артефактов на изображении.

Для SunFlare создадим одноименный материал со следующими настройками:



Для SunRays нам понадобится текстура. Звезды, которые рисует Halo может быть подходят для космических сцен, но никак не на изображение реального Солнца на фото и видео. Можно нарисовать в Gimp вот такую текстуру:



Теперь можно настроить материал и текстуру SunRays.

Настройка материала SunRays:



Настройка текстуры SunRays:



Поднимем Солнце на 30° над горизонтом (напомню - объект SunPointer, RotY = -30°). Камеру повернем таким образом, чтобы Солнце было в верхнем левом углу кадра. Делаем предварительный рендер F12:



Часть 2. Земля



Недостаток Blender в том, что он считает линию горизонта соответствующей углу склонения 0°. Реальный горизонт всегда ниже горизонтальной линии визирования и чем выше мы находимся, тем ниже горизонт. Все-таки мы живем на шаре... Но в Blender, чтобы правильно отобразить линию горизонта, приходится идти на ухищрения.

Для начала обзаведемся текстурой ландшафта, для чего воспользуемся программой SASPlanet. Она умеет работать с сервисами Google Earth, Яндех Карты и прочими базами спутниковых снимков, а главное - умеет загружать и сшивать в одно изображение карту заданного региона. Как с ней работать - разберетесь, это весьма увлекательно.

Наша цель - картинка примерно 7000х7000 пикс. с изображением равнинной местности 10-14 масштаба. Если местность достаточно однородная и не содержит крупных выделяющихся объектов, ее можно обработать в Gimp, превратив в бесшовную текстуру. Над такой картой можно лететь бесконечно.

Бесшовная карта ландшафта от Яндекса:



Ландшафт с характерными очертаниями - используется, когда требуется узнаваемая мастность (Google Earth):



Для большинства задач подойдет любой кусок карты, только следите, чтобы на нем не было облаков.
Дальше из положения "вид сверху" Numpad 7 создаем сетку-круг SPACE → Add → Mesh → Circle со следующими настройками:



Присвоим объекту и сетке имя Landscape и зададим размер 9500х9500 BU:



В режиме редактирования сетки создаем для сетки Landscape плоско-параллельную UV-карту U → Project from View (Bounds) и удаляем все сектора кроме одного (см. рисунок). Разделяем радиальные ребра оставшегося полигона W → Subdivide Multi 35-ю вершинами. Получаем 36 полигонов:



Далее плоский сектор нужно преобразовать в сектор полусферы. В качестве опорной геометрии создаем новый объект - сферу SPACE → Add → Mesh → UVsphere, задаем segments=72, rings=72, масштабируем ее до диаметра 9500 BU. Удаляем у нее почти все вершины, оставляем только один сектор нижней полусферы:



Затем, используя привязку, совмещаем вершины плоского сектора с соответствующими вершинами опорного сектора полусферы:



В дальнейшем из этого сектора мы создадим полусферу, но вначале нужно обработать UV-карту. В окне UV-редактора устанавливаем 2D-курсор в центр карты, выбираем его в качестве точки отсчета:



Масштабируем кольцевые ряды вершин с коэффициентами согласно таблице. Нумерация - от центра, центральная вершина считается нулевой:



Подробности для интересующихся - в конце статьи.

Далее в 3D-окне устанавливаем 3D-курсор на центральную вершину сектора и переходим на вид сверху. На вкладке Mesh Tools задаем параметры Degr=-90 и Steps=18, после чего командой SpinDup (сетка должна быть выделена) выстраиваем из секторов четверть полусферы:



Лишний сектор удаляем. Достраиваем UV-карту: последовательно выделяем каждый сектор в 3D-окне и доворачиваем его в окне UV-редактора с шагом 5°:



Дублируем четверть сферы, доворачивая каждую последующую копию с шагом 90°:



Не забываем доворачивать UV-карту каждой четвертинки в UV-редакторе. В результате должна получиться законченная полусфера с необходимой UV-разверткой:



Удалим повторяющиеся вершины W → Remove Doubles. Присвоим UV-развертке имя Color. Создадим новую UV-карту, назовем ее Falloff. В качестве развертки используем боковую проекцию полусферы U → Project from View (Bounds).



Настраиваем материал и текстуры для Landscape.

Материал Landscape:



Текстура Landscape-Color:



Текстура Landscape-Falloff:



В режиме редактирования сетки выделим второе сверху кольцо вершин и поместим 3D-курсор в середину выделения Cursor->Selection. В объектном режиме помещаем в позицию курсора центр объекта Landscape: Transform->Center Cursor. Перемещаем объект Landscape до совмещения его центра и центра SunPointer. Делаем пробный рендер:



Часть 3. Высотные облака



Для полноты картины осталось добавить легких высотных облаков. Дублируем Landscape и зеркально отражаем его вверх. Именно зеркально отражаем, тогда будет можно использовать одинаковые настройки для текстуры облаков и для текстуры теней облаков на ландшафте. Назовем новый объект HighClouds. Установим его на полусферу Landscape так, чтобы получилась полная сфера. Назначим ему новый материал с текстурами.

Материал HighClouds:



Текстурs HighClouds и HighCloudsFalloff:



Для полноты картины добавим тени от облаков на ландшафте, для чего добавим текстуру Clouds к материалу Landscape.

Настройка текстуры Clouds для Landscape:



Часть 4. Заключительная



Неплохо было бы внести в созданный мир некоторые зависимости, чтобы в дальнейшем не отвлекаться на лишние настройки. Сделаем следующее: в окне текстового редактора напишем небольшой скрипт Python-скрипт:

import Blender, math
rays=Blender.Material.Get("Sun_Rays")
cam=Blender.Scene.GetCurrent().getCurrentCamera().getData()
lens=cam.lens
fov=2*math.atan(16/lens)
halo_size=40+(60/1.6949)*(fov-0.1597)
rays.setHaloSize(halo_size)
declination=Blender.Object.Get("SunPointer").RotX
Blender.Material.Get("Landscape").textures[0].colfac=math.sqrt(math.sin(declination))


Присвоим скрипту наименование "SunFlareControl" и подключим его к сцене в настройках ScriptLink:



Данный скрипт делает две вещи: уменьшает размер солнечной "звезды" при увеличении фокусного расстояния (напомню, Солнце - удаленный объект и его видимый угловой размер не должен значительно увеличиваться зумом камеры) и изменяем яркость ландшафта в зависимости от высоты Солнца.

На полусферы окружения Landscape и HighClouds также наложим констрейны CopyLocation, как ранее это было сделано с объектом SunPointer.

Подразумевается, что окружение находится значительно дальше от камеры чем 5000 BU поэтому его перемещения в кадре, тем более - значительное удаление камеры от ценра сферы окружения повлекут за собой искажение изображения мира.

Однако окружение находится не так далеко как Солнце, поэтому некоторое движение ландшафта и облаков при анимации полетных сцен должно быть.

Для его имитации используем анимацию параметров наложения текстуры. Смещением текстуры Offset можно добиться иллюзии полета над местностью, масштабированием Size - изменения по высоте:



Для имитации восходов и закатов достаточно задать движение SunPointer, остальное возьмет на себя Blender. Украшением воздушного пространства могут быть объемные кучевые облака, но это уже другая история...

В заключение. Подробности для любознательных





UV-карта нижней полусферы окружения предствляет собой точечную проекцию на плоскость ландшафта (см. рис). Допустим, что нижняя полусфера окружения имеет n сегментов. Проекция i-той точки (i - целое число от 1 до n) находится на расстоянии Ri от центра карты. Для удобства приведем функцию к нормализованному виду, т.е. к диапазону значений (0...1), согласно (2). Тогда функция расстояния от центра карты до проекции i-той точки примет вид (3). При α→90° функция (2) стремится к бесконечности, поэтому для удобства вычисления ограничим диапазон углов α значением αmax=85°, это не даст видимого искажения. Изначальное расстояние R0 от центра карты до проекций точек изменяется равномерно и в нормализованном виде определяется формуной (4). Следовательно, масштабный множитель M для приведения расстояний R0 к R вычисляется по формуле (5).

Лист таблицы с вычислениями (Open Office Calc)


Сообщений 6, на страницах: 1
добавить сообщение

© 2007-2012 Юлия Корбут, некоторые права соблюдены.
© 2007-2012 Julia Korbut, some rights reserved.