Показать сообщение отдельно
Старый 03.05.2025, 19:00   #86
Dunkelhund
Разработчик
 
Аватар для Dunkelhund
 
Регистрация: 21.03.2009
Адрес: Москва
Сообщений: 1,160
Вы сказали Спасибо: 1,853
Поблагодарили 842 раз(а) в 259 сообщениях
Dunkelhund стоит на развилке (репутация по умолчанию)
По умолчанию Анимация колёс паровоза

Снова поднимаю тему с вращением колёс, так как уже второй день бьюсь с этой проблемой. Капризный МСТС никак не хочет кушать анимацию. Не сказать, что у меня ничего не получилось, но всё-же. Единственный способ заставить колесо вращаться - три ключа. 0 - 179 - 179. Тогда оно совершенно свободно крутится без заеданий. ( Вот казалось, бы, кто в здравом уме будет так странно, относительно градусов, анимировать колесо))?)

Итак, сначала к моим мучениям. Что-бы я ни делал, как бы не анимировал - всегда анимация обрывается на каком-то этапе вращения, а потом, спустя некоторое время, возвращается к первому ключу. Хочу отдельно, сразу, подчеркнуть, что анимировать КП с помощью верных системных названий типа WHEELS11/12/21/22 мне нет резона, потому как у меня есть бегунковая КП меньшего диаметра и у меня будет механизм паровой машины: дышла, шатуны и прочие детали. Я менял количество ключей, делал нечётное количество градусов, делал с автоматическим ключом,закреплял ключи вручную, ставил фильтры - ничего не помогало. Я почитал форум, поднял старинные темы и сообщения, и сделал вывод, что у людей всё получается. Значит косяк где-то у меня. Однажды, психанув, я полез в заведомо рабочий шейп файлик, скопировал оттуда ключи анимации в свой шейп и, ожидаемо, колесо плавно "покатилось". И вот на этом моменте начинается любопытная история:

На тот момент моя КП была анимирована на восемь ключей. 0; 45+; 45+; 45+; 45+; 45+... и так далее, до тех пор, пока не добежит до 360-ти градусов. Сконвертировав шейп ещё раз я обнаружил, что у меня в коде шейпа только пять ключей анимации. Где остальные, спрашивается?

В дальнейшем я пытался играть с количеством ключей и каждый раз мстс издевательский конвертировал не так, как мне бы хотелось: то он оставлял два ключа, то пять, то четыре, то три. Прямо сейчас у меня колесо анимировано в пять ключей: 0 +90 +90 +90 +90. И что вы думаете? В шейп файле издевательски показано только четыре.


Код:
anim_node WHEELS4 (
					controllers ( 1
						tcb_rot ( 4
							tcb_key ( 0 0 0 0 1 0 0 0 0 0 )
							tcb_key ( 1 -0.707107 0 0 0.707107 0 0 0 0 0 )
							tcb_key ( 2 1 0 0 5.90056e-007 0 0 0 0 0 )
							tcb_key ( 3 0.707106 0 0 0.707107 0 0 0 0 0 )
						)
					)
				)
В дальнейшем, приглядевшись к модели во вьювере, я обнаружил, что колесо стопорится как раз перед исходным положением, т.е. ему не хватает, как раз, одного ключа (или кадра, как удобно), отсутствующего в шейп файле!

Спрашивается, где я косячу и где, блин, мои кадры анимации?
Я даже скачивал другой конвертер шейп файлов ( весьма неплохой, кстати ), но и после него у меня всё-так-же проблема - ключи анимации режутся. Либо я сам где-то косячу, либо у меня кривой conv3DS...

https://elvastower.com/tuts/gmax01/c...ruction_6.html

здесь есть один из мануалов (по которому я делал в том числе) где автор, совершенно невозмутимо говорит, что нужно анимировать в восемь ключей по 45 градусов. Толи он что-то умолчал, толи у меня где-то косяк.


ЗЫ: сейчас пришла идея "обмануть" конвертер ( или себя ) и сделать ключей побольше. Анимировать только те, что мне нужны, а потом в шейп файле удалить ненужные, если они там появятся. Попробую, хотя есть чувство, что МСТС и этот фортель обойдёт каким-то своим, магическим образом.

ЗЫЫ: быстренько попробовал и вот результаты: из десяти ключей анимации сконвертировалось только шесть. Дальнейшие действия такие:

Нашёл нужную мне КП. Удалил шестой ключ, который дублирует пятый (так как КП осталась в том-же положении, что и на пятом).

Код:
tcb_rot ( 6
							tcb_key ( 0 0 0 0 1 0 0 0 0 0 )
							tcb_key ( 1 -0.707107 0 0 0.707107 0 0 0 0 0 )
							tcb_key ( 2 1 0 0 5.90056e-007 0 0 0 0 0 )
							tcb_key ( 3 0.707106 0 0 0.707107 0 0 0 0 0 )
							tcb_key ( 4 -1.26441e-006 0 0 1 0 0 0 0 0 )
                    этот ключ удаляем -->  tcb_key ( 5 -1.26441e-006 0 0 1 0 0 0 0 0 )
						)
Далее смотрим на переменную(?) tcb_rot. Изначально в ней было число 6 - это количество наших ключей на конкретном "носителе". Меняем на число пять.


Код:
anim_node WHEELS4 (
					controllers ( 1
						tcb_rot ( 6 <-- здесь меняем на число пять
							tcb_key ( 0 0 0 0 1 0 0 0 0 0 )
							tcb_key ( 1 -0.707107 0 0 0.707107 0 0 0 0 0 )
							tcb_key ( 2 1 0 0 5.90056e-007 0 0 0 0 0 )
							tcb_key ( 3 0.707106 0 0 0.707107 0 0 0 0 0 )
							tcb_key ( 4 -1.26441e-006 0 0 1 0 0 0 0 0 )
						)
					)
				)
Лезем в шейп вьювер и видим, что колесо теперь делает полный оборот, но в исходном положении стопорится. Почему? А потому, что мстс справедливо думает, что у нас десять ключей анимации. Не считая первого, что даёт нам число девять ( не спрашивайте почему так, я не знаю. ) Мы смотрим глазами выше по коду и ищем, где искомое число девять. А вот оно, в самом начале блока с анимацией:

Код:
animations ( 1
		animation ( 9 30
			anim_nodes ( 6
Нам с вами надо пять ключей анимации, но допустим, что первый мы не считаем, а потому вместо 9 ставим 4.
Сохраняем, смотрим в вьювер и вуаля. КП плавно катится.

Всё это, конечно, ядрёный костыль, но хоть так. Дальше попробую прикрутить дышло, но пока в успехе не уверен. Если конвертер так издевается над анимацией колеса, то что говорить о более сложных элементах паровой машины?
__________________
Сдуть пылинку рядом с открытой пепельницей было не самой лучшей идеей.

Последний раз редактировалось Dunkelhund; 03.05.2025 в 20:11.
Dunkelhund вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо Dunkelhund за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА