- Рейтинг
- 42
Всем привет! У меня тут возник вопрос. Представьте себе два одинаковых объекта. Задача простая - нужно сделать так, чтобы при вращении одного объекта второй вращался вдвое медленнее. То есть, когда я прямо во вьюпорте поворачиваю мышкой первый объект, второй должен тут же поворачиваться на вдвое меньший угол. Все просто, когда объекты свободны - выделяешь ведомый объект, идешь на вкладку motion, выбираешь нужную ось, назначаешь Rotation Script, там создаешь переменную, и нажимаешь кнопку Assign Track. Далее в открывшемся списке выбираешь ведущий объект и трек его вращения вокруг той же оси. Все работает - потому что в данном случае я получаю в переменную угол поворота, неограниченный 360 градусами - то есть, если я ведущий объект повернул три раза, то переменная у меня примет значение 360*3=1080. Таким образом, я могу теперь просто поделить это число пополам, и ведомый объект будет поворачиваться как и должен на угол, вдвое меньший.
Вся сложность приходит тогда, когда ведущий объект сам уже управляется каким то плагином, и у него вообще нет трека вращения вокруг интересующей оси. Обычно, я в таком случае делаю следущее: создаю три поинта, два из них линкую к ведущему объекту, один линкую к миру. Тогда, при вращении мышкой ведущего объекта я могу отследить угол, на который я поворачиваю ведущий объект - этот угол будет равен углу, образуемому тремя поинтами. Но этот угол может лежать в пределах от 0 до 360! я таким способом не могу узнать, на сколько оборотов я повернул свой ведущий объект. Если угол ведущего меняется от 0 до 360, то после деления пополам, угол поворота ведомого объекта будет меняться от 0 до 180. То есть, если я ведущий объект поверну на два оборота ровно, то по идее, ведомый объект должен повернуться на один оборот. Однако, на деле (из за того что угол его поворта не больше 180, как сказано выше) получается следущее - ведомый объект поворачивается сначала от нуля градусов до 180, а потом происходит резкий скачок назад - опять на ноль градусов - и все повторяется - поворот от нуля до 180. Вместо того, чтобы совершить полный оборот, ведомый объект два раза проходит первую половину оборота. Мои детали обладают осью симметрии второго порядка - внезапный поворот на 180 градусов проходит незаметно. Когда анимация просматривается во вьюпорте, никаких проблем и не видно - все вполне номально крутится. Но когда включается motion blur, все обнаруживается. Дело в том, что MB отслеживает положения объектов в трехмерном пространстве - и каждый кадр ведомый объект поворачивается на небольшой угол, как и должен. Но в одном кадре происходит скачок на 180 градусов - MB начинает думать, что объект крутится со страшной силой (за один кадр поворот на целых полоборота!), и размазывает его так, что ведомый объект в этом кадре становится почти невидим. Один-единственный кадр, но он портит впечатление. Был вариант заменить этот кадр соседним - но получается заметная задержка во времени, да и просто хочется разобраться, как же заставить ведомый объект крутиться как следует? Прошу прозения за многабукаф
Вся сложность приходит тогда, когда ведущий объект сам уже управляется каким то плагином, и у него вообще нет трека вращения вокруг интересующей оси. Обычно, я в таком случае делаю следущее: создаю три поинта, два из них линкую к ведущему объекту, один линкую к миру. Тогда, при вращении мышкой ведущего объекта я могу отследить угол, на который я поворачиваю ведущий объект - этот угол будет равен углу, образуемому тремя поинтами. Но этот угол может лежать в пределах от 0 до 360! я таким способом не могу узнать, на сколько оборотов я повернул свой ведущий объект. Если угол ведущего меняется от 0 до 360, то после деления пополам, угол поворота ведомого объекта будет меняться от 0 до 180. То есть, если я ведущий объект поверну на два оборота ровно, то по идее, ведомый объект должен повернуться на один оборот. Однако, на деле (из за того что угол его поворта не больше 180, как сказано выше) получается следущее - ведомый объект поворачивается сначала от нуля градусов до 180, а потом происходит резкий скачок назад - опять на ноль градусов - и все повторяется - поворот от нуля до 180. Вместо того, чтобы совершить полный оборот, ведомый объект два раза проходит первую половину оборота. Мои детали обладают осью симметрии второго порядка - внезапный поворот на 180 градусов проходит незаметно. Когда анимация просматривается во вьюпорте, никаких проблем и не видно - все вполне номально крутится. Но когда включается motion blur, все обнаруживается. Дело в том, что MB отслеживает положения объектов в трехмерном пространстве - и каждый кадр ведомый объект поворачивается на небольшой угол, как и должен. Но в одном кадре происходит скачок на 180 градусов - MB начинает думать, что объект крутится со страшной силой (за один кадр поворот на целых полоборота!), и размазывает его так, что ведомый объект в этом кадре становится почти невидим. Один-единственный кадр, но он портит впечатление. Был вариант заменить этот кадр соседним - но получается заметная задержка во времени, да и просто хочется разобраться, как же заставить ведомый объект крутиться как следует? Прошу прозения за многабукаф