Не хотелось создавать новую тему, но темы "мелкие вопросы", или что-то в этом роде, я не обнарудил.
Имеется велосипедная цепь и две звезды, а так же ось большой звезды.
Цепь анимируется при помощи Dummy, запущенного по пути, на контроле процента прохождения пути стоит float_script следующего содержания:
28 - количество зубцов, 73 - количество звеньев цепи.
Вращаем звезду - всё прекрасно работает
Сама звезда прилинкована к оси.
Вращаем ось - звезда вертится, а цепь стоит на месте...
Вопрос - почему?
Я предполагаю, что неправильно задал переменную sp_rot.
Буду несказанно рад вашей поддержке.
Прикреплённая к ветке тема "Мелкие вопросы" значительно снизит количество подобных тем.
igorznag
Да, Sprocket - это звезда, но проблема не в том, какой объект использовать, понятно, что можно просто ось взять а как сделать именно такую цепь событий, как у велосипеда - педали - ось - звезда - цепь - звезда - колесо. Не поверю, что так нельзя.
iVAt
В этом уроке вообще задаётся изначально анимация гусеницам танка, от которой уже зависит вращение колёс.
На мой взгляд, суть в том, что выражение $Sprocket.rotation.controller.X_Rotation обращается непосредственно к вращению звезды при помощи гизмо, то есть к контроллеру Euler_XYZ, который не учитывает поворот от связи (link) с осью.
Хотя нет, если на контроллер вращения звезды (Sprocket) поставить float script:
Простой пример. В сцене есть 5 объектов: объект "велосипед" (родитель=SceneRoot), объект "ось" (родитель=объект "велосипед"), объект "звезда" (родитель=объект "велосипед"), объект "Dummy-цепь" (родитель=SceneRoot), объект "сплайн-путь" (родитель=объект "велосипед"😉.
1. Выдели объект "звезда", примени к нему Position Constraint и в качестве Target выбери объект "ось".
2. На контроллер вращения объекта "звезда" поставь float script:
3. Выдели объект "Dummy-цепь", примени к нему Path Constraint и в качестве Target выбери объект "сплайн-путь".
4. На контроллер процента прохождения пути объектом "Dummy-цепь" поставь float_script:
Проблема была в том, что нужно объект "звезда" прилинковать не к объекту "ось", а к объекту "велосипед". Объект "ось" и объект "звезда" должны иметь общий родитель (объект "велосипед"😉. Position Constraint нужно было применить к объекту "звезда" (Target = объект "ось"😉, чтобы объект "звезда" перемещался во время перемещения объекта "ось".
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Tweak239
Имеется велосипедная цепь и две звезды, а так же ось большой звезды.
Цепь анимируется при помощи Dummy, запущенного по пути, на контроле процента прохождения пути стоит float_script следующего содержания:
dependsOn $Sprocket.rotation.controller
sp_rot=$Sprocket.rotation.controller.X_Rotation
28.0/73.0*sp_rot/360
28 - количество зубцов, 73 - количество звеньев цепи.
Вращаем звезду - всё прекрасно работает
Сама звезда прилинкована к оси.
Вращаем ось - звезда вертится, а цепь стоит на месте...
Вопрос - почему?
Я предполагаю, что неправильно задал переменную sp_rot.
Буду несказанно рад вашей поддержке.
Прикреплённая к ветке тема "Мелкие вопросы" значительно снизит количество подобных тем.
Вложения
igorznag
iVAt
Tweak239
Да, Sprocket - это звезда, но проблема не в том, какой объект использовать, понятно, что можно просто ось взять а как сделать именно такую цепь событий, как у велосипеда - педали - ось - звезда - цепь - звезда - колесо. Не поверю, что так нельзя.
iVAt
В этом уроке вообще задаётся изначально анимация гусеницам танка, от которой уже зависит вращение колёс.
На мой взгляд, суть в том, что выражение $Sprocket.rotation.controller.X_Rotation обращается непосредственно к вращению звезды при помощи гизмо, то есть к контроллеру Euler_XYZ, который не учитывает поворот от связи (link) с осью.
Хотя нет, если на контроллер вращения звезды (Sprocket) поставить float script:
dependsOn $Cranks_Axis.rotation.controller
ca_rot=$Cranks_Axis.rotation.controller.X_Rotation
ca_rot
то есть прямая зависимость от вращения оси (Cranks_Axis), и крутить ось - цепь всё равно стоит неподвижно. Как так?
igorznag
1. Выдели объект "звезда", примени к нему Position Constraint и в качестве Target выбери объект "ось".
2. На контроллер вращения объекта "звезда" поставь float script:
3. Выдели объект "Dummy-цепь", примени к нему Path Constraint и в качестве Target выбери объект "сплайн-путь".
4. На контроллер процента прохождения пути объектом "Dummy-цепь" поставь float_script:
5. Вращай объект "ось".
Tweak239
Спасибо большое, теперь всё работает.
Получается проблема была в том, что не было Position Constraint? Странно.
igorznag
Tweak239
что бы понимать как оно работает более детально?