Анимация в adorner (называющий OnRender)

Вы можете использовать cmds.listHistory, чтобы получить все входные данные от объекта, затем cmds.ls, чтобы отфильтровать результат, чтобы найти любые наборы цветов:

import maya.cmds as cmds

for obj in cmds.ls(sl=True):  # Loop through the selection.
    history = cmds.listHistory(obj)  # Get a list of the object's history nodes, which may include a color set.
    existing_color_sets = cmds.ls(history, type="createColorSet")  # Filter history nodes to only color sets.
    if existing_color_sets:  # If a color set exists, delete it.
        cmds.delete(existing_color_sets)

    cmds.polyColorSet(obj, cr=True, colorSet="colorSet")  # Create a new color set.
6
задан Jason Anderson 24 February 2009 в 22:02
поделиться

1 ответ

Ответ на Ваш вопрос является использованием InvalidateVisual заставить OnRender быть названным снова

Однако я предложил бы вместо того, чтобы делать пользовательское привлечение OnRender самостоятельно для использования моделирования стандарта и визуальной шаблонной обработки дерева для создания фактического визуального из adorner. Это также означает, что можно выполнить стандартные анимации XAML в нем с раскадровками.

Если Вы хотите пойти с этим подходом, в Вашем adorner классе Вы должны:

  • в конструкторе любой вызов base.AddVisualChild() или создайте свой собственный набор зрительного ряда со зрительным рядом, который Вы хотите показать в adorner
  • переопределение ArrangeOverride(Size size) для расположения дочерних элементов правильно;
  • переопределение VisualChildrenCount возвратить число детей в adorner визуальном дереве;
  • переопределение GetCisualChild(int index) возвратить конкретного ребенка.

Можно смотреть на образец ResizingAdorner MSDN для большего количества информации.

10
ответ дан 9 December 2019 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: