Автор Тема: Анимация видимости групп с объектами.  (Прочитано 1800 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dmi3ryd

  • Житель
Всем, доброго дня.

Есть большое количество объектов, находящихся в группах.
В каждом фрейме, объекты должны исчезать и снова появляться.

Например один объект может содержать в себе множество других объектов, соединенных с помощью Parent.

Вопрос. Как сделать уникальный объект, группу, ключ, что-то еще, который можно будет анимировать заставляя исчезать все содержимое группы?

Например локатор в котором есть 5 кубов. Нажимая на невидимость в вьюпорте исчезает локатор, но все содержимое остается.

Оффлайн Samovar

  • Житель
Re: Анимация видимости групп с объектами.
« Ответ #1 : 11 Май 2018, 14:37:37 »
Самый простой вариант, это не скрывать объекты, а быстро перемещать родительский объект вместе с потомками куда-нибудь далеко в "кукуево" за пределы видимости камеры в сцене (допустим под плоскость условной "земли", или далеко за камеру с её обратной стороны, или на расстояние сверх максимального расстояния отсечения камеры), а потом возвращать его на место. Всё с помощью интерполяции типа Constant... В данном варианте надо сделать только анимацию перемещения родителя. Как вариант, можно попробовать мгновенно масштабировать родителя в 0 и обратно...
Варианты с видимостью/невидимостью в рендере более замороченный и на него драйвер не навесишь, увы...
« Последнее редактирование: 11 Май 2018, 14:54:42 от Samovar »

Оффлайн Dmi3ryd

  • Житель
Re: Анимация видимости групп с объектами.
« Ответ #2 : 11 Май 2018, 14:56:44 »
К сожалению первый вариант не подходит. Объекты тяжелые, память будет лишняя использоваться.

Т.е. залинковать свойство главного объекта (видимость) на свойство дочернего объекта (видимость) нельзя?

Оффлайн Samovar

  • Житель
Re: Анимация видимости групп с объектами.
« Ответ #3 : 11 Май 2018, 15:04:34 »
Во вьюпорте вроде можно, но в рендере нельзя... надо анимировать...
Хотя, может и возможно... подожди, старички чего нить ещё посоветуют...

Оффлайн Samovar

  • Житель
Re: Анимация видимости групп с объектами.
« Ответ #4 : 11 Май 2018, 15:19:53 »
Есть ещё один вариант: поместить объекты в отдельный слой и анимировать состояние Exclude в Render Layers (для Cycles)

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Анимация видимости групп с объектами.
« Ответ #5 : 11 Май 2018, 20:30:16 »
>> Вопрос. Как сделать уникальный объект, группу, ключ, что-то еще, который можно будет анимировать заставляя исчезать все содержимое группы?
1) выделить содержимое группы (например выделить родителя и Shift+G C) ...
2) в outliner выделить родителя группы, Ctrl+Click нажать на фотоаппарат (при необходимости и на глаз) ...
3) вставить ключевой кадр I A ...

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Анимация видимости групп с объектами.
« Ответ #6 : 12 Май 2018, 02:48:22 »
>> 3) вставить ключевой кадр I A ...
... еще один нюанс - что-бы выполнить I A, нужно прощелкать хотя бы один раз в outliner для каждого объекта группы по фотоапарату I (то есть для очень большого количества не подходит) ...

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Анимация видимости групп с объектами.
« Ответ #7 : 12 Май 2018, 08:08:31 »
... добавлю пару строк Кода, суть которого в том чтобы связать драйверами ограничение визуализируемости объекта с ограничением визуализируемости его родителя ...
... то есть после выполнения указанного Кода для каждого из детей выделенного родителя будет создан свой драйвер на ограничение визуализируемости и, соответственно, при изменении этого ограничения у родителя автоматом будут изменения значения ограничения у детей ...
... далее для анимации нужно только анимировать визуализируемость родителя, что существенно упрощает решение (пример файла во вложении) ...
... при рендеренге анимации в визуализацию включаются или не включаются все дети вслед за родителем по его ограничению ...

Код: python
import bpy
for ob in bpy.context.selected_objects:
    hr = ob.hide_render
    chs = [x for x in bpy.data.objects if x.parent is not None and x.parent.name==ob.name]
    for ch in chs:
        ch.driver_remove("hide_render",-1)
        dv = ch.driver_add("hide_render",-1).driver
        dv.type = 'SCRIPTED'
        dv.expression = 'var_hide_render'
        vv = dv.variables.new()
        vv.name = 'var_hide_render'
        vv.type = 'SINGLE_PROP'
        vv.targets[0].id = ob
        vv.targets[0].data_path = 'hide_render'

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Анимация видимости групп с объектами.
« Ответ #8 : 12 Май 2018, 11:58:36 »
... дополненный вариант скрипта - делает связывающие драйверы и для внуков ...
... для расстановки драйверов необходимо выделить родителя и запустить скрипт Alt+P ...
... для работы драйверов потребуется настроить автоматический запуск скриптов https://docs.blender.org/manual/ru/dev/advanced/scripting/security.html#setting-defaults ...

Код: python
import bpy


def subdrive(ob):
    print(ob.name)
    chs = [x for x in bpy.data.objects if x.parent is not None and x.parent.name==ob.name]
    for ch in chs:
        for t in ['hide','hide_render']:
            ch.driver_remove(t,-1)
            dv = ch.driver_add(t,-1).driver
            dv.type = 'SCRIPTED'
            dv.expression = t
            vv = dv.variables.new()
            vv.name = t
            vv.type = 'SINGLE_PROP'
            vv.targets[0].id = ob
            vv.targets[0].data_path = t
        subdrive(ch)

def main():           
    for ob in bpy.context.selected_objects:
        subdrive(ob)

main()

Оффлайн Dmi3ryd

  • Житель
Re: Анимация видимости групп с объектами.
« Ответ #9 : 14 Май 2018, 11:44:05 »
Большое спасибо! Буду разбираться.

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

flag_visjashii.jpg
Скачано: 10
Автор: Striver
flag_visjashii0.jpg
Скачано: 9
Автор: Striver
Screenshot 2022-09-20 135323.png
Скачано: 12
Автор: mrpensil
10923-2.png
Скачано: 12
Автор: mrpensil
Desktop Screenshot 2022.09.16 - 15.12.46.17.png
Скачано: 25
Автор: hoh