Опрос
Что такое, по вашему мнению, «демократия»?
Сумка медицинская
Сумки от российских дизайнеров: сумка медицинская.
www.mediko.ru
Обработка сквозного прохода
| Индекс материала |
|---|
| Обработка сквозного прохода |
| Страница 2 |
Все нестандартные узлы прямо или косвенно порождены от MPxNode. "Этот узел содержит несколько атрибутов, однако самым важным для разработчика является атрибут nodeState. Он доступен через интерфейс Maya после выполнения следующих действий. 1. Вы делите узел. 2. Откройте редактор Attribute Editor. 3. Раскройте шире элемент Node Behavior (Поведение узла).
4. Выберите новое значение из выпадающего списка рядом с приглашением Node State (Состояние узла). На программном уровне атрибут nodeState представлен перечислимым типом с четырьмя значениями. * 0 (нормальное) * I (сквозной проход) * 2 (блокировка) * 3 (внутренне запрещен) Атрибут nodeState является признаком того, должен ли узел вычислять свои выходные атрибуты. Обычно nodeState имеет значение 0 (нормальное), поэтому узел их действительно вычисляет. Если значение nodeState равно 1 (сквозной проход), входные атрибуты узла передаются на его выход без каких бы то ни было вычислений. Это состояние приведено в редакторе Attribute Editor как hasNoEffect.
При разработке узла вам нужно решить, будете ли вы поддерживать состояние сквозного прохода. На деле это определяется допустимостью понятия сквозного прохода для узлов вашего типа. Так, деформаторы должны поддерживать это состояние. Если атрибут nodeState имеет значение сквозной проход, необходимо просто передать входной геометрический объект на выход, не производя никакой его деформации. Следующий код показывает, как нужно изменить подключаемый модуль SwirlDeformer ради поддержки этого состояния узла. Прежде чем выполнять деформацию, функция проверяет, равен ли атрибут nodeState единице (сквозной проход).
Если да, функция сразу же завершается, не деформируя геометрию. MStatus SwirlDeformer::deform( MDataBlockfi block, MltGeometry &iter, const HMatrix &loca! ToWorld, unsigned int geonlndex ) MStatus stat; MDataHandle stateHnd = data.
inputValue( state ); int state = stateHnd. aslnt(); if( state = 1)// Сквозной проход return MS::kSuccess; MDataHandle envData = block. inputValue( envelope ); float env = envData.
Поиск
В закладку
Авторизация
Погода


