Рендеринг сложных сцен на GPU. Как рендерить в блендер

Чтобы сохранить полученное изображение, нажми на нижней панели Image -> Save as Image, либо нажми горячую клавишу F3. Выбери папку для сохранения и напиши название файла. Нажми Save as Image.

Товарищи, привет!

Была у меня мысль сделать какой-либо материал по Взертосу, возможно, с нотками обучения или из ряда «как это было, но я не помню, но постараюсь повторить». Так уж вышло, что я человек больше графической направленности и поэтому хотелось рассказать либо про комиксы (что кстати я мельком сделал), либо про 3Д рендер, моделирование и около того. Делал 3Д\рендеры я в Blender3D, а уроков и статей по этому инструменту примерно овердофига. Т.е. смысла делать именно «урок» я не видел, но хотел было поделиться как делалось, вдруг кому будет интересно или кто-то захочет повторить или даже подсказать как можно было иначе сделать это-вот.

Думал сделать видео для наглядности. В силу того, что гласа у меня нет, то было бы очень нудно. Ещё нуднее, чем 3 подземелья во Взертосе!
Потом было подумал, что вариант со пробной статьёй был бы не так уж и плох, учитывая, что в чате Гамина мне посоветовали тоже самое.

Настройка сцены

Стандартная сцена Блендера выглядит примерно вот так:

screen_1.webp

Обычно я всегда удаляю сразу всё т.к. в самом начале оно всё мешает. Особенно эта лампа, которая светит прямо в глаза! (нет)

Для Взертоса словно пришёл кинооператор со всеми инструментами и начал настраивать съёмочную площадку.
Особенностью является то, что мне необходимо было получить рендер модели в 8 направлениях. По большей части это дело анимации, но для удобства был добавлен объект «окружность» ( Add — Mesh — Circle ) и затем для удобства был удалён полигон(но не вершины), была добавлена форма стрелки из вершин и граней.

screen_2.webp

Зачем же этот объект нужен? Он выполняет роль подставки, которую можно крутить, примерно как у скульпторов. Перед этим конечно нужно будет привязать объект к этой «подставке», но об этом немного позже.

Камерамэн

У нас ничего не получится, если не будет «ока» т.е. камеры. И вот тут есть очень важный момент в настройках как камеры, так и расположения и привязок.

Камера установлена в положении (XYZ) = (0.0, -26.0, 15.0). Почему именно это положение? Ну во-первых цифры более-менее «круглые», а это мне нравится. А во-вторых (но на самом деле более важная часть) — угол в 60 градусов. Но важно отметить, что 60 градусов здесь относительно оси Z, которая вертикальная и идёт вверх. Т.е. если рассчитывать угол от «пола», то он будет равен 30 градусам.

У камеры так же есть своя «пустышка» или же «центр взгляда», который действительно помогал мне в некоторые моменты. По сути с её помощью просто удобнее делать сдвиг камеры по Z (для итогового изображения получается по оси Y).

screen_3.webp

Так же очень важен момент, что камера должна иметь ортогональную проекцию и верный ортогональный размер. Вот мои настройки:

screen_cam.webp

Они могут меняться в зависимости от нужд. Например, при рендере локации Медитастоун параметр Scale был больше 100, чтобы вся локация влезла в «объектив».

Для удобства оперирования объектами, рендером и вообще порядка в сцене используются (мной) слои.

screen_layers.webp

Можно выделить объекты, нажать на M и выбрать на какой слой отправить объект. Это не те же самые слои, что и в Фотошопе, Гимпе или Крите. Тут они скорее играют роль «слотов», нежели слоёв. Жаль нельзя добавить больше, чем доступно с самого начала.
Таким образом я разделяю часть «камера», «подставка» и собственно сами модели на других слоях.

Солнце светит. Или не солнце. Или не светит.

Третий «системный» слой это 2 источника направленных света. Один из них основной свет «солнца», а второй вспомогательный, чтобы модель не была засвечена только с одной стороны.

По сути установки всё готово.
Свет, камера. осталось только прокричать «мотор», да вот только снимать нечего — нет модели, а у неё нет анимации. Но даже если бы и были, то это ещё не конец. Далее не менее важный момент .

Blender обновляется и развивается очень динамично, вследствие чего регулярно появляются новые версии программы. Однако, скачав с сайта Blender очередной релиз, всегда необходимо настроить его удобным для себя образом.

Рендеринг сложных сцен на GPU

render-layers1

Часто при рендеринге сложных сцен можно увидеть черное изображение и примерно следующее сообщение:

Это происходит потому, что Вы дали блендеру задачу, которую он не может выполнить на Вашем железе. Но, прежде чем бежать в магазин и покупать новую видеокарту за 500$ Вы можете попробовать использовать слои (Render Layers).

Многие блендеристы знаю о Render Layers и периодически их используют. Но знаете ли Вы, что с их помощью можно разбить сложную сцену на множество более мелких частей?

render-layers2

Данная сложная сцена будет выступать в качестве примера:

Эта сцена — монстр поедания памяти! Она так беспощадно пожирает память, что даже на GTX Titan с 6GB памяти она не может быть отрендерина целиком и за раз. Однако, с помощью Render Layers сцену удалось разбить на части и выполнить рендеринг. Вот как это сделать…

Шаг №1 Разделение сцены

Целью данного шага является разделение сцены на такие куски, которые Ваша видеокарта способна «переварить». Поэтому, первым делом нужно определится, как вы будете разбивать сцену:

После, можно приступать к следующему шагу…

Scene
Определяет какие физические слои будут рендерится в Вашей сцене. Однако, они не делают ничего со слоями рендера и просто будут отображать все слои в окне 3D-вида.
Layer
Определяет какие физические слои будут включены в данный слой. В данном случае первые 5 слоев определяют передний план сцены.
Exclude
В этом вся суть! Здесь мы указываем слои, которые не должны рендерится на данном слое (инверсное выделение относительно секции Layer). Данная опция указывает Blender, что необходимо исключить их из памяти. Не упустите данный шаг из виду, иначе все усилия будут напрасны.

Шаг №3 Включить прозрачность (Transparency)

render-layers6

Так как мы будем собирать все данные слои вместе, важно, чтобы Blender рендерил их с прозрачным фоном. Находится данная опция на вкладке Render > Film > Transparent.

render-layers7

Не удивляйтесь, если по завершению рендеринга Вы увидите лишь часть Вашей сцены. Это отображается Ваш первый слой.

Blender обновляется и развивается очень динамично, вследствие чего регулярно появляются новые версии программы. Однако, скачав с сайта Blender очередной релиз, всегда необходимо настроить его удобным для себя образом.

Понятие рендер и рендеринг

В этом разделе ты научишься получать из своих моделек красивые картинки! Их будет легко показать в любое время, даже если нет возможности зайти в Blender. Сначала необходимо узнать несколько важных понятий.

Рендер — это термин в компьютерной графике, обозначающий тип программ для получения изображения с трехмерной сцены с помощью программы для работы с трехмерной графикой (например, Blender). Также рендером часто называют результат рендеринга — то есть картинку.

Существует много рендер программ. Они отличаются скоростью обработки, алгоритмом расчета света и качеством. Сейчас мы будет работать с Cycles Render.

Рендеринг — это процесс получения изображения с помощью рендера. То есть получение 2D картинки из нашей 3D сцены.

Рендеринг может занимать разное количество времени: от пары секунд до нескольких часов, дней и даже недель. Все зависит от сложности сцены и настроек. Для получения качественной картинки требуется выполнить два условия: настроить материалы и освещение.

Без чего невозможен рендер?

Есть ТРИ основных составляющих, без которых невозможен рендер:

  1. Камера. Непосредственно она определяет вид, который будет отрендерен
  2. Объект. Формально рендер без объектов сделается, но… он будет пустой!
  3. Источник освещения. Если мы не осветим нашу сцену, то в результате получим черный экран вместо рендера.


Если у тебя в сцене нет камеры или источника света, то добавь их. Пока что ставь источник света Point, далее мы рассмотрим все типы источников света и их настройки.

Если ты хочешь хорошо настроить камеру, то посмотри следующую тему: настройка камеры.

Как сделать рендер?

Для того, чтобы запустить процесс рендеринга, нажми в верхней панели Render -> Render Image, либо воспользуйся горячей клавишей F12. Начнется рендеринг, подожди, пока не будет готова вся картинка.

Перезагружаем Blender. Открываем какой-нибудь тестовый проект и переходим в секцию «Rendering» (позиция 1).
В качестве тестового проекта Вы можете взять cornell-box-cycles, скачав отсюда или с wiki-раздела сайта www.nixzeya.ru.net.

Установки рендера

В этом проекте я использовал так называемый «old-school style» т.е. намеренный понижение размера итогового изображения, никакого сглаживания и даже было думал ограничить цвет.

