вторник, 23 ноября 2010 г.

Симуляция жидкостей. Часть II.

В большем разрешении

    Анимация падающих в жидкость тел. Сегодня мартини со льдом :) Для начала подготовим меши. Смоделим бокал, затем скопируем внутреннюю часть, слегка уменьшим и закроем сверху (это будущая жидкость).


    Теперь сделаем два кубика. Расположим их над бокалом, желательно около центра. Дальше поясню почему. Переместим меш жидкости внутрь стакана, почти вплотную к стенкам.
    И отметим ключевые кадры анимации для кубиков льда: 1-й - начальная позиция кубиков, 20-й - на уровне кромки бокала и 25-й - на дне. Выделяем объект, выбираем нужный кадр (отображается вертикальной зелёной полосой на timeline внизу) с помощью стрелок, жмём I и кликаем по подменю LocRot (это записывает координаты и вращение объекта). Затем переходим к нужному кадру (важно в первую очередь менять кадр) перемещаем (G) и, по желанию, вращаем (R).




    Теперь перейдём к самим жидкостям. Как и в предыдущем уроке, создадим домен - куб вокруг бокала с кубиками льда. И настроим его.
    Выставим Resolution в 100, Time End - 1 секунду (мне этого хватило, чтобы вода успокоилась) и Surface Smoothing в единицу. В принципе, если у вас 6 или больше ядер и больше 4-х гигабайт памяти, можно поднять как разрешение, так и опции сглаживания. Чем выше подразделение жидкости (resolution; домен отвечает оп большей части именно за настройки жидкости) и взаимодействующих с ней объектов, тем точнее симуляция. В принципе, для ускорения просчёта можно снизить эти параметры, но в финальной симуляции рекомендуется подымать разрешение до 150 и выше.


    Теперь выберем меш жидкости, выберем тип Fluid, сменим тип сосуда на Shell и установим начальную скорость в Z = -0.2, это поможет ей быстрее успокоиться.


    И для бокала и кубиков льда: тип Obstalce, тип сосуда Shell.


    Перейдём к первому кадру, выберем домен и нажмём Bake. Это запустит симуляцию. На главной панели сверху появится индикатор, по ходу "запекания" (bake) симуляции, вы можете просматривать результат - просто перемещайтесь по кадрам стрелками или указанием нужно кадра на timeline.

пятница, 19 ноября 2010 г.

Симуляция жидкостей. Часть I.

В большом разрешении

    В этот раз будет молоко. Немного похоже на герметик или краску, да... но на самом деле урок о жидкостях и я просто не достал ещё книгу "Blender 2.5 Lighting and Rendering Book" :)
    В этой части покажу самое простое: как сделать источник жидкости, как учитывать другие объекты плюс базовые настройки.
    Сначала смоделируем объект для взаимодействия  с жидкостью. Я выбрал чашку.


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


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


     Перейдём на панель физики. Нам нужно поле Fluid, перетащим его за заголовок вверх.


    Теперь разберём настройки для каждого объекта. Кружка. Нажимаем копку Add. Тип объекта Obstacle предназначается для обтекаемых объектов - любой геометрии, которую жидкость должна учитывать. Для незакрытых сосудов используется Shell. Slip отвечает за скольжение жидкости. Этот параметр проще понимать как скорость движения частиц, находящихся вплотную к стенкам сосуда. Noslip означает что частицы будут прилипать к стенкам, Freeslip - свободное скольжение, а Partslip позволяет настроить коэффициент: нулевое значение - нулевая скорость, единица - то же самое, что и Freeslip.


        Источник жидкости. Тип Inflow. Для задания ускорения можете поиграться с Inflow Velocity. Важно настроить одну из осей, иначе жидкость попросту не будет "двигаться" с места, и мы ничего не наполним. Эти значения можно использовать в анимации: подведите курсор и нажмите I.


    Генератор частиц. Drops используется для имитации брызг пресной воды, Floats - для жидкостей с более высоким поверхностным натяжением (масло, морская вода) и Tracer для создания "догоняющих" брызг. Поэкспериментируйте. Alpha регулирует максимальную степень прозрачности для частиц. Чем крупнее частица, тем ниже степень прозрачности.


    И настройки домена. Resolution - коэффициент подразделения жидкости. Чем выше, тем точнее симуляция и выше потребляемые память и дисковое пространство. Будьте осторожнее с числами выше 200. Start Time - время от начала симуляции (0.0 секунд), с которого начнётся запись кадров на диск (Блендер использует дисковый кэш для проигрывания анимации). Кнопка Bake запускает просчёт симуляции, индикатор процесс можно найти на главной панели.


    Real World Size задаёт размер "мира" по самой длинной грани домена. Желательно указывать этот параметр. Velocity Presets позволяет выбрать тип жидкости или задать параметры вручную.



    Subdivision полезна при анимации: каждый кадр к жидкости будет применяться Subsurface Division с указанным коэффициентом. Вручную это сделать обычно затруднительно.



    Относительно вводных статей: мне попалось достаточно материала для новичков, потому я счёл что более востребованным будут статьи, о которых написано мало, либо ничего. До встречи!

