пятница, 15 июля 2011 г.
Небольшое исследование
По поводу скорости рендера и числа ядер сейчас потестил немного:
1 тайл - 0.8 с
2 тайла - 0.53 с
3 тайла - 0.34 с - минимальное время (у меня трёхядерные процессор)
4 тайла - 0.36 с
5 тайлов - 0.38 с
10 тайлов - 0.37 с
15 тайлов - 0.41 с
20 тайлов - 0.45 с
25 тайлов - 0.56 с
100 тайлов - 1.62 с
среда, 13 июля 2011 г.
Nuke. Изучаем
Взял фотку, слегка совместил с 3D в Блендере, отрендерил это дело в EXR с кучей пассов и загнал в Нюк...
Нюк крут, правдо иногда поведение его меня ставит в тупик - особенно проблематична для меня нода Merge. Ну да ладно, разберёмся.
четверг, 7 июля 2011 г.
Оптимизация рендера простой сцены в Blender 2.58
Но вот сейчас делаю заочнику визуализацию для какого-то предмета в универе - что-то о сплайнах. Сцена простейшая - несколько торов, в которые изгибаясь входит 1-вертексный меш, анимированный вдоль сплайна, оставляя за собой след из разноцветных частиц - линия как будто растёт. Частицы эти рендерятся как Halo, теней нет, сложных материалов и геометрии тоже. Итого один кадр в 720p - рендерится 1.7 секунды. Вроде бы быстро, но кадров всего 1000. Полчаса на такую херню, простите меня!
Взял и в настройках рендера в панельке Perfomance выставил количество тайлов в 3х1 - у меня трёхядерный процессор, и таким образом на каждый кадр ядрам сразу выдаётся вся информация, которую они будут "думать" о текущем кадре, не перебивая работу подгрузкой информации о новом тайле. Ну, это если объяснять "на пальцах". И даже не уверен, что всё именно так.
Но время рендера снизилось до 0.7 секунды. Уже лучше.
вторник, 31 мая 2011 г.
Camera-mapping: как это сделано
КамераМэппинг позволяет "оживить" фотографию, даёт возможность создать из одного статичного кадра анимацию с небольшим панарамированием/трансфокацией. На фотографии определяется фон и объекты на разных планах. Все эти дела вырезаются в отдельные изображения с альфа-каналом. Я решил организовать один объект (турист в красной куртке) и фон (всё остальное). В этом деле ваш лучший друг - Stamp Tool в Фотошопе.
Затем необходимо установить камеру в сцене так, чтобы она более менее соответствовала позиции камеры при съёмке. Для этого стоит посчитать "правильную" фокусную длину камеры. Так как съёмка велась камерой с не фул-фрэйм матрицей, нужно откорректировать фокусное расстояние, записанное в EXIF-данные. У меня фотик с матрицей 5.9 мм шириной (Canon SX110), поэтому 16 мм в ЭКСИФе надо домножить на 36/5,9 = 6,1. Затем, это число прописать в настройках камеры Блендера. Можно не считать в калькуляторе, а просто прописать выражение 16*6,1 в строке значения - Блендер сам посчитает его.
Затем надо включить отображение изображения во вьюпорте (только для камеры) и совместить выставить позицию камеры. Очень хорошо, если есть возможность ориентироваться по таким элементам, как горизонт (чтобы с ним проще совместить кадр, можно задрать количество линий сетки вьюпорта), параллельные и перпендикулярные линии на ровных горизональных поверхностях. Ещё можно специально измерять место съёмки, угол и положение камеры... но для начала можно обойтись и без таких обострений.
Скажу по секрету - в предыдущем посту я ошибся в фокусном растоянии камеры более чем в два раза и заметил это только сейчас, когда писал эти строки. Ниже будет исправленный вариант.
Затем создаётся примитивная геометрия - плоскость земли и грубая, примерная модель человека (только та сторона, которая видима на фотке). Модель должна слегка выступать за контуры изображения - это скомпенсируется прозрачностью текстуры. Стоит заметить, что когда земля выполнена плоскостью с полигонами большой площади - вылазят косяки мэппинга текстуры, поэтому стоит применить несколько операций Subdivide.
Чтобы определить позицию солнца, я установил лампу типа Sun на макушку человеку и направил его так, чтобы линия направления указывала на конец тени человека. Для облегчения ориентирования я создал пустышку, которую установил в конец тени. Из ортогональных проекций в этом случае очень просто корректно сориентировать положение солнца. Правда, солнце понадобится нам только тогда, когда в сцену добавятся 3Д-объекты, которых на фотке не было и которые требуется реалистично осветить, чтобы они совпали по свету с фотографией. А если условия освещения были другими (пасмурно, искусственный свет), то, возможно, солнце не подойдёт, и придётся искать другие варианты.
Теперь стоит создать материалы. Пока их два - человек и поверхность земли.
Оба создаются одинаково. Для того, чтобы правильно проецировалась текстура, из вида камеры, выделив человека жмём пробел и выполняем команду Add Sticky. Затем такое же действие повторяем и с поверхностью земли. Это создаст на объекте привязку к текстуре, соответствующую его положению в кадре. В отличие от проецирования типа View (Window), Sticky "цепляет" координаты в момент своего добавления и держит их постоянными, тягая вслед за объектом.
Так как изображение на фотке уже максимально фотореалистично и освещено в соответствии с законами природы, нам не нужно настраивать материалы - достаточно просто указать Shadeless и включить прозрачность, добавить текстуру, установить мэппинг в Sticky и влияние на прозрачность. Всё.
Теперь можно сделать тестовый рендер и посмотреть, что к чему:
среда, 1 декабря 2010 г.
пятница, 6 августа 2010 г.
суббота, 31 июля 2010 г.
?
четверг, 29 июля 2010 г.
среда, 28 июля 2010 г.
четверг, 15 июля 2010 г.
вторник, 17 ноября 2009 г.
воскресенье, 18 октября 2009 г.
пятница, 2 октября 2009 г.
пятница, 25 сентября 2009 г.
Bmesh - новые возможности полигонального моделлинга
Как я упоминал в предыдущем материале, одним из экспериментальных проектов, разрабатываемых для Blender 2.5, является Bmesh. Это, по своей сути, новое ядро полигонального моделлинга, представляющее собой улучшенный подход к операциям редактирования полигональной сетки. Множество операций, доступных продвинутым редакторам геометрии коммерческих пакетов ранее были либо принципиально недоступны в Блендере, либо опирались на такие "костыли", что пользоваться ими (операциями) было практически невозможно. К этому относится, например, отсутствие прямой поддержки полигонов с более чем четырьмя сторонами - и хотя наличие таких элементов в финальной геометрии совсем не приветствуется, но в процессе создания топологии возможность манипулирования различными многоугольниками освобождает 3d-моделлера от рутинного (и совсем необязательного в процессе творчества) "причёсывания" сетки. Ниже я расскажу об уже доступной функциональности нового редактора геометрии на основе сборки Bmesh-SVN 23318 для Windows взятой с сайта Graphicall.Org.
Самое первое, на что я обратил внимание - это новый режим удаления элементов геометрии Dissolve. Как видно из иллюстрации, теперь можно удалить элемент не разрушая образованной этим элементом геометрии.


Чем-то подобным ранее являлось удаление кольца рёбер (Edge Loop), но Dissolve представляет собой гораздо более универсальный инструмент, позволяющий удалять из геометрии как рёбра, так и вершины, и полигоны.
Интересные нововведения коснулись инструментов Subdivide, Spin и Screw - теперь параметры, с которыми применяются эти инструменты можно менять после применения на панели Last Operator (вызывается клавишей Т во вьюпорте, вместе с Mesh Tools и Tools Shelf) и сразу же наблюдать за полученными изменениями на редактируемой геометрии.

Для инструмента Subdivide можно менять количество разрезов, случайность расположения новых вершин, сглаживание новой геометрии и разрешить или запретить разбиение на треугольники смежных с выделением полигонов. Для Spin в меню Last Operator доступно регулирование количества сегментов, угол поворота и координат центра. Вращая шарик можно менять направление оси вращения. Аналогично с оператором Screw.

Интересную возможность получил модификатор Subdivision Surface. Теперь низкополигональная сетка может быть сглажена вместе с геометрией более высокой детализации. Может быть довольно полезным при работе со сложным и насыщенным деталями объектом, когда необходимо видеть итоговую сетку при работе на уровне низкой детализации, но из-за насыщенности элементов 2 разные сетки воспринимаются трудно.
Ну, а теперь о самом интересном - наконец-то нормально работают полигоны образованные пятью и более вершинами! Это вы заметили по иллюстрациям ранее, но теперь несколько подробнее. Полигоны теперь могут быть образованы множеством вершин, иметь вогнутые углы - всё это обрабатывается нормально. Даже сглаживание работает без проблем (конечно же, с разумной конфигурацией полигонов - можно и четырёхугольниками наворотить сетку, которую применение Subdivision Surface жестоко искорёжит).

Как видно из иллюстрации, старый вариант Subdivide даёт множество треугольников на полигонах, соседних с обрабатываемыми, и при сглаживании в местах соединения множества полигонов можно видеть артефакты сглаживания нормалей, а алгоритмы Bmesh обрабатывают такую ситуацию корректно, без артефактов.
Ещё есть возможность закрепить (Pinning) определённые вершины, рёбра или грани в пространстве (полностью, либо по некоторым осям) для исключения нежелательного их перемещения. Может быть полезным в ситуации, когда редактируется объект, плотно прилегающий к другому объекту, скрытому на неотображаемом слое.
На этом пока всё - ещё множество инструментов (Edge slide, Bevel…) отсутствуют, некоторые (Loop Cut, например) - недоработаны. Множество комбинаций клавиш, существенно ускоряющих работу (например, переключение режимов выделения) не работают. Однако, вывод можно сделать уже сейчас - Bmesh для полигонального моделлинга в Блендере является очень значительным шагом вперёд и без сомнения упростит и ускорит работу с геометрией, что привлечёт к Блендеру немало новых пользователей. На этом о новшествах в Blender 2.5 пока всё. Ждём апдейтов.
вторник, 22 сентября 2009 г.
Blender 2.5 - первый взгляд























