КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Временные интервалы
Ось вращения Написанный выше сценарий можно было бы сделать более удобным для пользователя, чтобы он мог выбрать также ось вращения колеса с помощью кнопок - переключателей, которые следует ввести в определение пользовательского интерфейса данного сценария. Для этого введите следующие строки кода после строки определения кнопки button but_setkeys: label lab_rotAxis "Local Rotation Axis: " radiobuttons rbt_rotAxis labels:#("X","Y","Z") default:3 Если ввести эти элементы пользовательского интерфейса, то для их размещения в диалоговом окне придется соответственно изменить его высоту (сделайте это в предпоследней и последней строках сценария). Далее в той части кода, где Глава 5 устанавливаются ключевые кадры анимации колеса, можно воспользоваться состоянием кнопки rotAxis.state, чтобы задать конкретную ось вращения. Итак, замените код из блока контекста with animate on в обработчике событий on but_setKeys pressed следующим фрагментом кода: rAxis = rbt_rotAxis.state at time spn_startFrame.value wheelObject.rotation.controller[rAxis] \ .controller.value = 0 at time spn_endFrame.value wheelObject.rotation.controlIer[rAxis] \.controller.value = totalDegrees
Созданный только что сценарий вполне работоспособен для анимации автомобиля, преодолевающего весь путь с одинаковой скоростью. Но если скорость или направление движения автомобиля может измениться в любой момент, то придется установить ключевые кадры через определенные интервалы и рассчитать вращение колеса для каждого ключевого кадра. Для того чтобы предоставить пользователю возможность устанавливать конкретные интервалы времени, сценарий можно дополнить счетчиком TimeStep (Временной интервал), введя следующую строку кода перед определением кнопки buttonbut_setkeys: spinner spn_timeStep "Time Step: " range: [1,10,5] Если ввести этот элемент пользовательского интерфейса, то для его размещения в диалоговом окне придется соответственно изменить высоту данного окна. Для получения в любой момент длины пройденного пути в процентах необходимо знать, какой объект следует по этому пути. Для выбора этого объекта можно предоставить соответствующую кнопку или же предположить, что это родительский объект выбранного колеса. Для доступа к родительскому объекту колеса можно воспользоваться следующим оператором: wheelObject.parent А длину пути, пройденного автомобилем, в процентах можно рассчитать с помощью следующего выражения: wheelObject.parent.controller.percent / 100 Для установки только двух ключевых кадров вместо контекста animate лучше организовать цикл. На каждом шаге цикла выбирается значение из счетчика Time Step и по нему определяется конкретный кадр анимации для установки ключевого кадра. Итак, замените весь блок кода с контекстом with animateon следующим фрагментом кода: local rAxis = rbt_rotAxis.state local curDeg, curPerc, distTraveled, numRotations for t = spn_startFrame.value to spn_endFrame.value \ by spn_timeStep.value do ( at time t Преобразования и анимация ( curPerc = wheelObject.parent.position.controller.percent / 100 numRotations = distTraveled / (2 * pi * wheelObject.radius) animate on wheelObject.rotation.controller[rAxis]. \ ) ) Для того чтобы сделать вращение колеса более привлекательным визуально, установите режим Show Trajectory (Показать траекторию) для объекта Wheel01- Motionlndicator. А для проверки данного метода воспользуйтесь сценой из файла \chapter5\ Roadster_reverse.max на прилагаемом к этой книге CD-ROM. В этой сцене автомобиль проезжает весь путь, а затем возвращается назад, останавливаясь на полпути. За ним, соответственно, следует камера.
Дата добавления: 2014-10-15; Просмотров: 542; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |