3d форум по Blender

Blender => Риггинг, скиннинг и анимация => Тема начата: Dmi3ryd от 19 Март 2018, 17:41:51

Название: Привязка объекта в точке другого объекта
Отправлено: Dmi3ryd от 19 Март 2018, 17:41:51
Добрый день.

Есть плоскость объекта на которой находится логотип (текст).
Размер (положение) этой плоскости, часто меняется, каждый раз приходится менять положение логотипа.

Возможно ли, применить функцию, которая была бы привязывала логотип к нужному компоненту (точка или ребро) и нужной мне оси?
Смысл в том, чтобы быстро отредактировать положение плоскости, и логотип на основе привязки также поменял бы свое положение.

Например. Плоскость стола, на ней стоит чашка, точно по центру. Мне нужно поменять размер стола, например сдвинуть одно из ребер.
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Samovar от 19 Март 2018, 18:16:43
Драйверы в помощь: https://docs.blender.org/manual/ru/dev/animation/drivers/introduction.html
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Samovar от 19 Март 2018, 19:19:08
Ограничители в помощь (проще чем драйверы, и менее гибкие): https://docs.blender.org/manual/ru/dev/rigging/constraints/index.html (http://blender-3d.ru/forum/go.php?url=aHR0cHM6Ly9kb2NzLmJsZW5kZXIub3JnL21hbnVhbC9ydS9kZXYvcmlnZ2luZy9jb25zdHJhaW50cy9pbmRleC5odG1s)

На ограничители можно навесить драйверы, если нужно...