Собственно в этом и заключается часть настроек: снижаем размер итогового изображения (конкретно в этом примере это 38% от 256х256), убираем сглаживание anti-aliasing, во вкладке Shading ставим Alpha: Transparent (по стандарту там Sky).

Можно рендерить! Но… постойте! Где же «секрет рендера»?

«Секрет рендера»

То, к чему я пришёл уже почти после первых версий игры. Когда-то эта идея забылась, но вспоминалась, когда я хотел было сделать свою ДДНТ (где кстати тоже есть Взертос), в том проекте я ориентировался на графику Доты2 и тут сидела подсказка, суть которой в том, что…

Всё что ниже, ближе к полу — темнее, всё что выше — светлее. Используй умный градиент, дубина!

Суть простая. Когда рендрится картинка, то она как бы «пустая» т.е. да, там есть свет, тени, но чего-то не хватает.

Нужно просто домножить картинку на чёрно белый градиент — легкая мысль, но реализация не так проста.
Если просто «затемнить» по градиенту, то это будет «не торт» т.к. геометрически неверно.

Следующей мыслью было то, чтобы взять координату по Z и уже на основе этой координаты считать градиенты. И собственно это помогло. Далее нужно было ещё придумать как же так на каждый материал это ставить. НА КАЖДЫЙ ?! ЧТО?! ДА У МЕНЯ 100500 МОДЕЛЕЙ УЖЕ ГОТОВО.

Предыдущий опыт подсказывал мне, что можно воспользоваться каким-то методом пост-процесса. И хорошо было бы ставить на все объекты один материал перед рендером, эх, вот если бы Блендер уме… постойте! Так он умеет! Да, можно поставить на всю сцену один материал, при этом не запароть данные сцены! Вот это я и называю настоящими слоями — можно отрендерить разные части сцены (но с одной камеры видимо) и потом по своему усмотрению их «композировать».

Приветствуются любые вопросы относительно этой темы.

Было бы вам интересно такое и подобное? Про Блендер и всякое около разработческое.

Перезагружаем Blender. Открываем какой-нибудь тестовый проект и переходим в секцию «Rendering» (позиция 1).
В качестве тестового проекта Вы можете взять cornell-box-cycles, скачав отсюда или с wiki-раздела сайта www.nixzeya.ru.net.

Шаг 05: Рендер обеих сцен

Теперь, когда все материалы настроены и назначены, пришло время отрендерить обе сцены. Проще всего это сделать из композитора, поскольку мы будем «умножать» одну сцену на другую.

Поэтому я переключился в композитор и добавил ноду Input > Render Layers в обе сцены, указав ее в выпадающем меню каждой ноды.

Для рендера необходимой сцены я просто нажимал на значок Camera в ноде Render Layer.

3D_papa_kak_otrenderit_setku_v_blender_06

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

Настройка и проверка

