Здравствуйте, жители форума Render.ru!
Подскажите, пожалуйста, как правильно отмасштабировать анимированную модель (например, уменьшить масштаб на 35%), а потом обнулить всю историю о трансформациях с помощью утилиты ResetXForm. Я пробовал применять эту утилиту на одну из моделей и получил следующее:
После применения утилиты масштаб меша возвращается к исходному (на видео я не стал уменьшать масштаб), а его местоположение изменяется. Почему? Насколько я понимаю, утилита ResetXForm должна была обнулить всю историю о трансформациях. Что я делаю не правильно и как это делается правильно? Еще читал в интернете, что ResrtXForm рекомендуют использовать в паре с модификатором XForm. Если так, то как их правильно использовать, чтобы меш не смещался?
Заранее благодарен за помощь.
PS: Достаточно недавно начал пользоваться 3ds max 2011 и многого пока еще не знаю.
Anton ChernovМожно попробовать Rescale World Units в утилитах.
Спасибо за подсказку. Утилита весьма полезная конечно, но меня больше интересует работа с утилитой ResetXForm. Как ей правильно пользоваться (без смещения меша), чтобы обнулить информацию о трансформациях модели? Мне это нужно для того, чтобы импортировать модель в игру в виде модификации без ненужной информации о ее трансформациях (вращениях, масштабировании, перемещения и т.п.).
В доте не смотрел модели, но обычно в компьютерных моделях есть root кость, которая и отвечает за трансформы меша. Может у нее и нужно сбрасывать трансформы?
ТессерактВ доте не смотрел модели, но обычно в компьютерных моделях есть root кость, которая и отвечает за трансформы меша. Может у нее и нужно сбрасывать трансформы?
Да, кость root имеется. Через нее я и изменяю масштаб модели, но если потом использовать на меш или кость root утилиту ResetXForm, то происходит тоже самое, что и на видео.
Модель из доты 2 взята для примера. Подобная проблема проявляется и у некоторых моделей из других игр.
А для каких целей сбрасывать трансформ на кости? Ну и пусть у нее будет скейл не правильный. Это на что-то влияет разве? Если я чего-то не понимаю и очень сильно нужно, то можно воспользоваться Skin Wrap'ом. (в теории, я не проверял)
ТессерактА для каких целей сбрасывать трансформ на кости? Ну и пусть у нее будет скейл не правильный. Это на что-то влияет разве? Если я чего-то не понимаю и очень сильно нужно, то можно воспользоваться Skin Wrap'ом. (в теории, я не проверял)
Просто я читал в интернете, что перед импортом модели из 3ds max рекомендуется сбрасывать всю информацию о трансформациях, поскольку уменьшение масштаба модели чисто визуальные, а реальные размеры остаются неизменными. Если импортировать модель в игру, то выглядеть она будет нормального размера, но движок будет считать ее реальные размеры, которые куда больше, что может приводить к некоторым проблемам. Например, снаряды будут попадать в модель, хотя визуально они должны были пролететь мимо.
Плюс я надеялся, что мне это поможет подгружать другие анимации без изменения масштаба. Сейчас если я подгружаю анимацию (например, ходьбы) на модель с уже уменьшенным масштабом, то ее масштаб вновь возвращается к исходному. Мне вновь приходится уменьшать масштаб, но вместе с этим уменьшаются и кости эффектов (необходимые для игры), из-за чего уменьшается масштаб проигрываемых на этой модели визуальных эффектов в игре.
Анимацию изначально надо делать в реальном размере. Сохиани анимацию в файл, сохрани скининг в файл. Потом сделай тот размер что тебе нужен у скелета и модели примени резетиксформ. Затем привяжи модельк скелету используя файл скина и назначь анимацию.
Теоретически должно работать...
Andrey _BelskiyАнимацию изначально надо делать в реальном размере. Сохиани анимацию в файл, сохрани скининг в файл. Потом сделай тот размер что тебе нужен у скелета и модели примени резетиксформ. Затем привяжи модельк скелету используя файл скина и назначь анимацию.
Теоретически должно работать...
Так у меня по сути так оно и есть изначально. Модель со скелетом в одном FBX файле, а каждая анимация в отдельном FBX файле. Сейчас загрузил модель со скелетом, уменьшил масштаб, применил ResetXForm и... произошло то же, что и на видео. Я так и не пойму, как правильно пользоваться этой утилитой.
Я думаю что ресетить трансформации на анимированном объекте это не очень правильно, а ещё более неправильно делать это на скалированных костях. Но утверждать не буду - не специалист 🙂
Накатал небольшой скриптик который по идее должен обходить проблему. Т.е. он изменяет маштаб заскиненных объектов до модификатора skin, но не уверен что это решит проблему.
sliderTime = 0f
sel_ = for i in $ collect i
obj_arr = #()
-- Make snapshotrs of the objects:
for i in sel_ do
(
append obj_arr (snapshot i)
)
-- Add "morpher" modifier before "skin" modifier and insert snapshooted mesh into it.
setCommandPanelTaskMode #modify
for i = 1 to sel_.count do
(
select sel_[i]
addModifier sel_[i] (morpher()) before:1
WM3_MC_BuildFromNode sel_[i].morpher 1 obj_arr[i]
WM3_MC_SetValue sel_[i].morpher 1 100.0
sel_[i].skin.alwaysDeform = false
sel_[i].skin.alwaysDeform = true
maxOps.CollapseNodeTo sel_[i] 2 off
)
-- Delete temprorary data
for i in obj_arr do
(
delete i
)
Для работы выделить объекты для изменения маштаба. Скрипт запустить через MaxScript->New Script: вставить в окно текст скрипта и Tools->Evaluate all
Яж написал, сохрани скин в файл. Затем отскалируй скелет и геометрию. На геометрию ресетхформ и колапс. На костях ресет скейл через утилиту bones tools. Потом опять скинишь геометрию используя сохраненые данные. Волшебства не будет, руами придется поработать много.
GoodManНакатал небольшой скриптик который по идее должен обходить проблему. Т.е. он изменяет маштаб заскиненных объектов до модификатора skin, но не уверен что это решит проблему.
Я что-то не пойму, что именно делает ваш скрипт? Это своего рода замена утилиты RestXForm или что? Его применять до масштабирования или уже после? Выделять нужно кости (например, root кость) или меш?
PS: А вы скрипты на заказ не пишите?
Andrey _BelskiyЯж написал, сохрани скин в файл. Затем отскалируй скелет и геометрию. На геометрию ресетхформ и колапс. На костях ресет скейл через утилиту bones tools. Потом опять скинишь геометрию используя сохраненые данные. Волшебства не будет, руами придется поработать много.
Простите, просто я не все понимаю из сказанного. Как я уже писал, я недавно начал осваивать 3ds max и многого просто не знаю. На днях почитаю о сохранении скина в файл и использовании утилиты bones tools. Спасибо вам за помощь.
ПочемучкинЯ что-то не пойму, что именно делает ваш скрипт? Это своего рода замена утилиты RestXForm или что? Его применять до масштабирования или уже после? Выделять нужно кости (например, root кость) или меш?
PS: А вы скрипты на заказ не пишите?
Простите, просто я не все понимаю из сказанного. Как я уже писал, я недавно начал осваивать 3ds max и многого просто не знаю. На днях почитаю о сохранении скина в файл и использовании утилиты bones tools. Спасибо вам за помощь.
Скрипт применять на том-же этапе (судя по видео), где собирались применять ResetXForm.
Т.е. импортировали модель, затем импортировали анимацию - потом выделили объекты (не кости) и применили скрипт.
P.S. Скрипты на заказ не пишу, скорее балуюсь по мере необходимости. 🙂
P.P.S. Думаю способ, предложенный "Andrey _Belskiy" будет более правильный с технической точки зрения 😉
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Почемучкин
Подскажите, пожалуйста, как правильно отмасштабировать анимированную модель (например, уменьшить масштаб на 35%), а потом обнулить всю историю о трансформациях с помощью утилиты ResetXForm. Я пробовал применять эту утилиту на одну из моделей и получил следующее:
После применения утилиты масштаб меша возвращается к исходному (на видео я не стал уменьшать масштаб), а его местоположение изменяется. Почему? Насколько я понимаю, утилита ResetXForm должна была обнулить всю историю о трансформациях. Что я делаю не правильно и как это делается правильно? Еще читал в интернете, что ResrtXForm рекомендуют использовать в паре с модификатором XForm. Если так, то как их правильно использовать, чтобы меш не смещался?
Заранее благодарен за помощь.
PS: Достаточно недавно начал пользоваться 3ds max 2011 и многого пока еще не знаю.
Андрей Шаймарданов
Anton Chernov
Почемучкин
Почемучкин
Тессеракт
Почемучкин
Модель из доты 2 взята для примера. Подобная проблема проявляется и у некоторых моделей из других игр.
PS: Кстати, вот сама модель и анимация покоя. Может так будет проще помочь?
Тессеракт
Почемучкин
Плюс я надеялся, что мне это поможет подгружать другие анимации без изменения масштаба. Сейчас если я подгружаю анимацию (например, ходьбы) на модель с уже уменьшенным масштабом, то ее масштаб вновь возвращается к исходному. Мне вновь приходится уменьшать масштаб, но вместе с этим уменьшаются и кости эффектов (необходимые для игры), из-за чего уменьшается масштаб проигрываемых на этой модели визуальных эффектов в игре.
Андрей Бельский
Теоретически должно работать...
Почемучкин
GoodMan
Накатал небольшой скриптик который по идее должен обходить проблему. Т.е. он изменяет маштаб заскиненных объектов до модификатора skin, но не уверен что это решит проблему.
sliderTime = 0f sel_ = for i in $ collect i obj_arr = #() -- Make snapshotrs of the objects: for i in sel_ do ( append obj_arr (snapshot i) ) -- Add "morpher" modifier before "skin" modifier and insert snapshooted mesh into it. setCommandPanelTaskMode #modify for i = 1 to sel_.count do ( select sel_[i] addModifier sel_[i] (morpher()) before:1 WM3_MC_BuildFromNode sel_[i].morpher 1 obj_arr[i] WM3_MC_SetValue sel_[i].morpher 1 100.0 sel_[i].skin.alwaysDeform = false sel_[i].skin.alwaysDeform = true maxOps.CollapseNodeTo sel_[i] 2 off ) -- Delete temprorary data for i in obj_arr do ( delete i )Для работы выделить объекты для изменения маштаба. Скрипт запустить через MaxScript->New Script: вставить в окно текст скрипта и Tools->Evaluate allАндрей Бельский
Почемучкин
PS: А вы скрипты на заказ не пишите?
Простите, просто я не все понимаю из сказанного. Как я уже писал, я недавно начал осваивать 3ds max и многого просто не знаю. На днях почитаю о сохранении скина в файл и использовании утилиты bones tools. Спасибо вам за помощь.
GoodMan
Т.е. импортировали модель, затем импортировали анимацию - потом выделили объекты (не кости) и применили скрипт.
P.S. Скрипты на заказ не пишу, скорее балуюсь по мере необходимости. 🙂
P.P.S. Думаю способ, предложенный "Andrey _Belskiy" будет более правильный с технической точки зрения 😉