Можно вообще всё решить через программирование на Python, но эти варианты именно для тех, кто не умеет программировать, и не хочет углубленно изучать Python.
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Николай Николаев от 19 Март 2018, 19:25:48
... у меня с ходу с драйверами не получилось, координатную связку сделал, но драйвер не обновляется после модификации объекта привязки ...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Samovar от 19 Март 2018, 19:30:12
Цитировать
но драйвер не обновляется после модификации объекта привязки ...
В свойствах объекта есть 2 чекбокса для обновления драйверов Relation Extras -> Extra Object Update и Extra Data Update, их надо включить...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Николай Николаев от 19 Март 2018, 19:53:32
... стало легче, но приходится после модификации объекта привязки сам объект переводить в режим редактирования и обратно для обновления драйверов ...
... во вложении пример - при редактировании Plane объект Cube перемещается в геометрический центр ...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Samovar от 19 Март 2018, 20:31:05
... стало легче, но приходится после модификации объекта привязки сам объект переводить в режим редактирования и обратно для обновления драйверов ...
Честно скажу, что хрен его знает...увы, не везде и всюду это работает в Blender, пока что...
....можно кликать кнопку Update Dependеncies после трансформаций...
(https://docs.blender.org/manual/ru/dev/_images/animation_drivers_drivers-panel_panel.png)


... есть ещё режим при запуски запуске Blender: --enable-new-depsgraph
Надо разбираться...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Николай Николаев от 19 Март 2018, 20:47:21
>> ... есть ещё режим при запуски Blender: --enable-new-depsgraph
... с этим параметром совсем замечательно, обновляется после модификации объекта привязки ...
... то есть в принципе привязать можно к отдельным элементам полисетки - вершине, центру полигона ...
... привязки к другим элементам нужно считать ...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Samovar от 19 Март 2018, 22:10:43
Dmi3ryd, мы тут с Николай Николаев "посоветовались" (интересная и редкая тема), и, видимо, пришли к выводу, что тебе надо врубиться в драйвера Блендера, и запускать его командой на Windows:
blender.exe  --enable-new-depsgraph
Можешь создать ярлык с параметром --enable-new-depsgraph
Как на Linux запускать, не знаю... это к Николай Николаев вопрос...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Николай Николаев от 20 Март 2018, 12:36:50
... небольшой мувик по привязке к середине полигона https://youtu.be/fnpYuIXXEZg  ...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Dmi3ryd от 21 Март 2018, 11:09:51
Samovar, Николай Николаев большое Вам спасибо за помощь.!

Я периодически изучаю Houdini, был удивлен тому, как просто работает нода Copy.
Сразу возник вопрос, как сделать подобное в Blender.

Драйверы пока для меня сложны, т.к. Blender знаю поверхностно. Надеюсь освою это направление.

Из всех ответов мне близок тот вариант, что прислал Николай, просто, быстро и доступно. Еще раз спасибо.!

Как мне кажется, данная функция позволяет сэкономить время. Я уже писал выше, где я применяю ее.
Лично мне это экономит большое количество времени и делает работу проще.
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Samovar от 21 Март 2018, 11:45:38
Успехов! На самом деле, там всё просто, если врубиться...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Николай Николаев от 21 Март 2018, 13:34:52
>> Я периодически изучаю Houdini, был удивлен тому, как просто работает нода Copy.
... можешь дать ссылку на документацию, в которой показано как работает эта нода с элементами полисетки? ...
... в принципе в Blender есть ограничители, в том числе и копирования положения https://docs.blender.org/manual/ru/dev/rigging/constraints/index.html#transform ...
... можно попробовать крепить драйверами пустышки к контрольным вершинам полисетки и уже далее делать через ограничители ...
... будет более практично рассмотреть твою задачу на конкретном примере и с аналогами реализации в другом ПО ...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Artem от 21 Март 2018, 16:27:55
Помещаете Empty в точку, координату которой надо скопировать. Делаете элемент, с которого надо получить координату, родителем Empty.

Потом добавляете констрейнт Copy Location - выбираете Empty в качестве цели. Можете ограничить оси, относительность и т.п.
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Николай Николаев от 21 Март 2018, 16:31:54
Помещаете Empty в точку, координату которой надо скопировать. Делаете элемент, с которого надо получить координату, родителем Empty.

Потом добавляете констрейнт Copy Location - выбираете Empty в качестве цели. Можете ограничить оси, относительность и т.п.
... можешь показать небольшой пример? не совсем понятно как привязать Empty к отдельной вершине полисетки ...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Николай Николаев от 21 Март 2018, 16:57:04
... попробовал привязать текст к двум вершинам полигона ...
... пример во вложении, если перейти в режим редактирования полигона и двигать эти вершины, то после завершения редактирования текст встаёт по центру ребра ...
... то есть теоретически и наверное практически (хотя нудненько) привязать можно ...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Artem от 21 Март 2018, 19:56:42
Помещаете Empty в точку, координату которой надо скопировать. Делаете элемент, с которого надо получить координату, родителем Empty.

Потом добавляете констрейнт Copy Location - выбираете Empty в качестве цели. Можете ограничить оси, относительность и т.п.
... можешь показать небольшой пример? не совсем понятно как привязать Empty к отдельной вершине полисетки ...

Выбираете Empty, потом выбираете с Shift полисетку, потом нажимается Ctrl-P - так вы ее привязываете.
Потом просто перемещаете Empty туда, где она должна быть. Будет двигаться вместе с родителем (даже если тот вращается, масштабируется и искажается иным образом).

От Empty вы можете заимствовать координаты для Copy Location.
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Николай Николаев от 21 Март 2018, 20:03:48
>> потом выбираете с Shift полисетку, потом нажимается Ctrl-P - так вы ее привязываете
... на самом деле суть не в этом ...
... таким образом привязывается пустышка ко всему объекту ...
... а нужно http://blender-3d.ru/forum/index.php/topic,2078.msg29207.html#msg29207 ...
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Artem от 22 Март 2018, 07:18:54
Запретить изменение размера, и сделать обычного родителя. Будет изменяться вместе, но не масштабироваться.
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Samovar от 22 Март 2018, 18:35:58
Artem, выложи файл примера своего метода ... спасибо!
Название: Re: Привязка объекта в точке другого объекта
Отправлено: Dmi3ryd от 02 Апрель 2018, 12:55:09
... можешь дать ссылку на документацию, в которой показано как работает эта нода с элементами полисетки? ...
Постараюсь найти в уроках. Это было очень давно.