Подразумевается, что пользователь ориентируется в менюшках Blender`а. Запускаем Blender и переходим в меню «User Preferences».

Далее сдвигаем нижнюю границу верхнего меню и переходим в «System». Спускаемся вниз этой страницы и слева находим секцию «Compute Device». Должна появиться кнопка «CUDA» (позиция 1). Активируем её и ниже должна появиться модель карты (позиция 2). Далее сохраняем настройки путём нажатия на «Save User Settings».

Перезагружаем Blender. Открываем какой-нибудь тестовый проект и переходим в секцию «Rendering» (позиция 1).
В качестве тестового проекта Вы можете взять cornell-box-cycles, скачав отсюда или с wiki-раздела сайта www.nixzeya.ru.net.

Выбираем метод рендеринга «GPU compute» (позиция 2) и сам рендерер «Cycles Render» (позиция 3). Запускаем рендеринг и наблюдаем за ходом процесса. Для сравнения, проделываем проверку с рендерингом только на центральном процессоре. На этом настройка завершена.

Особенность в производительности

Автор повторил настройку на другом компьютере, но уже с современным процессором. Результат оказался парадоксальным:

Результат рендеринга сцены посредством Cycles и центрального процессора.
Время обработки: 112 секунд (1 минута 52 секунды).
Результат рендеринга сцены посредством Cycles и технологии CUDA, использующей процессор видеокарты.
Время обработки: 202 секунды (3 минуты 22 секунд).

На стенде использовался процессор с такими характеристиками:

На машине используется программная регулировка частоты процессора и когда идёт непосредственно работа по рендерингу, частота повышается до максимума. На машине использовалась такая же программная конфигурация, что и при написании статьи.

В данном случае, рендеринг посредством центрального процессора на порядок быстрее, чем через видеокарту. Если свести результаты обоих тестов, то получается такая картина:

Процессор Кол-во ядер Bogomips Размер кэша, Кб Видеокарта Время рендеринга CPU, сек. Время рендеринга CUDA, сек.
Intel Celeron CPU E1500 @ 2.20GHz 2 4388.89 512 GeForce GT630, 4ГБ 443 197
Intel Pentium CPU G2010 @ 2.80GHz 2 5587.41 3072 GeForce GT630, 2ГБ 112 202

Обе машины показали практически одинаковые значения времени рендеринга через CUDA — можно предположить, что это физический предел видеокарты.

Выводы: если процессор слабенький, то технология CUDA даст значительный прирост производительности на бюджетных видеокартах, однако современные процессоры среднего класса выигрывают в производительности у этих бюджетных видеоадаптеров.

По сути установки всё готово.
Свет, камера… осталось только прокричать «мотор», да вот только снимать нечего — нет модели, а у неё нет анимации. Но даже если бы и были, то это ещё не конец. Далее не менее важный момент…

Telegram

Общие вопросы про Blender

Общие вопросы про 3d графику

Какие мне еще могут понадобиться программы?

Blender — это opensource-программа для 3d моделирования, скульптинга, анимации, рендера и многого другого.

Посмотрите этот ролик про создание мультфильма Spring или этот про создание мультфильма Sprite Fright. Там возможности Blender сразу станут понятны.

Да, его можно просто скачать, без регистрации и SMS на сайте https://blender.org/download. Также есть архив старых версий, вот тут: https://download.blender.org. Можно скачивать alpha и beta версии: https://builder.blender.org/download/daily/.
Более того, он распространяется под лицензией GPL v2 и его разрабатывает Blender Foundation под руководством отца-основателя: Тона Рузендаля.

Но ведь его все равно рано или поздно купит Autodesk?

Нет, так не выйдет. Лицензия GPL v2 это исключает.

На каких платформах Blender доступен?

Почему лучше использовать английский интерфейс программы?

  1. Подавляющее большинство обучающих курсов, уроков и статей написаны именно под английский интерфейс, как следствие вам будет намного проще повторять действия за автором, не теряя время на перевод и поиск этой функций в русскоязычном интерфейсе;
  2. В процессе изучения программы вы сможете подтянуть свой английский!
  3. Так вы повышаете шанс на быстрое решение своей задачи при обращении за помощью: даже в русскоязычных сообществах английский интерфейс программы является негласным стандартом.

Можно пойти на компромис: оставить весь интерфейс на английском, но включить русские подсказки. Это можно сделать через Preferences — Interface — Language (Русский), но оставить только чекбокс Affect — Tooltips.

Сначала нужно понять, что такое 2d. Можно делать плоские модели, или располагать их так, что они будут выглядеть плоскими, делать в них риг, анимацию и это будет 2d. Но есть и классический инструмент для 2d: это новый Grease Pencil, это очень мощный инструмент для 2d рисования и анимации. С его помощью был сделан ролик Hero. А еще с его помощью можно делать вот такие акварели.

У Blender есть богатое Python API — с помощью Python можно писать программы, которые работают прямо внутри Blender и имеют доступ практически ко всем его функциям. Документация по API доступна здесь: https://docs.blender.org/api/current/. Именно с помощью Python API написано большинство addon-ов для Blender.

При общении в чатах и на формумах для того, чтобы проиллюстрировать свой вопрос, часто требуется сделать скриншот или даже записать скринкаст. Многие не знают, что в операционных системах уже есть встроенные средства для этого и фотографируют экран на телефон. Так делать не нужно: качество картинки сильно страдает, появляется муар и понять что на ней довольно сложно. Вместо этого нужно использовать средства ОС.
На Windows: нажмите Win + G и выберите нужный пункт.
На macOS: нажмите Command + Control + Shift + 4 (область экрана сразу попадет в буфер обмена ) или Command + Shift + 3 или 4 (будет сохранен в файл).

Кроме того, существуют специальные програмы для этого:

  • Клиент Яндекс.Диск содержит встроенное средства захвата экрана
  • ShareX (только Windows), есть версия в Steam
  • LightShot — кроссплатформенная
Оцените статью
bestgamemobile.ru