Робототехника интересна тем, что это синтез многих направлений — программирование, конструированием, математика, физика и так же есть моделирование. В том году, ко дню Космонавтики мы делали небольшой пост про моделирование корабля Восток-1 с помощью OpenSCAD, в этот раз — продолжим традицию, и попробуем на практике — Blender. Навык моделирования — лишним не будет.
Blender — это кроссплатформенная, бесплатная система для 3д моделирования (+анимация), и так же в ней возможно «рендерить» модели.
Создание 3д моделей, тем более космических кораблей — это не простая задача, и могут уйти месяцы. Но мы воспользуемся уже готовыми 3д моделями корабля Восток-1 (расскажем где они находятся), и создадим простую 3д сцену.
Модели корабля Восток-1
Во первых, расскажем об источнике моделей — они выложены на github — их автор Славутинский Виктор — создавал их для авиа-симулятора FlightGear, за его работу — большое спасибо.
Установка Blender
С установкой Blender никаких проблем не должно быть, с официальной страницы скачивается дистрибутив для вашей ОС — распаковывается, и запускается.
Импорт AC3D в Blender
Файлы моделей для FlightGear в формате AC3D (*.ac) — нам необходимо импортировать их в Blender. Для этого есть плагин Blender-AC3D.
Установка плагинов заключается в копировании папки в папку с плагинами, мне потребовалось скопировать папку «io_scene_ac3d», в папку моего дистрибутива «blender-2.76b-linux-glibc211-x86_64/2.76/scripts/addons/». После этого необходимо активировать плагин, для этого (после перезапуска Blender) выбираем меню «File» — «User Preferences ...» — на вкладке «Addons» в поле поиска набираем ac3d — и отображается наш плагин, ставим напротив него «крыжик» — с этого момента плагин становится доступным (если мы хотим чтобы он всегда подключался — нажимаем на кнопку «Save User Setting»).
Теперь мы можем импортировать модели в формате *.ac — выбираем «File — Import — AC3D».
Модели Восток-1
Модели находятся в папке Models, в соответствующих (говорящих) под-папках:
ControlHandle Effects Exhausts GasHandle Illuminators LeftPanel LeftSwitchPanel MainPanel Parachutes RightPanel RightSwitchPanel Seat Spacecraft Vzor
Например, это результат рендеринга в Blender файла LeftPanel/Vostok-1-Left-Panel.ac:
Или MainPanel/Vostok-1-Main-Panel.ac:
Там смоделирован полностью Восток-1, от ракеты, до спускаемого аппарат, и кабины космонавта.
Со временем, для упрощения работы — все файлы будут переведены в формат Blender, и размещены здесь Vostok-1-blender.
Сцена
Тестовая сцена, что использовалась для рендеринга нашей картинки выложена на github (файл Vostok-1-scene.blend), и после её открытия вы увидите
Процесс создания
Для создания сцена необходимы 3 элемента:
- 3д объект
- фоновая картинка
- освещение
3d объект нашего космического аппарата Восток-1 можно взять сразу в формате Blender (файл Vostok-1.blend там же). Фоновая картинка была импортирована с помощью плагина «Import Images as Planes» (по-умолчанию он выключен, его надо найти в списке Add-ons — и активировать). Появляется соответствующая функция:
В этом случае — картинка становится объектом «панель» с которой удобно работать и размещать на 3д сцене.
Основные операции
Вкратце коснемся базовый действий при работе со сценами в Blender (для самых начинающих).
Во первых это ориентирование в пространстве — для этого нажимается средняя клавиша мыши, и происходит перемещение точки обзора.
Работа с объектами: выделение объекта — права клавиша мыши (но все советуют переделать её на левую).
С выбранным объектом — можно производить действия:
- перемещение [G]
- вращение [R]
- масштабирование [S]
Как правило, это делается через клавиатуру — нажимаются соответствующие клавиши — и модель переходит в соотв. режим. Можно указывать данные для перемещения, вращения — сразу на клавиатуре, выбрав соотв. ось (x, y, z).
Например, если вы откроете сцену по-умолчанию — там сразу будет выбран куб (это видно слева внизу, где кстати видны и оси), и нажав на клавиатуре, последовательно следующие клавиши «g y 3 Enter» — мы сместим его по оси Y на 3 клетки. А эта комбинация «r y 45 Enter», повернёт его вокруг оси y на 45 градусов:
Далее удобной функцией является работать в координатах объекта — для этого надо два раза нажать на название оси — визуально будет подсвечена ось, либо в глобальной системе координат, либо локальной, например повернуть вокруг оси z (куба) на 45 градусов: «r z z 45 Enter»:
Планы просмотра
С помощью клавиш на правой цифровой панели можно переключать виды — 0,1,2,3…
0 — это вид с камеры, то, что будет рендериться (отображается рамкой та зона сцены, что будет захвачена):
Рендер
Для запуска рендера — нажимаем на клавишу F12 — Blender начнёт отрисовывать сцену с помощью Cycles Render. Esc — остановка. F3 — сохранение результата (картинки).
Качество рендеринга зависит от количества Samples — чем их больше — тем более реалистичная сцена будет, но тем дольше будет происходить рендеринг.
Этот ключевой элемент настраивается в блоке Render — это иконка «Фотоаппарат» — справа в панели инструментов:
и есть возможность выбрать из выпадающего списка «Preview» или «Final», или выставить вручную значение «Samples Render» — я рендерил на значении 200. Для качественных результатов — увеличивают значение.
Элементы
Все элементы на сцене — составляют иерархию, и её можно видеть в правом верхнем окне:
Мы видим, что у нас есть:
- Camera — с помощью камеры мы получаем картинку
- Sun — это источник освещения — что создёт эффект Солнца на нашей 3д модели
- Sun.001 — это источник света — что создаёт эффект отражения света от Земли
- Vostok-1 — это родительский объект для нашей модели корабля Восток-1
- earth_from_space — это панель с текстурой картинкой Земли — для получения эффекта нахождения в космосе
Освещение
Основным источником света на нашей сцене — является Солнце. Для изменений параметров — выбираем этот элемент в иерархии элементов, и нажимаем на панели инструментов на иконке «Солнце»:
Здесь можно изменять — размер «Солнца» — «Size» — чем меньше — тем меньше угловой размер источника света. И так же Strength — определяет силу света.
Изменяя эти параметры — можно менять уровень освещения модели Солнцем.
Так же у нас есть фоновое освещение, это настраивается на вкладке «World» (иконка Земля):
И нажимая на Color:
видим, что в нашем примере фоновое освещение выставлено на уровне — 0.005
Поворот 3д-модели
Для работы с моделью — выбираем элемент Vostok-1 на иерархии элементов, и можем перемещать или поворачивать (например, для изменения разного угла падения света), делаем это с помощью клавишных команд: «R», далее ось — («x», «y», «z») — вокруг которой хотим повернуть (нажимаем два раза — если это ось относительно объекта) — и далее двигая мышку — можем видеть сразу изменения — «Enter» — для подтверждения изменений или «Esc» для отмены.
Эксперименты
Конечно, это лишь простая сцена, но даже здесь можно варьировать разные параметры, и смотреть, что получится
Благодарности
Ещё раз хочется выразить благодарность Славутинскому Виктору — за его титаническую работу по 3д моделированию Восток-1. Так же благодарность Михаилу Шаблину — что поддержал меня в этом начинании, и уделил время на мои вопросы.
Дальше
Конечно — это лишь мала часть возможностей Blender, не рассмотрена анимация, работа с текстурами, работа с видео, звуком и т.п.
Русскоязычные ресурсы для самостоятельного изучения Blender:
- Курс по основам Blender 2.7+
- Видео-курсы “3D-мультфильм с нуля” (Артур Шамшадинов и Co)
- вышла русскоязычная (оригинальная, не переводная) книга по Blender: «Прахов А.А. Самоучитель Blender 2.7»
Комментарии (34)
cronk
13.04.2016 09:03Про установку аддонов:
Если папку «io_scene_ac3d» сжать в zip архив и указать на него (File > User Preferences > вкладка Add-ons > кнопка Install from file), то Блендер сам положит аддон куда надо и он появится в списке аддонов.
Разработчики давным давно сделали удобный инструмент для установки скриптов, но народ упорно раскладывает всё в ручную =)
vidyacat
13.04.2016 09:03+1картинка в шапке выглядит как-то не очень.
nemilya
13.04.2016 10:30Вот, воспользовался render.st (render farm) — и фрагмент сцены (с кораблем) отрендерил на 400 Samples (заняло на сервисе — 00:42:28):
Для тех, кто не хочет ждать)lifestar
13.04.2016 10:56+2Вот этот маленький кусочек картинки рендерился 42 минуты?
nemilya
13.04.2016 11:43Время рендеринга зависит от сцены и настроек — можно за 5 минут, можно за пару часов.
Вот статья, объясняющая основы работы Cycles Render, и что такое Samples: Как работает трассировщик пути в Cycles.
fijj
13.04.2016 11:31+2Сам блендером не пользуюсь, в основном мах + vray или mental. Но 42 минуты на ферме для такой сцены, это слишком много. Что то явно с настройками рендера накрутили не того
quverty
13.04.2016 16:11Это скорее свойство Cycles, blender render быстро работает и для такой модели может быть был бы даже достаточен. Там и другие render можно подключать. Упоминают и vray, но я сам его не пробовал, тут видимо дело вкуса, я, например, эту модель для проверки только что успешно перегнал для работы с POV-Ray render, так как там уже была готовая Земля со звёздами и облаками.
nemilya
14.04.2016 00:20Вот здесь объясняется различие между Cycles и Blender Internal.
Суть в том что Blender Internal работает на базе rasterization методики — суть которой прорисовка видимых камерой объектов, без учета поведения света. Это позволяет достаточно быстро рисовать.
В свою очередь Cycles работает на базе алгоритма path tracing где рассчитывается каждый луч что попадает в камеру. Это занимает дольше времени, но позволяет получить более реалистичные изображения.
Подробнее: Трассировка пути (path tracing), оттуда:Трассировка пути (англ. path tracing) — методика рендеринга в компьютерной графике, которая стремится симулировать физическое поведения света настолько близко к реальному, насколько это возможно. Трассировка пути является обобщением традиционной трассировки лучей (англ. ray tracing), алгоритм которой трассирует лучи в направлении от виртуальной камеры сквозь пространство; луч «отскакивает» от предметов до тех пор, пока полностью не поглотится или рассеется. Качество изображений, получаемых при помощи метода трассировки пути, как правило, лучше, чем качество изображений, полученных другими методами рендеринга, однако трассировка пути требует гораздо больших затрат производительности.
Трассировка пути является наиболее простым, наиболее точным с физической стороны и наиболее медленным по производительности методом рендеринга. Трассировка пути естественным способом воспроизводит множество оптических эффектов, которые тяжело достижимы или вообще недостижимы другими методиками рендеринга: построение теней, глубина резко изображаемого пространства (англ. depth of field), шевелёнка (англ. motion blur), каустика, ambient occlusion и непрямое освещение.quverty
14.04.2016 02:11Спасибо, но я это тоже читал, они ещё пишут
Neither engine is necessarily «better», they both have strengths and weakness.
Дополнительная проблема в том, что Cycles пока ещё в стадии разработки и есть другие решения, хотя и не «из коробки» об одном из которых я и написал.nemilya
14.04.2016 11:53Полностью согласен — что у каждого рендера есть свои плюсы и минусы. И поэтому в идеале, необходим опыт работы и в том и другом — чтобы можно было выбрать целесообразный рендер для конкретного случая.
Так же надо понимать, что Blender и Cycles — это открытые и бесплатные решения.
Вот несколько сравнений Blender Internal и Cycles (2011 год):
Blender Internal (12 min) vs Yafaray (18 min) vs Cycles (9 min with GTX460) (увеличить):
От 2012 года статья сравнение тех же движков BI vs. Cycles vs. Yafaray — an Artist's Observation (увеличить)
Ещё одно сравнение (2012 год): Render Engines (увеличить)
Оттуда, почему они (анимационная студия) выбрали Cycles для production (уже в 2012 году):
why we chose to use Cycles in our production1.-Inmediacy: Cycles makes it easier to achieve satisfactory results shading and lighting wise. Even though the avarage render time per image is higher than that of Blender Internal.
2.-Physical Correction: Cycles wasn't designed to be 100% correct in terms of physical accuracy. But the nuances when it comes to lighting (specially indirect lighting) have proven crucial to getting the realism we are looking for. All these nuances of the displacement map work really well in Cycles, such as the light bouncing and lighting and shading small but important details.
3.-Interactivity: Its quite exciting when you think of all the pipeline possibilities a interactive render engine has to offer. Just imagine the animators working with an almost final render-looking-like environment in their viewports. The artistic potential and control it offers are a no brainer. Being given feedback by the art director in real time or knowing right away when a texture works or not are just a few of the advantages.
4.-R&D: What we basically mean by this is the opportunity we have to test this render engine in a real production. Discovering new ways of achieving results and contributing to the development of the blender community are some of the perks of this process.quverty
14.04.2016 14:13Ну как же про них могут мало знать, если они прямо в дистрибутиве а остальные надо ставить. Да и рекламируют они его активно. Я вообще несколько перепробовал но в основном использую belnder render. Мне кажется как раз Cycles иногда используют напрасно.
Вот в вашем варианте геометрия как раз такая, что Cycles может раскрыть нежелательные вещи — у вас же модель в пустом пространстве висит рядом с картинкой, если какие-то пути дополнительные считать, это не приводит к правильному распределению освещения. Я поэтому и написал про модель с круглой Землёй под кораблём и звёздным куполом над ним. Вот тут пересчёт множества путей был бы обоснован.nemilya
14.04.2016 15:11Вот убрал красные колпачки (без них он летел в космосе), немного изменил поворот, и тени:
Вообще изначально, я хотел сделать и саму Землю из космоса с помощью Blender по этому туториалу How to Make Earth (Cycles) (есть перевод на русский), и взять звездное небо отсюда. Но по времени не получилось, поэтому сделал минимум.
Буду благодарен — если вы сделаете рендеринг сцены, для сравнения, на других движках.quverty
14.04.2016 15:20У меня железа нет под GPU rendering, а POV-Ray из-за своей эффективности все ядра так подвешивает, что другими задачами уже не займешься, а мне и работать надо.
quverty
14.04.2016 17:02Ещё пара моментов. Я выше написал, почему думаю, что эта сцена в принципе не будет правильно выглядеть, стоит ли тестировать без переделки? И второе, посмотрите на sketchfab модели того-же helijah (это один из разработчиков FlightGear) и какие-нибудь ещё профессионально сделанные сцены — возникает вопрос, если такого хорошего качества можно добиться даже в режиме реального времени, может и правда лучше разобраться с правильной разработкой сцены, не надеясь что машина всё за нас сделает если её подольше заставить поработать?
quverty
14.04.2016 22:01+1Вот, я просто заменил плоскую картинку из вашего файла на HDRI панораму не особо хорошего качества, которую когда-то сгенерировал для проверки скриптом на POV-Ray (при этом даже такой занимает около 70 Мб) и использовал Cycles
с 100 сэмплами, что-то около часа. Другие варианты (YafaRay, LuxRender) для последней версии blender у меня просто не установлены за ненадобностью, я их тестировал на каких-то предыдущих версиях.
nemilya
14.04.2016 22:21Спасибо, красота)
quverty
14.04.2016 22:24Главное, сразу заметно что вы забыли вставить стёкла в иллюминаторы. Жестоко.
nemilya
15.04.2016 09:46Да, иллюминаторы надо добавить из соответствующих моделей (они смоделированы).
По-хорошему и космонавт бы внутри не помешал :) — была идея 3д рендеринга — как вид внутрь кабины корабля (в которой свет от приборов) из космоса.
Или в будущем — в открытом космосе автронавт, вот например, есть моделка Apollo Astronaut.quverty
15.04.2016 12:22И там ещё про тени внизу в комментарии верно подметили. У меня создаётся впечатление что Cycles пытается рендерить рассеяние в атмосфере, но не понял, как это отключить.
nemilya
15.04.2016 14:29вот похожее
фото с МСКquverty
15.04.2016 14:39Но там же явно видны тени от элементов конструкций, а на рендеринге их нет. Правда у меня на панораме неоправданно яркий Млечный путь и от него может идти дополнительная засветка.
quverty
15.04.2016 15:15Вроде понял, «солнце» у них для земных условий. Чтобы приблизительно моделировать тени можно точечный источник использовать единицах в 100 от объекта, иначе интенсивности не хватит.
BulldozerBSG
13.04.2016 12:05вышла русскоязычная (оригинальная, не переводная) книга по Blender: «Прахов А.А. Самоучитель Blender 2.7»
А подскажите где вышла? версия 2.7
А то поисковики ответа не дают, только по старой версии 2.6nemilya
13.04.2016 12:53Я сам некоторое время назад купил электронную книгу — Прахов А. «Самоучитель Blender 2.6» — для начинающих вполне подходит.
Пообщался с издательством по поводу продолжения, они мне ответили, что в апреле выйдет по версии «2.7», сказали, что можно анонсировать на апрель, думаю скоро появится
Abbath
13.04.2016 23:14В космосе границы света и тени более резкие, так как там нет плотной атмосферы.
Wedmer
Для тех, у кого есть Steam, Blender проще поставить через него. И не надо будет заморачиваться с апдейтами.
amarao
Вообще, проще всего sudo apt-get install blender. Оно и зависимости притащит, и апдейты если надо.
Wedmer
Ваше утверждение верно только для debian based дистрибутивов. И то не для всех. В классическом Debian sudo по умолчанию не используется.
utoplenick
Для теч, у кого fedora — blender проще всего поставить из репозиториев. P.S. Это не значит что, в репах других дистров его нет.
Wedmer
Сам сижу на этом дистрибутиве, но надо же помочь товарищам на системах без пакетного менеджера.
daggert
Вот я даже не знаю как вас благодарить! Два года работаю в блендере и не знал что он в стиме есть!