Робототехника интересна тем, что это синтез многих направлений — программирование, конструированием, математика, физика и так же есть моделирование. В том году, ко дню Космонавтики мы делали небольшой пост про моделирование корабля Восток-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:

Комментарии (34)


  1. Wedmer
    12.04.2016 17:30
    +1

    Для тех, у кого есть Steam, Blender проще поставить через него. И не надо будет заморачиваться с апдейтами.


    1. amarao
      12.04.2016 21:29
      +7

      Вообще, проще всего sudo apt-get install blender. Оно и зависимости притащит, и апдейты если надо.


      1. Wedmer
        13.04.2016 09:37

        Ваше утверждение верно только для debian based дистрибутивов. И то не для всех. В классическом Debian sudo по умолчанию не используется.


    1. utoplenick
      13.04.2016 09:02

      Для теч, у кого fedora — blender проще всего поставить из репозиториев. P.S. Это не значит что, в репах других дистров его нет.


      1. Wedmer
        13.04.2016 09:30

        Сам сижу на этом дистрибутиве, но надо же помочь товарищам на системах без пакетного менеджера.


    1. daggert
      13.04.2016 09:02

      Вот я даже не знаю как вас благодарить! Два года работаю в блендере и не знал что он в стиме есть!


  1. cronk
    13.04.2016 09:03

    Про установку аддонов:
    Если папку «io_scene_ac3d» сжать в zip архив и указать на него (File > User Preferences > вкладка Add-ons > кнопка Install from file), то Блендер сам положит аддон куда надо и он появится в списке аддонов.
    Разработчики давным давно сделали удобный инструмент для установки скриптов, но народ упорно раскладывает всё в ручную =)


    1. nemilya
      13.04.2016 09:03

      Спасибо, за ценное замечание


  1. vidyacat
    13.04.2016 09:03
    +1

    картинка в шапке выглядит как-то не очень.


    1. nemilya
      13.04.2016 09:04
      -1

      По сути, статья про то, что каждый может её улучшить)


    1. nemilya
      13.04.2016 10:30

      Вот, воспользовался render.st (render farm) — и фрагмент сцены (с кораблем) отрендерил на 400 Samples (заняло на сервисе — 00:42:28):



      Для тех, кто не хочет ждать)


      1. lifestar
        13.04.2016 10:56
        +2

        Вот этот маленький кусочек картинки рендерился 42 минуты?


        1. nemilya
          13.04.2016 11:43

          Время рендеринга зависит от сцены и настроек — можно за 5 минут, можно за пару часов.

          Вот статья, объясняющая основы работы Cycles Render, и что такое Samples: Как работает трассировщик пути в Cycles.


      1. fijj
        13.04.2016 11:31
        +2

        Сам блендером не пользуюсь, в основном мах + vray или mental. Но 42 минуты на ферме для такой сцены, это слишком много. Что то явно с настройками рендера накрутили не того


        1. quverty
          13.04.2016 16:11

          Это скорее свойство Cycles, blender render быстро работает и для такой модели может быть был бы даже достаточен. Там и другие render можно подключать. Упоминают и vray, но я сам его не пробовал, тут видимо дело вкуса, я, например, эту модель для проверки только что успешно перегнал для работы с POV-Ray render, так как там уже была готовая Земля со звёздами и облаками.


          1. 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 и непрямое освещение.


            1. quverty
              14.04.2016 02:11

              Спасибо, но я это тоже читал, они ещё пишут

              Neither engine is necessarily «better», they both have strengths and weakness.

              Дополнительная проблема в том, что Cycles пока ещё в стадии разработки и есть другие решения, хотя и не «из коробки» об одном из которых я и написал.


              1. 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 production
                1.-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.


                1. quverty
                  14.04.2016 14:13

                  Ну как же про них могут мало знать, если они прямо в дистрибутиве а остальные надо ставить. Да и рекламируют они его активно. Я вообще несколько перепробовал но в основном использую belnder render. Мне кажется как раз Cycles иногда используют напрасно.
                  Вот в вашем варианте геометрия как раз такая, что Cycles может раскрыть нежелательные вещи — у вас же модель в пустом пространстве висит рядом с картинкой, если какие-то пути дополнительные считать, это не приводит к правильному распределению освещения. Я поэтому и написал про модель с круглой Землёй под кораблём и звёздным куполом над ним. Вот тут пересчёт множества путей был бы обоснован.


                  1. nemilya
                    14.04.2016 15:11

                    Вот убрал красные колпачки (без них он летел в космосе), немного изменил поворот, и тени:


                    Вообще изначально, я хотел сделать и саму Землю из космоса с помощью Blender по этому туториалу How to Make Earth (Cycles) (есть перевод на русский), и взять звездное небо отсюда. Но по времени не получилось, поэтому сделал минимум.

                    Буду благодарен — если вы сделаете рендеринг сцены, для сравнения, на других движках.


                    1. quverty
                      14.04.2016 15:20

                      У меня железа нет под GPU rendering, а POV-Ray из-за своей эффективности все ядра так подвешивает, что другими задачами уже не займешься, а мне и работать надо.


                    1. quverty
                      14.04.2016 17:02

                      Ещё пара моментов. Я выше написал, почему думаю, что эта сцена в принципе не будет правильно выглядеть, стоит ли тестировать без переделки? И второе, посмотрите на sketchfab модели того-же helijah (это один из разработчиков FlightGear) и какие-нибудь ещё профессионально сделанные сцены — возникает вопрос, если такого хорошего качества можно добиться даже в режиме реального времени, может и правда лучше разобраться с правильной разработкой сцены, не надеясь что машина всё за нас сделает если её подольше заставить поработать?


                    1. quverty
                      14.04.2016 22:01
                      +1

                      Вот, я просто заменил плоскую картинку из вашего файла на HDRI панораму не особо хорошего качества, которую когда-то сгенерировал для проверки скриптом на POV-Ray (при этом даже такой занимает около 70 Мб) и использовал Cycles
                      с 100 сэмплами, что-то около часа. Другие варианты (YafaRay, LuxRender) для последней версии blender у меня просто не установлены за ненадобностью, я их тестировал на каких-то предыдущих версиях.


                      1. nemilya
                        14.04.2016 22:21

                        Спасибо, красота)


                        1. quverty
                          14.04.2016 22:24

                          Главное, сразу заметно что вы забыли вставить стёкла в иллюминаторы. Жестоко.


                          1. nemilya
                            15.04.2016 09:46

                            Да, иллюминаторы надо добавить из соответствующих моделей (они смоделированы).

                            По-хорошему и космонавт бы внутри не помешал :) — была идея 3д рендеринга — как вид внутрь кабины корабля (в которой свет от приборов) из космоса.

                            Или в будущем — в открытом космосе автронавт, вот например, есть моделка Apollo Astronaut.


                            1. quverty
                              15.04.2016 12:22

                              И там ещё про тени внизу в комментарии верно подметили. У меня создаётся впечатление что Cycles пытается рендерить рассеяние в атмосфере, но не понял, как это отключить.


                              1. nemilya
                                15.04.2016 14:29

                                вот похожее

                                фото с МСК
                                image


                                1. quverty
                                  15.04.2016 14:39

                                  Но там же явно видны тени от элементов конструкций, а на рендеринге их нет. Правда у меня на панораме неоправданно яркий Млечный путь и от него может идти дополнительная засветка.


                                1. quverty
                                  15.04.2016 15:15

                                  Вроде понял, «солнце» у них для земных условий. Чтобы приблизительно моделировать тени можно точечный источник использовать единицах в 100 от объекта, иначе интенсивности не хватит.


                          1. quverty
                            15.04.2016 15:44
                            +1

                            С тенями

                            картинка


  1. BulldozerBSG
    13.04.2016 12:05

    вышла русскоязычная (оригинальная, не переводная) книга по Blender: «Прахов А.А. Самоучитель Blender 2.7»


    А подскажите где вышла? версия 2.7
    А то поисковики ответа не дают, только по старой версии 2.6


    1. nemilya
      13.04.2016 12:53

      Я сам некоторое время назад купил электронную книгу — Прахов А. «Самоучитель Blender 2.6» — для начинающих вполне подходит.

      Пообщался с издательством по поводу продолжения, они мне ответили, что в апреле выйдет по версии «2.7», сказали, что можно анонсировать на апрель, думаю скоро появится


  1. Abbath
    13.04.2016 23:14

    В космосе границы света и тени более резкие, так как там нет плотной атмосферы.