CFX cимуляция одежды, волос, твёрдых и мягких тел
- CFX Введение
- CFX Зоны ответственности
- CFX Программное обеспечение
- CFX Пайплайн работы отдела
- CFX Взаимодействие с другими отделами
- CFX Технические требования и ограничения
- CFX Работа с сценой симуляции-динамики
- CFX Настройки nCloth
- Динамика на волосы и одежду
- CFX Пошаговые инструкции
CFX Введение
Роль и функционал отдела CFX
___________________________________________________________________________________________________________________________________________
Отдел CFX — это команда, которая отвечает за всё, что связано с движущейся динамикой персонажей и их окружения. Если коротко, зона ответственности отдела — это одежда, волосы, ремни, сумки и всё то, что должно правдоподобно двигаться, колыхаться или деформироваться вместе с персонажем.
Отдел CFX работает на стыке нескольких направлений: анимации, технического пайплайна и VFX. Главная задача — сделать так, чтобы персонажи выглядели живо и органично в кадре.
В зону ответственности отдела CFX на проекте входит:
— Симуляция одежды (от плащей и юбок до шарфов и мелких аксессуаров)
— Симуляция волос
— Симуляция мягких тел (жир, кожа, мускулатура)
— Симуляция твёрдых тел (например, тяжелые элементы костюмов или броня)
___________________________________________________________________________________________________________________________________________
CFX Зоны ответственности
Зоны ответственности
___________________________________________________________________________________________________________________________________________
Отдел CFX отвечает за все задачи, связанные с динамическими элементами на персонажах и их окружении. Работа строится по следующим направлениям:
Симуляция одежды
Сюда входит работа с плащами, юбками, рубашками, шарфами и любыми другими тканевыми элементами костюмов. Симуляция проводится с учётом одобренной анимации и особенностей материала.
Симуляция волос
Задачи по движению длинных волос, отдельных прядей, бород и других продолговатых-элементов. Также сюда относятся любые симуляции на базе кривых, если они используются вместо groom системы волос .
Симуляция мягких тел
Работа с мягкими тканями тела персонажей — кожа, мышцы, жир, отдельные части лица или тела, которые требуют дополнительной деформации через симуляцию.
Симуляция твёрдых тел
Сюда относятся жёсткие части костюмов — броня, ремни, сумки, оружие и другие элементы, которые должны иметь физическое поведение и быть синхронизированы с движением персонажа.
Финальный кеш и передача данных
Ответственность отдела — подготовка симуляции к публикации и передаче в рендеринг. Это включает экспорт кешей, проверку соответствия стандартам пайплайна и публикацию в Ftrack.
___________________________________________________________________________________________________________________________________________
CFX Программное обеспечение
Используемое программное обеспечение
___________________________________________________________________________________________________________________________________________
• Maya 2023.3
• Houdini 20.0.751
• Ziva 2.1.0
• Qualoth
• Python/MEL
___________________________________________________________________________________________________________________________________________
Maya 2023.3
Основной инструмент для работы отдела. Через Maya собираются рабочие сцены, настраивается симуляция одежды, волос и других динамических элементов.
Используются стандартные инструменты Maya (nCloth, nHair) и дополнительные плагины. Для ускорения процессов применяются кастомные Python и MEL скрипты.
Houdini 20.0.751
Применяется для специализированных задач, где требуются процедурные-симуляции или нестандартные эффекты, которые сложно или нецелесообразно реализовать в Maya. Чаще всего используется для сложных FX, например, разрушений, сложных ассетов, или процедурной динамики.
Ziva Dynamics 2.1.0
Система симуляции мягких тканей и мускулатуры персонажей. Используется для работы с кожей, мышцами и другими деформируемыми элементами персонажей.
Qualoth
Плагин для симуляции одежды. Основной инструмент для задач, где требуется быстрый и стабильный результат, например для плащей и длинных элементов одежды.
CFX Пайплайн работы отдела
Получение и сборка динамических сцен
___________________________________________________________________________________________________________________________________________
-
Отдел CFX получает от анимационного департамента утверждённые сцены в формате USD.
-
Анимация должна быть финальной и без технических ошибок (пересечений, скачков и т.д.).
-
Далее через DSA(Dynamic Scene Assembling) или вручную сцена собирается и готовится под симуляцию.
___________________________________________________________________________________________________________________________________________
Настройка сцены симуляции
___________________________________________________________
На этом этапе добавляются нужные компоненты:
-
Определение состояния персонажа в шоте (dirty, bag, dinocostume)
-
Подготовка персонажа к симуляции
- - Создание преролла
- - Мердж преролла с существующим кешем анимации
- - Подключение референса динамического рига в сцену
- - Подключение динамического рига к кешу персонажа
-
Определение характера сцены (Полет, погоня, ветренная погода)
___________________________________________________________________________________________________________________________________________
Симуляция и принятие работы
___________________________________________________________________________________________________________________________________________
-
В первую очередь выполняются тестовые симуляции для проверки корректности работы и фикса возможных проблем.
-
После утверждения теста запускается финальный просчёт динамики с кешированием результата в Alembic или USD. На задаче-версии ставится статус pending review
-
После публикации playblast, cache, scene в Ftrack, лид отдела отсматривает работу согласно чек листу и если нет комментариев проставляет статус Complete
-
Далее отдел Check получает материалы и отсматривает на наличие технических баг
___________________________________________________________________________________________________________________________________________
CFX Взаимодействие с другими отделами
__________________________________________________________________________________________________________________________________________
Работа отдела CFX тесно связана с несколькими ключевыми департаментами. Для стабильного пайплайна важно соблюдение общих стандартов и своевременная коммуникация.
___________________________________________________________________________________________________________________________________________
Перечень отделов с высокой вероятностью взаимодействий
- Анимационный отдел
- Риг отдел
- Моделинг отдел
- Чекинг отдел
- VFX отдел по необходимости
___________________________________________________________________________________________________________________________________________
Анимационный отдел
- Передача финальной, утверждённой анимации без пересечений геометрии и с корректной скоростью движения.
- Поддержание структуры сцен в соответствии с пайплайном (правильный нейминг и чистая сцена без ненужных данных).
- Согласование любых изменений в поздних стадиях после начала симуляции.
Риг отдел
- Подготовка корректного сетапа, относительно будущего характера симуляций (Например деформации тела, которые могут значительно увеличить или уменьшить время просчета симуляции персонажа) .
- Исправление технических проблем с ригами, влияющих на симуляцию (жёсткие веса, артефакты в деформациях).
Моделинг отдел
- Предоставление геометрии в соответствии с техническими требованиями (топология, плотность сетки, UV-развёртки).
- Согласование особенностей костюмов, которые влияют на физику (например, элементы, требующие скомбинированной или сепарейтнутой геометрии).
Чекинг отдел
- Получение финальных кешей симуляции.
- Тестирование кешей на рендер-сценах (проверка нормалей, отсутствия разрывов или артефактов).
- Передача фидбека по возможным доработкам в CFX.
VFX (по необходимости)
- Согласование моментов, где симуляция CFX может пересекаться с эффектами.
- Передача динамических данных для дальнейшего использования в VFX
CFX Технические требования и ограничения
___________________________________________________________________________________________________________________________________________
Требования к геометрии
- Модели, предназначенные для симуляции, должны иметь равномерную топологию и оптимальное количество полигонов (не перегруженные, но достаточные для физики и деформаций).
- Не допускаются non-manifold геометрия, открытые края (если это не запланировано) и прочие технические ошибки.
- Для одежды — наличие правильно развернутых UV, даже если в симуляции они напрямую не используются.
Требования к анимации
- Анимация должна быть финальной и утверждённой. После передачи в CFX изменения не допускаются без согласования.
- Отсутствие пересечений между телом персонажа и одеждой.
- Отсутствие экстремальных заломов или перекрутов тела, без согласования с отделом CFX
- Отсутствие глубоких пересечений геометрии тела и других элементов сами в себя
- Скорость движений персонажа должна быть в рамках реалистичных ограничений (без резких скачков и экстремально быстрых деформаций).
___________________________________________________________________________________________________________________________________________
CFX Работа с сценой симуляции-динамики
________________________________________
Пошаговый урок: Подготовка сцены и симуляция CFX
________________________________________
Шаг 1. Открываем задачу через Ftrack
Открываем Ftrack и переходим в нужный шот.
Нажимаем кнопку Open — сцена откроется в Maya.
Шаг 2. Проверяем сборку сцены
- Переключаемся на камеру шота (shot camera).
- Проверяем наличие и корректность (они у нас должны быть в кеше) всех персонажей и окружения.
Если один или несколько персонажей отсутствуют, используем скрипт:
from inhouse.usd.assets.asset_factory import AssetFactory
from inhouse.usd.changes import UsdChanges
from pxr import Usd
from pxr import Sdf, Usd
from inhouse.usd.tools.maya_utils import getSceneStage
from inhouse.ftrack.publishing import publish_asset
import time
from pxr import Ar
def iter_root_prims(stage, rigged = True):
for prim in stage.TraverseAll():
vset = prim.GetVariantSet('representation')
if not vset.IsValid():
continue
if rigged:
vname = vset.GetVariantSelection()
if vname != 'rig':
continue
yield prim
af = AssetFactory()
context = af._app.context
asset = context.asset
alink = af.getAssetLink(asset)
lo_link = alink.link('Layout Layer')
changes = UsdChanges(asset)
changes.load()
project_path = Ar.GetResolver().Resolve(lo_link)
changes.checkIn(lo_link)
changes.apply(update=False)
local_path = changes.path(lo_link)
lo_stage = Usd.Stage.Open(local_path)
layer = lo_stage.GetEditTarget()
for rp in iter_root_prims(lo_stage, rigged=False):
prim_path = str(rp.GetPath())
prim_spec = layer.GetPrimSpecForScenePath(prim_path)
if prim_spec is None:
continue
prim_spec.variantSelections.clear()
if len(prim_spec.variantSets)>0:
variants = prim_spec.variantSets[0].variants
if 'rig' in variants:
prim_spec.variantSets[0].RemoveVariant(variants['rig'])
lo_stage.RemovePrim(prim_path+'/rig')
print(prim_spec.GetAsText())
print(lo_stage.GetRootLayer().ExportToString())
lo_stage.Save()
product = alink.getProductByLink('Layout Layer')
print(product['name'])
asst_name = product['name']
version_id = publish_asset( asset['id'], asset_name=asst_name,
asset_type='bsc',
components=[
dict(name='usd', path=local_path)
],
version_id=None
)
changes.checkOut(lo_link)
changes.apply(update=False)
counter = 0
while Ar.GetResolver().Resolve(lo_link) == project_path:
time.sleep(3)
counter+=1
if counter>10:
break
scene_stage = getSceneStage()
scene_stage.Reload()
Шаг 3. Подготовка сцены к симуляции
- Открываем инструмент DSA (Dynamic Scene Assembling).
- Находится в верхнем меню Maya, раздел Animation.
Шаг 4. Выбор персонажа и динамического рига
- В интерфейсе DSA выбираем нужного персонажа для симуляции.
- Определяем состояние персонажа (Dinocostume, bag, Dirty)
- Подбираем динамический риг, соответствующий этому состоянию.
Шаг 5. Создаем преролл
- Нажимаем кнопку preroll в интерфейсе DSA.
- Проверяем корректность преролла: анимация должна иметь плавный заход, без резких движений в начале.
- Если нужно, редактируем параметры преролла (добавляем или убираем кадры, меняем ключи анимации).
- Если всё корректно, нажимаем Cache.
Шаг 6. Подгрузка динамического рига и подключение
- Нажимаем кнопку Reference — нужный динамический риг подгрузится в сцену.
- Проверяем, чтобы риг подгрузился корректно.
- Нажимаем кнопку Connect для привязки рига к сцене и анимации.
Шаг 7. Тестовый просчет симуляции
- Настраиваем базовые параметры симуляции (по необходимости).
- Запускаем тестовый (lowres) просчет, чтобы проверить поведение симуляции в целом.
- Смотрим на результат — оцениваем работу динамики перед финальным просчетом.
Шаг 8. Выбор просчитываемой шейпы
- Нажимаем на Create nCache
- После просчета снимаем плейбласт, смотрим на результат симуляции
- После просчета всех динамических элементов, включаем группу output в display layer, все остальные отключаем
-
- Если все хорошо, паблишим вариант
-
-
- В Ftrack ставим статус pending review, и ждем фитбека по задаче
- После паблиша проверяем кеш в usdview
CFX Настройки nCloth
ЗНАЧЕНИЕ НАСТРОЕК CLOTH
___________________________________________________________________________________________________________________________________________
Настройки nCloth (Maya)
Stretch Resistance
Что это: сопротивление растяжению ткани. Чем выше значение, тем меньше ткань тянется.
По-человечески: отвечает за то, насколько легко ткань «тянется» при движении персонажа. Если сделать слишком низким — ткань будет как резинка.
Compression Resistance
Что это: сопротивление сжатию ткани. Чем выше, тем сильнее ткань сопротивляется тому, чтобы стать «мятой».
По-человечески: защищает от того, чтобы ткань не слипалась или не «скукоживалась» слишком легко.
Bend Resistance
Что это: сопротивление сгибанию ткани. Большие значения сделают ткань жестче при попытках согнуть.
По-человечески: регулирует мягкость ткани — как легко она ложится складками.
Shear Resistance
Что это: сопротивление сдвигу слоёв ткани друг относительно друга (как врезание ткани под углом).
По-человечески: влияет на стабильность формы ткани при сложных деформациях, например при скручивании.
Input Mesh Attract
Что это: сила, с которой симуляция пытается тянуть nCloth к исходной (анимированной) геометрии.
По-человечески: «липкость» к ригу — чем выше значение, тем ближе ткань будет пытаться оставаться к анимации без сильного отрыва.
Damp
Что это: глобальное затухание движений ткани (демпфирование).
По-человечески: уменьшает «дребезг» ткани и помогает быстрее остановить колебания.
Lift
Что это: параметр, определяющий подъём ткани при обтекании воздухом.
По-человечески: ткань как бы парусит — влияет на то, насколько легко она будет «надуваться» и подниматься в воздух.
Drag
Что это: сопротивление ткани воздуху (аналог аэродинамического сопротивления).
По-человечески: отвечает за то, как быстро ткань будет останавливаться в воздухе. Большое значение — будет тормозить даже при лёгких движениях.
Настройки nucleus
Substeps
Что это: количество внутренних шагов симуляции на каждый кадр.
По-человечески: чем выше значение, тем стабильнее симуляция и меньше артефактов, но дольше просчёт. Нужно повышать при быстрой или сложной анимации.
Max Collision Iterations
Что это: сколько раз ядро будет пересчитывать коллизии на одном кадре.
По-человечески: влияет на качество расчёта столкновений. Больше итераций — меньше шансов, что ткань «провалится» сквозь объект.
Gravity
Что это: сила гравитации в симуляции. По умолчанию стоит -9.8 (в метрах, как в реальной жизни).
По-человечески: насколько сильно ткань будет падать вниз.
Space Scale
Что это: масштаб симуляции. Должен совпадать с реальными размерами сцены.
По-человечески: если сцена в сантиметрах — оставляем значение по умолчанию (1.0), если в метрах — ставим меньше, например 0.01.
Time Scale
Что это: общая скорость симуляции.
По-человечески: можно замедлить или ускорить поведение ткани — влияет на динамику всей симуляции.
Wind Speed
Что это: глобальная сила ветра.
По-человечески: добавляет постоянный ветер во всей сцене.
Air Density
Что это: плотность воздуха, влияет на drag и lift.
По-человечески: чем выше значение, тем сильнее воздух будет влиять на ткань.
Динамика на волосы и одежду
Основные этапы работы динамики
1. Выгонка USD кешей персонажей с Т-позой и камеры из анимационной сцены c межкадрами
2. Загрузка кешей в сцену с динамическим билдом персонажа
3. Просчет динамики одежды и волос. Отдельно считается каждая группа в том порядке что и в аутлайнере (кэши на шейпы в одной группе записываются вместе)
4. Необходима выгрузка кеша в отдельный от анимации слой, для понимания того на какой стадии возникают проблемы (на анимации или на динамике)
Необходимые функции для работы отдела динамики
Необходимо добавить возможность для работы с динамическими слоями отдельно от анимации, загрузка и паблиш кешей в отдельный слой.
Кнопки:
· Create cache (создающая папку под кеш динамического просчета)
· Delete cache (удаляющая этот кеш)
· Кнопка экспорта USD (выгружающая кеш из папки OUTPUT_GRP в слой выше анимационного)
· Кнопки деформеров (blandshape, cluster, rivet, delta mush, texture deformer)
Соблюдение нейминга при экспорте кеша (E01_SQ010_SH010_Cloth_Phil_Cache)
Нейминг деформеров (с чего кидается на что кидается (pants_PRX_blandshape_pants_geo)
Необходима возможность паблиша и загрузки в сцену с кешом билдов персонажей
CFX Пошаговые инструкции
Инструкция 1.
Использование mute на nucleus
___________________________________________________________________________________________________________________________________________
1. Выделяем два параллельных эйджа
Это два эйджа (edges) на геометрии, которые будут использоваться как база для rivet-а.
Они должны быть соседними и лежать на одном участке поверхности (например, рядом на коже, ткани, волосах).
2. Используем следующий скрипт для rivet
// Copyright (C) 2000-2001 Michael Bazhutkin - Copyright (C) 2000 studio Klassika
// www.geocites.com/bazhutkin
// bazhutkin@mail.ru
//
// Rivet (button) 1.0
// Script File
// MODIFY THIS AT YOUR OWN RISK
//
// Creation Date: April 13, 2001
//
//
// Description:
// Use "Rivet" to constrain locator to polygon or NURBS surfaces
// Select two edges on polygon object
// or select one point on NURBS surface and call rivet
// Parent your rivets and buttons to this locator
global proc string rivet ( )
{
string $nameObject;
string $namePOSI;
string $parts[];
string $list[] = `filterExpand -sm 32`;
int $size = size($list);
if ($size > 0)
{
if ($size != 2)
{ error("No two edges selected");
return "";
}
tokenize($list[0],".",$parts);
$nameObject = $parts[0];
tokenize($list[0],"[]",$parts);
float $e1 = $parts[1];
tokenize($list[1],"[]",$parts);
float $e2 = $parts[1];
string $nameCFME1 = `createNode curveFromMeshEdge -n "rivetCurveFromMeshEdge1"`;
setAttr ".ihi" 1;
setAttr ".ei[0]" $e1;
string $nameCFME2 = `createNode curveFromMeshEdge -n "rivetCurveFromMeshEdge2"`;
setAttr ".ihi" 1;
setAttr ".ei[0]" $e2;
string $nameLoft = `createNode loft -n "rivetLoft1"`;
setAttr -s 2 ".ic";
setAttr ".u" yes;
setAttr ".rsn" yes;
$namePOSI = `createNode pointOnSurfaceInfo -n "rivetPointOnSurfaceInfo1"`;
setAttr ".turnOnPercentage" 1;
setAttr ".parameterU" 0.5;
setAttr ".parameterV" 0.5;
connectAttr -f ($nameLoft + ".os") ($namePOSI + ".is");
connectAttr ($nameCFME1 + ".oc") ($nameLoft + ".ic[0]");
connectAttr ($nameCFME2 + ".oc") ($nameLoft + ".ic[1]");
connectAttr ($nameObject + ".w") ($nameCFME1 + ".im");
connectAttr ($nameObject + ".w") ($nameCFME2 + ".im");
}
else
{ $list = `filterExpand -sm 41`;
$size = size($list);
if ($size > 0)
{
if ($size != 1)
{ error("No one point selected");
return "";
}
tokenize($list[0],".",$parts);
$nameObject = $parts[0];
tokenize($list[0],"[]",$parts);
float $u = $parts[1];
float $v = $parts[2];
$namePOSI = `createNode pointOnSurfaceInfo -n "rivetPointOnSurfaceInfo1"`;
setAttr ".turnOnPercentage" 0;
setAttr ".parameterU" $u;
setAttr ".parameterV" $v;
connectAttr -f ($nameObject + ".ws") ($namePOSI + ".is");
}
else
{ error("No edges or point selected");
return "";
}
}
string $nameLocator = `createNode transform -n "rivet1"`;
createNode locator -n ($nameLocator + "Shape") -p $nameLocator;
string $nameAC = `createNode aimConstraint -p $nameLocator -n ($nameLocator + "_rivetAimConstraint1")`;
setAttr ".tg[0].tw" 1;
setAttr ".a" -type "double3" 0 1 0;
setAttr ".u" -type "double3" 0 0 1;
setAttr -k off ".v";
setAttr -k off ".tx";
setAttr -k off ".ty";
setAttr -k off ".tz";
setAttr -k off ".rx";
setAttr -k off ".ry";
setAttr -k off ".rz";
setAttr -k off ".sx";
setAttr -k off ".sy";
setAttr -k off ".sz";
connectAttr ($namePOSI + ".position") ($nameLocator + ".translate");
connectAttr ($namePOSI + ".n") ($nameAC + ".tg[0].tt");
connectAttr ($namePOSI + ".tv") ($nameAC + ".wu");
connectAttr ($nameAC + ".crx") ($nameLocator + ".rx");
connectAttr ($nameAC + ".cry") ($nameLocator + ".ry");
connectAttr ($nameAC + ".crz") ($nameLocator + ".rz");
select -r $nameLocator;
return ($nameLocator);
}
rivet;
📸 Скриншот:
3. Переименовываем rivet в Translater
Чтобы в будущем использовать его как драйвер трансформа, нужно дать понятное имя:rivet1
→ Translater
(или rivet_translate_ctrl
, rivet_driver
, и т.п.)
4. Выделяем Translater_rivet и объект
Cначала выбираем rivet ,к которому должен привязаться объект.
А потом геометрию или объект который мы хотим перемещать.
5. Выбираем Constraint → Parent
Rigging меню → Constraint
→ Parent
Constraint
🔹 Открываем окно опций:Rigging
> Constraint
> Parent
(с коробочкой справа от названия)
Очень важно!
Снимаем ✓ Maintain Offset
, чтобы объект точно следовал движению Translater
, а не сохранял своё смещённое положение.
Жмём apply
6. Запускаем симуляцию
Всё готово! Теперь Translater
(rivet) двигается вместе с поверхностью, а привязанный объект точно следует за ним — можно запускать симуляцию.
Инструкция 2.
Использование деформеров
___________________________________________________________________________________
___________________________________________________________________________________________________________________________________________
CLUSTER 
___________________________________________________________________________________________________________________________________________
Cluster — это деформер, который позволяет управлять выбранными вертексами и объектами (или CV) объекта через трансформ-ноду, как будто это контроллер.
Очень удобно, если нужно:
- Убрать не нужный элемент из под камеры
- Анимировать выбранные точки для усиления эффекта симуляции
- Редактирования офсета геометрии друг с другом
1. Выделяем нужные точки на geo
В режиме Vertex
(F9 или ПКМ → Vertex), выдели одну или несколько вершин на геометрии, за которые ты хочешь тянуть или крепить объект.
2. Создаём Cluster
3.Теперь можно активировать pivot cluster, нажав W и сдвинуть точки
4.Ставим ключ на деформер
Т.к мы работаем из рестовой позиции персонажа, мы должны любые деформеры выключать в -30 кадре, что бы сохранить корректный силует одежды.
Поэтому мы идем в -30 кадр и выключаем наш cluster и ставим ключ
Правая кнопка мыши key selected
Далее в -10 кадре включаем cluster в 1
___________________________________________________________________________________________________________________________________________
DELTA MUSH 
___________________________________________________________________________________________________________________________________________
Delta Mush — это деформер, который плавно разглаживает деформации, сохраняя при этом форму оригинального меша.
Он отлично помогает, когда:
-
меш после симуляции/скиннинга/блендшейпов выглядит угловато или дёргано;
-
нужно сгладить "жёсткий" результат симуляции;
-
нужно "починить" артефакты после неловкого blendShape или skinCluster.
1. Выдели геометрию, к которой хочешь применить сглаживание
Это может быть:
-
симулируемая ткань;
-
результат blendShape;
-
скининг с плохими весами;
-
или даже просто анимированная гео.
2. Назначь на геометрию DeltaMush
2.1 Настроим параметры:
Параметр | Что делает |
---|---|
Smoothing Iterations | Кол-во сглаживающих проходов (рекомендуется 10–30) |
Smoothing Step | Насколько сильно сглаживать (0.5–1.0 — норм) |
Pin Border Vertices | Закрепить граничные точки, чтобы они не сползали |
Envelope | Масштаб влияния (как у всех деформеров) |
3.Красим вес DeltaMush
- Наводим на геометрию на которой назначен деформер
- Через правую кнопку выбираем paint ->DeltaMush
- Выкрашиваем сначала вес в 0 по всей геометрии
- Красим нужную нам часть геометрии в 1
___________________________________________________________________________________________________________________________________________
BLANDSHAPE 
___________________________________________________________________________________________________________________________________________Blandshape — это деформер в Maya, который позволяет плавно смешивать форму одного меша в другой.
Работает на основе индексов вершин, то есть:
«вот исходный меш, вот целевая форма — двигай вертексы от A к B».
Шаг 1: Подготовка объектов
-
Выбери объект, который этот объект станет источником Blend Shape (Source Object).
-
Выбери объект на который назначаешь blandshape. Этот будет служить целью деформации (Target Object).
Шаг 2: Создание Blend Shape
-
В меню выберите:
-
Deform → Blend Shape ☐ (с опциями).
-
-
В открывшемся окне настроек Blend Shape:
Шаг 3: Проверка созданного Blend Shape
-
Выделите Target Object.
-
Откройте панель атрибутов (Attribute Editor).
-
Найдите вкладку blendShape, убедитесь, что Blend Shape создан и отображается корректно.
Шаг 4: Подготовка к покраске весов (Weight Painting)
-
Кликните правой кнопкой мыши на Target Object.
-
В контекстном меню выберите пункт:
Шаг 5: Покраска весов
- Используя кисть, окрасьте необходимые области модели, регулируя степень влияния BlendShape на выбранные участки.
Инструкция 3
Создание и покраска BLANDSHAPE
_________________________________________________
Шаг 1: Подготовка объектов
-
Выбери объект, который этот объект станет источником Blend Shape (Source Object).
-
Выбери объект на который назначаешь blandshape. Этот будет служить целью деформации (Target Object).
Шаг 2: Создание Blend Shape
-
В меню выберите:
-
Deform → Blend Shape ☐ (с опциями).
-
-
В открывшемся окне настроек Blend Shape:
Шаг 3: Проверка созданного Blend Shape
-
Выделите Target Object.
-
Откройте панель атрибутов (Attribute Editor).
-
Найдите вкладку blendShape, убедитесь, что Blend Shape создан и отображается корректно.
Шаг 4: Подготовка к покраске весов (Weight Painting)
-
Кликните правой кнопкой мыши на Target Object.
-
В контекстном меню выберите пункт: