lists.py¶
Описание содержимого файла lists.py
Данный файл содержит конфигурацию сборки лицевого рига на блендшейпах.
- bs_face_simple.lists.ACTIONS = {}¶
Кодировка подключения управления блендшейпами мимики на объект
bs_face_simple.lists.ACTION_OB.Управление назначается на одноимённые названиям блендшейпов атрибуты объекта
bs_face_simple.lists.ACTION_OBУже от этих атрибутов делается коннект на блендшейпы всех лодов и сеток.
- Type
dict
- bs_face_simple.lists.ACTION_OB = 'faceSimpleAction'¶
имя
Actionноды.Action нода - пустая группа, содержащая атрибуты, одноимённые всем блендшейпам.
Создаётся в
bs_face_simple.hook.pre_bild()Управление блендшейпами от контролов передаётся именно на атрибуты этой ноды.
Блендшейпы сеток различных лодов, получают коннект от Action ноды.
- Type
str
- bs_face_simple.lists.ALGORITHM = 'from_folder'¶
Алгоритм сборки.
Варианты алгоритмов:
from_folderСборка из директории, в которой бленды разложены каждый в отдельном файле.
Название файла соответствует названию бленда.
Название нейтральной сетки головы определяется в
bs_face_simple.lists.TARGET_NAMEФормат файлов с блендами определяется в
bs_face_simple.lists.EXTENSIONПарметр
bs_face_simple.lists.SIMM= FalseПуть к директории с блендами выбирается в GUI - поле Folder of Sourse Meshes
Note
При мультисборке (
bs_face_simple.lists.MULTY= True) все пути исходников прописываются вbs_face_simple.lists.MULTY_DATA.from_folder_simmСборка из директории, в которой бленды разложены каждый в отдельном файле, с применением бленда ассиметрии.
Название файла соответствует названию бленда.
Бленд ассиметрии находится в директории с блендами, название бленда определяется параметром
bs_face_simple.lists.TARGET_SIMMНазвание нейтральной сетки головы определяется в
bs_face_simple.lists.TARGET_NAMEФормат файлов с блендами определяется в
bs_face_simple.lists.EXTENSIONПарметр
bs_face_simple.lists.SIMM= TrueПуть к директории с блендами выбирается в GUI - поле Folder of Sourse Meshes
Note
При мультисборке (
bs_face_simple.lists.MULTY= True) все пути исходников прописываются вbs_face_simple.lists.MULTY_DATA.from_fileСборка из файла, который содержит сетки блендов и при необходимости нейтральную и ассиметричную сетки.
Название сетки соответствует названию бленда.
Название нейтральной сетки головы определяется в
bs_face_simple.lists.TARGET_NAMEФормат файла с блендами определяется в
bs_face_simple.lists.EXTENSIONПарметр
bs_face_simple.lists.SIMM= FalseПарметр
bs_face_simple.lists.MULTY=FalseПуть к файлу с блендами выбирается в GUI - поле File of Sourse Meshes
from_file_simmСборка из файла, который содержит сетки блендов, с применением бленда ассиметрии.
Название сетки соответствует названию бленда.
Бленд ассиметрии находится в директории с блендами, название бленда определяется параметром
bs_face_simple.lists.TARGET_SIMMНазвание нейтральной сетки головы определяется в :attr:`bs_face_simple.lists.TARGET_NAME
Формат файла с блендами определяется в
bs_face_simple.lists.EXTENSIONПарметр
bs_face_simple.lists.SIMM= TrueПарметр
bs_face_simple.lists.MULTY=FalseПуть к файлу с блендами выбирается в GUI - поле File of Sourse Meshes
- Type
str
- bs_face_simple.lists.APPLY_BS_PREFIX = 'faceBS'¶
Префикс блендшеп нод при накидывании лица.
- Type
str
- bs_face_simple.lists.APPLY_CONNECT_ATTR_DATA = []¶
Список кортежей из пары значений для “коннекта” атрибутов при подключении лицевого рига в тело. Процедура
bs_face_simple.hook.apply_face_rig_from_file().Структура списка:
[ ('source_object.attr_name' , 'target_object.attr_name'), ... ]
- Type
list
- bs_face_simple.lists.APPLY_CONNECT_DATA = []¶
Список кортежей из пары значений для “накидывания” блендов при подключении лицевого рига в тело. Процедура
bs_face_simple.hook.apply_face_rig_from_file().Структура списка:
[ ('source_object' (сетка лицевого рига) , 'target_object' (сетка рига тела) ), # для target_object - лучше использовать полное имя, получаемое: object.name(long=True) ... ]
- Type
list
- bs_face_simple.lists.APPLY_HEAD_BONE = 'head'¶
Имя объекта кости головы (в риге тела), может использоваться для различных коннектов при импорте лицевого рига в тело.
- Type
str
- bs_face_simple.lists.APPLY_PARENT_CONSTRAINT_LIST = []¶
Парент констраинты, создаваемые после коннекта лицевого рига в боди. Процедура
bs_face_simple.hook.apply_face_rig_from_file().Структура списка:
[ ('child_ob_name'(объект принимающий констрейн) , 'parent_ob_name'(объект отдающий констрейн)), # Для имени объектов из рига тела лучше использовать полное имя, получаемое: object.name(long=True). ... ]
- Type
list
- bs_face_simple.lists.APPLY_PARENT_LIST = [('face_all', '|character|other')]¶
Создание иерархии после коннекта лицевого рига в боди, Процедура
bs_face_simple.hook.apply_face_rig_from_file().Структура списка:
[ ('child_object' , 'parent_object' ), # для parent_object - лучше использовать полное имя, получаемое: object.name(long=True) ... ]
- Type
list
- bs_face_simple.lists.APPLY_REMOVE_OBJECTS = []¶
Список объектов удаляемых из сцены при очистке от лицевого рига. Выполняется в сцене боди рига. Процедура
bs_face_simple.hook.remove_face_rig().- Type
list
- bs_face_simple.lists.BODY_RIG_CHEST_OBJ = 'Chest_M'¶
Имя кости грудной клетки в риге тела. Используется для коннекта лицевого рига в риг тела, для спейсинга
ikконтролов.- Type
str
- bs_face_simple.lists.BODY_RIG_HEAD_BONE = 'Head_M'¶
Headкость головы рига тела.- Type
str
- bs_face_simple.lists.BODY_RIG_HEAD_CTRL = 'FKHead_M'¶
Headконтрол боди рига. Используется для коннекта лицевого рига в риг тела, для атрибутов переключения спейсингаikконтролов.- Type
str
- bs_face_simple.lists.BODY_RIG_MAIN_CTRL = 'Main'¶
Имя рут контрола боди рига. Используется для коннекта лицевого рига в риг тела, для спейсинга
ikконтролов.- Type
str
- bs_face_simple.lists.BODY_RIG_PELVIS_OBJ = 'Root_M'¶
Имя кости таза в риге тела. Используется для коннекта лицевого рига в риг тела, для спейсинга
ikконтролов.- Type
str
- bs_face_simple.lists.BROW_AND_LIDS_ASSET = 'bs_face_brow_and_lids'¶
Имя ассет ноды с математикой для управления блендами бровей и век
Расположение в
bs_face_simple.lists.FACE_MATH_ASSETСоздаётся в
bs_face_simple.hook.pre_bild()- Type
str
- bs_face_simple.lists.BS_GROUP_NAME = 'bs_shapes'¶
имя вспомогательного локатора для импортируемых сеток при сборке рига.
Удаляется после сборки.
- Type
str
- bs_face_simple.lists.BS_NAME = 'faceSimpleBS'¶
имя бленд ноды в случае не мультисборки (имеет смысл при
bs_face_simple.lists.MULTY= False, почти не используется).- Type
str
- bs_face_simple.lists.CORRECTS = {}¶
Словарь для создания корректов из сеток от моделлеров, при выполнении Make Correct By BS (запуск из Меню).
Note
Для случая, когда моделлер отдаёт финальное сосотояние бленда, но бленд должен быть корректом при срабатывании с другими блендами.
Структура словаря:
{ 'blend_shape_name_to_correct' : { # ключ - имя бленд ноды, для которой надо сделать коррект; значение - словарь с блендами на срабатывание которых делается коррект. 'blend_shape_name' : value, # ключ - имя бленд ноды; значение - его значение, в котром он должен быть при создании корректа. ... }, ... }
- Type
dict
- bs_face_simple.lists.CTRL_MA = 'CTRL.ma'¶
Имя файла откуда импортируется теплейт контролов.
Директория расположения файла:
work_dir/bs_face_simple_local/- Type
str
- bs_face_simple.lists.CTRL_NAME = 'face_BS_CTRLS'¶
Имя рут группы контролов импортируемых из
bs_face_simple.lists.CTRL_MA.- Type
str
- bs_face_simple.lists.EXTENSION = 'obj'¶
Расширение файла для импорта блендшейпов
- Type
str
- bs_face_simple.lists.EXTENSIONS = ['obj', 'ma', 'mb', 'fbx']¶
Варианты расширений файлов для импорта блендшейпов
Возможно устарело.
- Type
list
- bs_face_simple.lists.EYE_LIMITS = []¶
Лимиты поворота глаз
Attention
не используется пока. Лучше настраивать ограничения в
bs_face_simple.lists.POST_BILD_SET_MIN_MAX_ATTRдля объектов:bs_face_simple.lists.EYE_LOOK_IK_DRIVER_Lиbs_face_simple.lists.EYE_LOOK_IK_DRIVER_RСтруктура списка:
[ (POSES_VALUES['eye_up'], POSES_VALUES['eye_down']), (POSES_VALUES['eye_in'], POSES_VALUES['eye_out']), (0,0) ]
- Type
list
- bs_face_simple.lists.EYE_LOOK_DRIVER_L = 'eye_l_root_joint'¶
Деформирующая кость левого глазного яблока
- Type
str
- bs_face_simple.lists.EYE_LOOK_DRIVER_R = 'eye_r_root_joint'¶
Деформирующая кость правого глазного яблока
- Type
str
- bs_face_simple.lists.EYE_LOOK_FK_DRIVER_L = 'eye_l_FK_joint'¶
FK кость левого глазного яблока
- Type
str
- bs_face_simple.lists.EYE_LOOK_FK_DRIVER_R = 'eye_r_FK_joint'¶
FK кость правого глазного яблока
- Type
str
- bs_face_simple.lists.EYE_LOOK_IK_DRIVER_L = 'eye_l_IK_joint'¶
IK кость левого глазного яблока
- Type
str
- bs_face_simple.lists.EYE_LOOK_IK_DRIVER_R = 'eye_r_IK_joint'¶
IK кость правого глазного яблока
- Type
str
- bs_face_simple.lists.EYE_LOOK_SHAPES = '{}'¶
Полная альтернатива
bs_face_simple.LIST_OF_SHAPES, но только для блендов век. Если есть риг и бленд есть в этом словаре - то сборка будет из этого словаря.Attention
Очевидно был в этом когда-то смысл, но надо отменить использование.
- Type
dict
- bs_face_simple.lists.FACE_MATH_ASSET = 'bs_face_math'¶
Имя ассет ноды, в которую помещаются все ассеты содержащие математические ноды, создаваемые в
bs_face_simple.hook.pre_bild()и вbs_face_simple_local.hook.pre_bild().Сама нода так же создаётся в
bs_face_simple.hook.pre_bild().- Type
str
- bs_face_simple.lists.FACE_RIG_TO_BODY_FILE = 'face_rig_to_body.mb'¶
Имя файла собранного рига лица, который импортится в риг тела.
Расположение файла:
.../base/creatures/rigs/face/.- Type
str
- bs_face_simple.lists.HIDDEN_GROUP_OF_SURF = 'face_For_Surf_Hide'¶
Имя группы для размещения сурфейс кривых, и всего остального от сурфейс контролов, что нельзя деформировать и надо спрятать.
- Type
str
- bs_face_simple.lists.HORIZONTAL_AXIS = 'ry'¶
Ось горизонтального вращения деформирующей кости глаза
- Type
str
- bs_face_simple.lists.IK_EYE_CTRL_L = 'l_eyeAim_ctrl'¶
IK контрол для левого глаза, root объекта имеет префикс
grp_- Type
str
- bs_face_simple.lists.IK_EYE_CTRL_M = 'ik_eyes_ctrl'¶
центральный IK контрол глаз, root объекта имеет префикс
grp_- Type
str
- bs_face_simple.lists.IK_EYE_CTRL_R = 'r_eyeAim_ctrl'¶
IK контрол для правого глаза, root объекта имеет префикс
grp_- Type
str
- bs_face_simple.lists.IN_RIG_SHAPES = {}¶
Таргеты которые используются при сборке только поверх кластерного рига (корректы на скин кластер), альтернатива для таргетов из
bs_face_simple.lists.NOT_IN_RIG_SHAPES.Note
При отсутствии кластерного рига (отсутствие объекта
bs_face_simple.lists.RIG_IDENTIFICATION_OBJECT), они не будут использованы.Структура словаря:
{ 'blend_shape_target_name' : 'mesh_name', # mesh_name значения из [``'jaw'``, ``'eye'``] - это для какой сетки они применяются. ... }
- Type
dict
- bs_face_simple.lists.JAW_DRIVER = 'CTRL_jaw_skin'¶
Объект контролирующий челюсть в скиновом риге.
- Type
str
- bs_face_simple.lists.JAW_OFFSET_FACTOR = 10.0¶
Параметр для скейла, чтобы приравнять визуальное движение контрола челюсти с движением курсора мышки (подбирается имерически).
- Type
float
- bs_face_simple.lists.JAW_SIDES_DRIVER_ASSET = 'bs_face_jaw_sides_driver'¶
Имя ассет ноды с математикой для управления переключения боковых смещений челюсти, в зависимости от степени сомкнутости губ.
Расположение в
bs_face_simple.lists.FACE_MATH_ASSETСоздаётся в
bs_face_simple.hook.pre_bild()- Type
str
- bs_face_simple.lists.LIST_OF_SHAPES = '{ }'¶
Назначение управления блендшейпами мимики на блендшейп ноды.
Правильнее всего использовать
connectот одноимённых атрибутов объектаbs_face_simple.lists.ACTION_OB.на какую именно сетку идёт подключение решается на основе
bs_face_simple.lists.MULTY_DATA.Данный словарь оформляется строкой, строка форматируется в скрипте по ключам словаря
bs_face_simple.rig_generate.LS_OF_SH_DICT:
LS_OF_SH_DICT = { 'BS_NAME' :lists.BS_NAME, 'TARGET_NAME':lists.TARGET_NAME, 'TARGET_SIMM': lists.TARGET_SIMM, 'ACTIONS_OB': lists.ACTION_OB, 'JAW_SIDES_DRIVER_ASSET': lists.JAW_SIDES_DRIVER_ASSET, 'BROW_AND_LIDS_ASSET': lists.BROW_AND_LIDS_ASSET, 'EYE_LOOK_DRIVER_L': lists.EYE_LOOK_DRIVER_L, 'EYE_LOOK_DRIVER_R': lists.EYE_LOOK_DRIVER_R, 'EYE_LIMITS': lists.EYE_LIMITS, }
- Type
str -> dict
- bs_face_simple.lists.LOCAL_DIR = 'bs_face_simple_local'¶
Имя локальной диретории где хуки и прочее
- Type
str
- bs_face_simple.lists.MAKE_EYE_IK_CONTROL = True¶
создавать или нет IK управление для глаз
- Type
bool
- bs_face_simple.lists.MAKE_SHAPES = {}¶
Словарь для создания производных блендов из сеток от моделлеров, при выполнении Make Correct By BS (запуск из Меню).
Note
Для случая, когда моделлер не отдаёт бленд, но бленд должен быть результатом смешивания других блендов. Так же может создавать бленд из самого себя, с добавлением какого-либо влияния.
Структура словаря:
{ 'blend_shape_name_to_correct' : { # ключ - имя бленд ноды, которую надо создать; значение - словарь с блендами из которых делается бленд. 'blend_shape_name' : value, # ключ - имя бленд ноды; значение - его значение, в котром он должен быть при создании бленда. ... }, ... }
- Type
dict
- bs_face_simple.lists.MULTY = True¶
если
True- то мульти сборка.- Type
bool
- bs_face_simple.lists.MULTY_DATA = {}¶
Подключаемые сетки по лодам
Структура словаря:
{ 'head_l01': # Имя лода - структура имени: [наименование сетки, если сетка разделена, то наименование фрагмента сетки: nec, head, tongue]_[кодировка лода] { 'TARGET_NAME': 'Neutral_head_l01', # Название нейтральной сетки - структура имени: Neutral_[наименование сетки, если сетка разделена, то наименование фрагмента сетки: nec, head, tongue]_[кодировка лода] 'BS_NAME': 'faceSimpleBS_head_l01',# Название создаваемой бленд ноды - структура имени: faceSimpleBS_[наименование сетки, если сетка разделена, то наименование фрагмента сетки: nec, head, tongue]_[кодировка лода] 'source': 'blends/split_head_l01', # Относительный путь к директории где лежат бленды данного лода, относительно work_dir. 'SHAPE_INVERT_MESH':'Bocman_face': # Название сетки которая используется для создания корректов по скину. }, 'neck_l01': { 'TARGET_NAME': 'Neutral_neck_l01', 'BS_NAME': 'faceSimpleBS_neck_l01', 'source': 'blends/split_neck_l01', }, ... }
Парметр
'source'- это split_folder директория в процедуре Export BS Meshes to Source/Split.- Type
dict
- bs_face_simple.lists.NOT_IN_RIG_SHAPES = []¶
Таргеты которые используются при сборке при остутствии кластерного рига (отсутствие объекта
bs_face_simple.lists.RIG_IDENTIFICATION_OBJECT),альтернатива для таргетов изbs_face_simple.lists.IN_RIG_SHAPES.- Type
list
- bs_face_simple.lists.OTHER_CTRL_DATA_JSON = 'other_ctrl_data.json'¶
Имя
jsonфайла где хранятся данные остальных контролов.Расположение файла в
bs_face_simple.lists.LOCAL_DIR- Type
str
- bs_face_simple.lists.POSES_DATA = {}¶
Постановка рига в позы, при которых создаются корректы на скинкластер Make Correct By Skin (запуск панели из Меню).
Note
Neutral- обязательная поза, обнуляющая все атрибуты, которые используются для постановки поз.Структура словаря:
{ 'Neutral': { 'ob_name.attr_name' : value, # all atributes ... }, 'blend_shape_target_name': { 'ob_name.attr_name' : value, ... }, ... }
Attention
Переписать на постановку в нейтральную позу перед каждой позой, чтобы оставить в позе только нужные атрибуты.
- Type
dict
- bs_face_simple.lists.POSES_VALUES = {'eye_down': 20, 'eye_in': -25, 'eye_out': 36, 'eye_up': -20, 'jaw_bwd': -2.0, 'jaw_drop': 6.25, 'jaw_fwd': 3.0, 'jaw_left': 4.5, 'jaw_open': 25, 'jaw_right': -4.5}¶
значения атрибутоа для постановки лица в соответствующие позы.
Структура словаря:
{ 'pose_name': float_value, ... }
- Type
dict
- bs_face_simple.lists.POST_BILD_CONNECT = []¶
коннекты, которые совершаются в
bs_face_simple.hook.post_bild()Структура списка:
[ ( 'object_name.attr_name' (атрибут отдающий коннект ), 'object_name.attr_name' (атрибут принимающий коннект)), # кортеж из двух элементов. ... ]
- Type
list
- bs_face_simple.lists.POST_BILD_HIDE_OBJECTS = []¶
Список объектов которые будут захайдитены в
bs_face_simple.hook.post_bild().- Type
list
- bs_face_simple.lists.POST_BILD_HIDE_SHAPE_OBJECTS = []¶
Список объектов чьи шейпы будут захайдитены в
bs_face_simple.hook.post_bild().- Type
list
- bs_face_simple.lists.POST_BILD_OTHER_CONNECT = {}¶
Создание доп драйверов в
bs_face_simple.hook.post_bild().Структура словаря:
{ 'connect_name':{ # Произвольное наименование. 'num' : N, # Количество ключей. 'driver': ['object_name', 'attr_name', (value1, value2, ... valueN)], # Будут созданы DrivenKeyFrames (driver_value_i, driven_value_i) в количестве N. 'driven': ['object_name', 'attr_name', (value1, value2, ... valueN)], # }, ... }
- Type
dict
- bs_face_simple.lists.POST_BILD_PARENTS = {}¶
Построение иерархии после сборки в
bs_face_simple.hook.post_bild().Структура словаря:
{ 'child_ob_name' : 'parent_ob_name', ... }
- Type
dict
- bs_face_simple.lists.POST_BILD_PARENT_CONSTRAINTS = {}¶
Парент констраинты, создаваемые после сборки в
bs_face_simple.hook.post_bild().Структура словаря:
{ 'child_ob_name' : 'parent_ob_name', # ключ - объект принимающий констраинт, значение - объект влияния. ... }
- Type
dict
- bs_face_simple.lists.POST_BILD_REMOVED_OBJECTS = []¶
Список удаляемых объектов сцены после сборки в
bs_face_simple.hook.post_bild(). Удаляемые объекты в том числе и слои и сеты.- Type
list
- bs_face_simple.lists.POST_BILD_REORDER_DEFORMERS = {}¶
Изменение порядка деформаторов на объектах, выполняемое в
bs_face_simple.hook.post_bild().Структура словаря:
{ 'object_name' : ('defom_name_0', 'deform_name_1'), # деформатор 'deform_name_1' подсовывается под деформатор 'deform_name_0'. ... }
- Type
dict
- bs_face_simple.lists.POST_BILD_SET_ATTR = {}¶
Данные на установку значений атрибутов (например fix бленды).
Структура словаря:
{ 'ob_name' : ('attr_name', value), ... }
- Type
dict
- bs_face_simple.lists.POST_BILD_SET_MIN_MAX_ATTR = {}¶
Данные на установку пределов для атрибутов (например на контролах).
Структура словаря:
{ 'ob_name.attr_name' : (min, max), # ``attr_name`` - трансформы только в короткой форме ``ty``, ``rx`` итд. # на счёт кастомных атрибутов надо тестить. ... }
- Type
dict
- bs_face_simple.lists.POST_BILD_TO_MESH_LAYER = []¶
Список объектов помещаемых в слой
face_meshesвbs_face_simple.hook.post_bild().- Type
list
- bs_face_simple.lists.POST_BILD_TO_RIG_LAYER = []¶
Список объектов помещаемых в слой
face_rigвbs_face_simple.hook.post_bild().- Type
list
- bs_face_simple.lists.RIG_IDENTIFICATION_OBJECT = 'CTRL_jaw_skin'¶
Имя объекта по которому идентифицируется наличие кластерного рига.
Расположение файла:
.../base/creatures/rigs/face- Type
str
- bs_face_simple.lists.RIG_NO_DEFORM_GRP = 'face_character_grp'¶
имя root группы лицевого рига.
- Type
str
- bs_face_simple.lists.SIMM = False¶
если
True- то нейтральная сетка симметричная, но при этом используется бленд ассиметрии.- Type
bool
- bs_face_simple.lists.SOURCE_SPLIT_FILTER = {'None': False}¶
Списки блендов которые будут учитаны при выполнении Export BS Meshes to Source/Split (запуск панели из Меню).
Note
Если модель разделена на фрагменты, то может оказаться, что не для всех частей потребуется весь набор блендов, например для шеи не нужны бленды век.
Структура словаря:
{ 'None': False, # Если список фильра пустой - то он будет проигнорирован. None - обязательный пустой фильтр. 'filter_name' : [список блендов], # Название фильра прозвольно. Только бленды из этого списка будут раскладыватся по sourse/split директориям, остальные будут проигнорированы. ... }
- Type
dict
- bs_face_simple.lists.SURF_CTRL_DATA_JSON = 'surf_ctrl_data.json'¶
Имя
jsonфайла где хранятся данные сурф контролов.Расположение файла в
bs_face_simple.lists.LOCAL_DIR- Type
str
- bs_face_simple.lists.TARGET_NAME = 'Neutral'¶
оригинальная нейтральная голова (имеет смысл при
bs_face_simple.lists.MULTY= False, почти не используется).- Type
str
- bs_face_simple.lists.TARGET_SIMM = 'SimmNeutral'¶
симметричная нейтральная голова (имеет смысл при
bs_face_simple.lists.MULTY= False, почти не используется).- Type
str
- bs_face_simple.lists.TO_SOURSE_MESHES = []¶
Список имён блендов, которые надо копировать в
sourceдиректорию своего лода, означает, что требуется сепарация на правые и левые бленды.Учитывается при выполнении Export BS Meshes to Source/Split (запуск панели из Меню).
- Type
list
- bs_face_simple.lists.TO_SPLIT_MESHES = []¶
Список имён блендов, которые надо копировать в
splitдиректорию своего лода, означает, что сепарации на правые и левые бленды не требуется.Учитывается при выполнении Export BS Meshes to Source/Split (запуск панели из Меню).
- Type
list
- bs_face_simple.lists.UP_VECTOR_OBJECT_L = 'up_vector_object_l'¶
объект определяющий upVector для aim констрейна ik управления левого глаза, root объекта имеет префикс
grp_- Type
str
- bs_face_simple.lists.UP_VECTOR_OBJECT_R = 'up_vector_object_r'¶
объект определяющий upVector для aim констрейна ik управления правого глаза, root объекта имеет префикс
grp_- Type
str
- bs_face_simple.lists.VERTICAL_AXIS = 'rx'¶
Ось вертикального вращения деформирующей кости глаза
- Type
str
- bs_face_simple.lists.WIRE_ATTR_LIST = [('object_L.ty', (0, 0.818))]¶
Параметры для включния/отключения
wireдеформатора век, вbs_face_simple.hook.wire_no_off().Структура списка:
[ ('имя_объекта.атрибут', (значение атрибута для отключения, значение атрибута для включения)), ... ]
- Type
list
- bs_face_simple.lists.WIRE_ON = 1¶
Значение для
wire.envelopвсех wire деформаторов, которое будет назначено при их включении.- Type
float