четверг, 11 ноября 2010 г.

Введение в Blender 2.5. Часть IV.

Моделирование.

    Все объекты (за исключением камер и источников света), с которыми мы встречались в предыдущих статьях, называются мешами (mesh). Добавим несколько на сцену. Shift+A.
Объект будет вставлен в центр курсора (похож на спасательный круг). Для удаления, вдруг понадобится, - традиционные X и Delete :)

    Теперь к редактированию самого меша. Выделяем, Tab. Меш образуют вершины. По умолчанию мы работаем именно с ними в режиме редактирования. 
Оранжевым выделены вершины.
    Грани и рёбра переключаются через меню по Ctrl+Tab.

    Итак, теперь с этим счастьем нужно что-то сделать. По-порядку:
  • Перемещение(G), вращение (R), ресайз (S). Одна, две, три вершины или ребра - не важно. Выделяем и двигаем, ровно всеми ранее описанными способами.
  • Копирование - Shift+D. После нажатия создаются копии выделенных объектов, расположенные на то же месте, где и оригинал. Управление точно такое же, как и при перемещении (G). Лишние сущности можно автоматически удалить - W => Remove Doubles.
  • Вытягивание - E. То же, что и копирование, но с одной разницей: объекты не разъединяются. Умножили? Будет делить.
  • Отсоединение от объекта. P. Выделенная часть удаляется из текущего объекта, и образует новый. Попробуйте, всегда можно вернуться назад с помощью Ctrl+Z.
  • Нож. В 2.5 реализовали ещё не все возможности, но пока попробуем так: K+LMB. Нужно выделить как минимум две вершины или одну грань/ребро и отметить где разрез должен пересекать ребро. Если разрез вышел неровным, можно привести его к одной плоскости (S, выбираем нужную - X, Y или Z и, самое интересное, вводим масштаб: 0.001 или просто ведём мышкой к центру выделения).
Неровный разрез.

  • Авторазрез. Ctrl+R. Попробуйте.
  • "Разрыв". V. Тоже лучше попробовать :) Поведение такое же, как и при копировании.
  • Объединение. Для начала вернёмся в объектный режим, создадим ещё один кубик и соединим их. Ctrl+J. Теперь мы можем редактировать одновременно два меша. Круто, а? Первым способом у нас является F. Работает с двумя и более точками. В сложных случаях с пятью и более точками может не сработать.
Соединение.
  • Объединение с учётом порядка выделения. Вся работа теперь делается автоматом. Alt+M. Выделяем, затем выбираем очерёдность в меню.
  • "Сближение". Пресловутый S можно использовать и здесь. Как - вы уже догадались :)
  • Перемещение в точку. У каждой вершины есть координаты (можете посмотреть и даже потрогать в меню по N). Посему выделяем точку (вершину, ребро или грань), жмём Shift+S => Cursor to Selected (теперь курсор в центре выделения), выделяем точку, которую нужно переместить к курсору, снова жмём Shift+S и выбираем подменю Selection to Cursor.
Туда-сюда.

    На этом основы моделирования закончены. Лицо девушки из первого урока было сделано... нет, не так. Оно было сделано в режиме скульптуры из следущего урока :)

Введение в Blender 2.5. Часть III.

Перемещение, поворот и изменение размера.

    3D пространство формируется за счёт трёх осей: X, Y и Z. В левом нижнем углу индикатор, может пригодиться. Вот основные действия с объектом (на деле это не применимо к некоторым сущностям, но мы их ещё не скоро увидим):

  • Перемещение. Клавиша G.
  • Ротация (поворот). Клавиша R.
  • Ресайз (изменение размера). Клавиша S.

    Теперь к интересному. К каждому из этих действий применимы следующие опции:

  • Изменение в пределах одной оси. Клавиши X, Y или Z.
Изменение по оси Z.
  • Запрет на изменение по определённой оси. Точно так же выбираем одну их осей плюс Shift.
  • Численное задание параметров. В большинстве случаев нужно задать ось, по которой следует изменять объект. Допускаются как положительные, так и отрицательные значения (ввод с основной клавиатуры). Также, можно использовать десятичную точку (в России принято использовать запятую для такой записи, но тут - точку). Если ось не задана, будет произведено перемещение/вращение относительно плоскости "вида" или же изменение размера по всем осям.
  • Задание точных параметров через меню. N. Кроме накликивания по счётчикам, попробуйте нажать LMB и тянуть курсор. Здесь точно так же действуют опции для изменения шага - Shift и Alt.
Меню с параметрами справа.
  • Пошаговое изменение. Во время редактирования удерживаем Ctrl. При перемещении/ресайзе (модные кальки с английского, я буду их часто использовать :) ) объект будет изменяться с шагом 1 единицу длины, а при повороте - на 10 градусов. К примеру, выделяем объект, нажимаем G, зажимаем Ctrl и тянем курсор.
  • Для опции пошагового изменения есть ещё две опции: увеличение и уменьшение шага. Или воспринимайте это как изменение скорости курсора, если так удобнее. Но лучше просто попробовать: Ctrl+Alt или Ctrl+Shift во время редактирования.
  • Через манипуляторы. Вы, должно быть, заметили трёхцветные стрелки. Отключается/включается обратно эта возможность с помощью Ctrl+Space. Стрелки, или специфичные для ротации окружности нужно всего лишь тянуть. Я обычно не пользуюсь этой возможностью, потому вы не видели их на скриншотах.
Кнопки в левом нижнем углу служат для переключения типа манипулятора.
  • "Захват" оси. Во время редактирования зажимаем MMB и тянем вдоль одной из осей. 
  • Редактирование по "клеткам". Ctrl во время редактирования.
Через несколько дней я напишу о моделировании и режиме "Скульптура". Удачи!

Введение в Blender 2.5. Часть II.

Выделение.

    Самое простое - использовать RMB (правую кнопку мыши) плюс Shift для выделения нескольких объектов. На практике вам будет недостаточно этого, если нет - перестаньте мучить Blender и пустите владельца машины за своё место :) Итак, что может нам помочь:

  • Выделить/снять выделение со всех объектов. Клавиша A.
  • Инверсное выделение. Ctrl+I.
Исходное выделение.
Инверсное.
  • Групповое выделение. Для первых двух способов действует один и тот же принцип: LMB для добавления в выделение, MMB - для вычитания. B - выделение прямоугольной формы, C - в форме круга (можно использовать колёсико для изменения размера) и сочетание Ctrl+LMB для произвольного выделения aka "лассо".
Снятие выделения. B и MMB.
  • И снятие выделения: Shift+RMB (иногда нужно кликать дважды: первый для выбора объекта, второй - для снятия выделения).
    Обычно люди ошибаются. Для этого у компьютеров есть кнопочка "назад". Да, я бы тоже хотел её в реальную жизнь... Хотя... Надеюсь, что вы не из любителей делать лишнюю работу. Решение:
  • Во время действия редактирования можно нажать RMB, процесс прервётся. Работает не всегда, но для отмены выделения по B или "лассо" сгодится. Практика всё расставит по местам.
  • Отменой предыдущего действия. Ctrl+Z решает почти все проблемы, за исключением связанных со сменой вида.

Введение в Blender 2.5. Часть I.

Рендер. Новый интерфейс.


Навигация и обзор.

    О навигации мышью большинство знает лишь одно: зажать колёсико, двигать курсор. Полезно, до тех пор, пока не придётся сменить ракурс на более удобный. Когда придётся, вам пригодится это:
  • Движение мышью с зажатыми Shift+MMB (колесо мыши). Позволяет "двигать" сцену в четырёх направлениях.
  • Прокручивание колёсика с зажатым Shift или Ctrl. Вверх-вниз, вправо-влево. Попробуйте.
  • Движение мышью с зажатыми Ctrl+MMB. Аналогично колёсику, но зачастую просто быстрее.

    Теперь о клавиатуре. Если вы помните занятия по черчению, то помните и наиболее часто используемые виды: спереди, слева и сверху. Они переключаются с помощью клавиш 1, 3 и 7 на цифровой клавиатуре (по-умолчанию только на ней). Маловато, а? Вот что ещё можно сделать:
  • Переключиться на "видоискатель" камеры. Т.е. посмотреть что попадает в кадр. Нажимаем 0. Чтобы вернуться к прежнему виду, нажимаем его ещё раз.
  • Повернуть строго по осям: вертикальной и горизонтальной. Т.е. заменить Ctrl/Shift+колёсико. Клавиши 4, 6, 2, 8. Или клавиши со стрелочками, если угодно :)
  • Переключаться на вид сзади, справа и снизу. Те же 1, 3 и 7, но в комбинации с Ctrl.
  • Расположить точку обзора так, чтобы все объекты сцены попали в обзор. Клавиша Home.
  • Использовать новую возможность: режим "полёта" камеры. Переключаемся на вид из камеры (можно и не переключаться, но так удобнее) с помощью нуля, нажимаем Shift+F и пробуем сменить точку обзора:  W, A, S и D для того же, что и в играх, F и R для переменещения по вертикали и, традиционно, колёсико для приближения или отдаления. Для поворота используется мышь. Блендер реагирует на ускорение, потому просто поиграйтесь, оцените как камера реагирует на перемещение курсора от края до края окна.
Приближение.
Поворот.

  • Сменить "тип" камеры. Есть два типа отображения: ортогональный и перспективный (этот имитирует восприятие реального мира человеком). Клавиша 5.
  • Выделить область для приближения. Ctrl+B и выделение с помощью LMB.