# CFX Пошаговые инструкции

# Инструкция 1.

### Использование mute на nucleus

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

### **1. Выделяем два параллельных эйджа**

Это два эйджа (edges) на геометрии, которые будут использоваться как база для rivet-а.  
Они должны быть соседними и лежать на одном участке поверхности (например, рядом на коже, ткани, волосах).

📸 **Скриншот:**  
[![Снимок экрана 2025-03-27 144208.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/ojPZrbXN2NLdYGCP-snimok-ekrana-2025-03-27-144208.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/ojPZrbXN2NLdYGCP-snimok-ekrana-2025-03-27-144208.png)

### **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;
```

📸 **Скриншот:**

**[![Untitled-1.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/ZGsZ91KKdxGa8zED-untitled-1.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/ZGsZ91KKdxGa8zED-untitled-1.png)**

### **3. Переименовываем rivet в `Translater`**

Чтобы в будущем использовать его как драйвер трансформа, нужно дать понятное имя:  
`rivet1` → `Translater` (или `rivet_translate_ctrl`, `rivet_driver`, и т.п.)

📸 **Скриншот:**  
[![Untitled-2.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/7HoGXPAT9nbbLHWA-untitled-2.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/7HoGXPAT9nbbLHWA-untitled-2.png)

### **4. Выделяем Translater\_rivet и объект**

##### Cначала выбираем rivet ,к которому должен привязаться объект.

##### А потом геометрию или объект который мы хотим перемещать.

📸 **Скриншот:**  
[![Untitled-3.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/ReeI1eK2jmhtZBBE-untitled-3.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/ReeI1eK2jmhtZBBE-untitled-3.png)

### **5. Выбираем Constraint → Parent**

Rigging меню → `Constraint` → `Parent` Constraint

🔹 Открываем окно опций:  
`Rigging` &gt; `Constraint` &gt; `Parent` (с коробочкой справа от названия)

📸 **Скриншот:**  
[![Untitled-4.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/1S0rQJh0pG4pIkAf-untitled-4.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/1S0rQJh0pG4pIkAf-untitled-4.png)

#### **Очень важно!**  
Снимаем `✓ Maintain Offset`, чтобы объект точно следовал движению `Translater`, а не сохранял своё смещённое положение.

##### Жмём **apply**

### **6. Запускаем симуляцию**

Всё готово! Теперь `Translater` (rivet) двигается вместе с поверхностью, а привязанный объект точно следует за ним — можно запускать симуляцию.

# Инструкция 2.

### **Использование деформеров**

#### \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

### **CLUSTER** [![image.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/XnP2t86vvUKBG7aE-image.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/XnP2t86vvUKBG7aE-image.png)

**\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_**

##### Cluster — это деформер, который позволяет управлять выбранными вертексами и объектами (или CV) объекта через трансформ-ноду, как будто это контроллер.  
Очень удобно, если нужно:

- Убрать не нужный элемент из под камеры
- Анимировать выбранные точки для усиления эффекта симуляции
- Редактирования офсета геометрии друг с другом

### **1. Выделяем нужные точки на geo**

В режиме `Vertex` (F9 или ПКМ → Vertex), выдели одну или несколько вершин на геометрии, за которые ты хочешь тянуть или крепить объект.

[![image.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/wPYSabbem36MJyeT-image.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/wPYSabbem36MJyeT-image.png)

### **2. Создаём Cluster**

**[![Untitled-4.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/Q5a14dleMZR63uJm-untitled-4.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/Q5a14dleMZR63uJm-untitled-4.png)**

[![image.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/FVIpgBhFAkwzF3Oq-image.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/FVIpgBhFAkwzF3Oq-image.png)

### **3.Теперь можно активировать pivot cluster, нажав W и сдвинуть точки** 

[![image.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/PJY9QoIpSAC2Lbrt-image.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/PJY9QoIpSAC2Lbrt-image.png)

### **4.Ставим ключ на деформер**

**Т.к мы работаем из рестовой позиции персонажа, мы должны любые деформеры выключать в -30 кадре, что бы сохранить корректный силует одежды.**

**Поэтому мы идем в -30 кадр и выключаем наш cluster и ставим ключ**

**Правая кнопка мыши key selected**

[![image.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/YxQ2gqoDhjutlCvZ-image.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/YxQ2gqoDhjutlCvZ-image.png)

[![image.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/1kgHjIW8HB4w1mEG-image.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/1kgHjIW8HB4w1mEG-image.png)

Далее в -10 кадре включаем cluster в 1

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

## **DELTA MUSH [![image.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/mtlaDKN2cK3qyHMm-image.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/mtlaDKN2cK3qyHMm-image.png)**

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

Delta Mush — это деформер, который **плавно разглаживает деформации**, сохраняя при этом **форму оригинального меша**.  
Он отлично помогает, когда:

- меш после симуляции/скиннинга/блендшейпов выглядит угловато или дёргано;
- нужно **сгладить "жёсткий" результат** симуляции;
- нужно **"починить" артефакты** после неловкого blendShape или skinCluster.

### **1. Выдели геометрию, к которой хочешь применить сглаживание**

Это может быть:

- симулируемая ткань;
- результат blendShape;
- скининг с плохими весами;
- или даже просто анимированная гео.

### **2. Назначь на геометрию DeltaMush**

**[![Untitled-5.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/Uqrm55QN5WZLRkdc-untitled-5.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/Uqrm55QN5WZLRkdc-untitled-5.png)**

##### **2.1 Настроим параметры:**

<table data-end="1619" data-start="1278" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%A7%D1%82%D0%BE-%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82-"><thead data-end="1303" data-start="1278"><tr data-end="1303" data-start="1278"><th data-end="1289" data-start="1278">Параметр</th><th data-end="1303" data-start="1289">Что делает</th></tr></thead><tbody data-end="1619" data-start="1330"><tr data-end="1411" data-start="1330"><td>**Smoothing Iterations**</td><td>Кол-во сглаживающих проходов (рекомендуется 10–30)</td></tr><tr data-end="1481" data-start="1412"><td>**Smoothing Step**</td><td>Насколько сильно сглаживать (0.5–1.0 — норм)</td></tr><tr data-end="1560" data-start="1482"><td>**Pin Border Vertices**</td><td>Закрепить граничные точки, чтобы они не сползали</td></tr><tr data-end="1619" data-start="1561"><td>**Envelope**</td><td>Масштаб влияния (как у всех деформеров)</td></tr></tbody></table>

### **3.Красим вес DeltaMush**

- Наводим на геометрию на которой назначен деформер
- Через правую кнопку выбираем paint -&gt;DeltaMush
- Выкрашиваем сначала вес в 0 по всей геометрии
- Красим нужную нам часть геометрии в 1 [![Untitled-6.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/Y53TCjLvHYlJlmfl-untitled-6.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/Y53TCjLvHYlJlmfl-untitled-6.png)

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

### **BLANDSHAPE** [![image.png](https://bookstack.yarko.com/uploads/images/gallery/2025-03/scaled-1680-/X2becsmOIZUiSGGO-image.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-03/X2becsmOIZUiSGGO-image.png)

**\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_Blandshape** — это **деформер в Maya**, который позволяет **плавно смешивать форму одного меша в другой**.  
Работает на основе **индексов вершин**, то есть:  
**«вот исходный меш, вот целевая форма — двигай вертексы от A к B»**.

## Шаг 1: Подготовка объектов

1. Выбери объект, который этот объект станет источником Blend Shape (Source Object).
2. Выбери объект на который назначаешь blandshape. Этот будет служить целью деформации (Target Object).[![1.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/SxsqfPMUBUMjvrJM-1.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/SxsqfPMUBUMjvrJM-1.png)

## Шаг 2: Создание Blend Shape

1. В меню выберите:
    
    
    - **Deform → Blend Shape ☐** (с опциями).
2. В открывшемся окне настроек Blend Shape:
    
    
    - Убедитесь, что отмечены опции **"World"** и **"Check Topology"**.
    - Нажмите кнопку **Create**.[![2.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/2cPpItYPmutMw3el-2.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/2cPpItYPmutMw3el-2.png)

## Шаг 3: Проверка созданного Blend Shape

1. Выделите **Target Object**.
2. Откройте панель атрибутов (Attribute Editor).
3. Найдите вкладку **blendShape**, убедитесь, что Blend Shape создан и отображается корректно.[![3.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/Drvk2K3lgyhPaw5d-3.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/Drvk2K3lgyhPaw5d-3.png)

## Шаг 4: Подготовка к покраске весов (Weight Painting)

1. Кликните правой кнопкой мыши на **Target Object**.
2. В контекстном меню выберите пункт:
    
    
    - **Paint → BlendShape → (название созданного blendShape) → baseWeights[![4.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/Z9jjbUMbn3kGkYkW-4.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/Z9jjbUMbn3kGkYkW-4.png)**

## Шаг 5: Покраска весов

1. Используя кисть, окрасьте необходимые области модели, регулируя степень влияния BlendShape на выбранные участки.[![5.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/Q6psDXUsJUEHV48N-5.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/Q6psDXUsJUEHV48N-5.png)

# Инструкция 3

## Создание и покраска BLANDSHAPE  
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

## Шаг 1: Подготовка объектов

1. Выбери объект, который этот объект станет источником Blend Shape (Source Object).
2. Выбери объект на который назначаешь blandshape. Этот будет служить целью деформации (Target Object).[![1.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/SxsqfPMUBUMjvrJM-1.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/SxsqfPMUBUMjvrJM-1.png)

## Шаг 2: Создание Blend Shape

1. В меню выберите:
    
    
    - **Deform → Blend Shape ☐** (с опциями).
2. В открывшемся окне настроек Blend Shape:
    
    
    - Убедитесь, что отмечены опции **"World"** и **"Check Topology"**.
    - Нажмите кнопку **Create**.[![2.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/2cPpItYPmutMw3el-2.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/2cPpItYPmutMw3el-2.png)

## Шаг 3: Проверка созданного Blend Shape

1. Выделите **Target Object**.
2. Откройте панель атрибутов (Attribute Editor).
3. Найдите вкладку **blendShape**, убедитесь, что Blend Shape создан и отображается корректно.[![3.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/Drvk2K3lgyhPaw5d-3.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/Drvk2K3lgyhPaw5d-3.png)

## Шаг 4: Подготовка к покраске весов (Weight Painting)

1. Кликните правой кнопкой мыши на **Target Object**.
2. В контекстном меню выберите пункт:
    
    
    - **Paint → BlendShape → (название созданного blendShape) → baseWeights[![4.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/Z9jjbUMbn3kGkYkW-4.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/Z9jjbUMbn3kGkYkW-4.png)**

## Шаг 5: Покраска весов

1. Используя кисть, окрасьте необходимые области модели, регулируя степень влияния BlendShape на выбранные участки.[![5.png](https://bookstack.yarko.com/uploads/images/gallery/2025-04/scaled-1680-/Q6psDXUsJUEHV48N-5.png)](https://bookstack.yarko.com/uploads/images/gallery/2025-04/Q6psDXUsJUEHV48N-5.png)