Render.ru

Скелетная анимация!

#1
Вопросы такие:

1. Как узнать, есть ли у geometry[n] модифаер Skin?
2. Как получить список костей, если модифаер Skin есть?
3. Как для заданного вертекса получить вес заданной кости?

Заранее большое спасибо!
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#2
1 Проверить по очереди класс всех модификаторов у объекта
for m in $.modifiers do if (classof m) == Skin then print "Skined Object!"

2-3) Help - раздел Skin : Modifier
+ включи макро рекордер
 
#3
denissavin, спасибо что откликнулся!

Help по скриптам у меня есть. Сижу, читаю. По поводу 2 - 3 я так ничего и не нашел, поэтому и спрашиваю...
 
#4
МакроРекордер ничего полезного не сказал :(

skinOps.addBone $.modifiers[#Skin] $Bone04 1
$.modifiers[#Skin].cross_radius = 13.125

А вот как мне узнать у $.modifiers[#Skin] список всех костей?
Что-то типа $.modifiers[#Skin].Bones[n] ??
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#5
Богатая фантазия это тоже конечно хорошо
но легче все же заглянуть в хелп
skinOps.GetNumberBones
skinOps.GetBoneName
там же все про веса
некоторые почему-то думают я буду делать их работу и переводить за них хелп, так у меня других дел достаточно.
Другое дело помоч человеку, у которого не получается не смотря на проштудированную документацию.
 
#6
> некоторые почему-то думают я буду делать их работу и переводить за них хелп, так у меня других дел достаточно

В титрах за тебя замолвлю словечко ;-) Что бы я без тебя делал?

> Другое дело помоч человеку, у которого не получается не смотря на проштудированную документацию.

Ты не поверишь, но это именно такая ситуация ;-)

С количеством костей и именами уже разобрался. Последняя (надеюсь) проблемма осталась в следующем:

skinOps.GetVertexWeight <Skin> <vertex_integer> <vertex_bone_integer>

На сколько я понимаю, именно эта функция мне и нужна для получения веса. <vertex_integer> - понятно, это индекс вертекса в меше. А вот что такое <vertex_bone_integer> я так и не понял. Сначала подумал что это индекс кости, так ведь при четырех костях работает только с единичкой, на остальные ругается :(

Было бы идеально следующее решение: Получить вес вершины по индексу вершины в меше и индексу либо имени кости. Такое возможно?
 
#7
Правка: форум съел параметры в птичках :(

> некоторые почему-то думают я буду делать их работу и переводить за них хелп, так у меня других дел достаточно

В титрах за тебя замолвлю словечко ;-) Что бы я без тебя делал?

> Другое дело помоч человеку, у которого не получается не смотря на проштудированную документацию.

Ты не поверишь, но это именно такая ситуация ;-)

С количеством костей и именами уже разобрался. Последняя (надеюсь) проблемма осталась в следующем:

skinOps.GetVertexWeight Skin vertex_integer vertex_bone_integer

На сколько я понимаю, именно эта функция мне и нужна для получения веса. vertex_integer - понятно, это индекс вертекса в меше. А вот что такое vertex_bone_integer я так и не понял. Сначала подумал что это индекс кости, так ведь при четырех костях работает только с единичкой, на остальные ругается :(

Было бы идеально следующее решение: Получить вес вершины по индексу вершины в меше и индексу либо имени кости. Такое возможно?
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#8
> Хотелось бы функцию >"ПолучитьВесВертексаПоИндексуВертекса_И_ИндексуКости"
Функцию Получил ?
DEN / bemz: Нет :( Где?
Denis Station: Вот это она и есть:

fn GetSkinVertWeight Skin_ Vert BoneID = (
local BoneCount = skinOps.GetVertexWeightCount Skin_ Vert
local bones = for i = 1 to BoneCount collect skinOps.GetVertexWeightBoneID Skin_ Vert i
local Index_Bone = findItem bones BoneID
if Index_Bone == 0 do return 0
try skinOps.GetVertexWeight Skin_ Vert Index_Bone catch (0)
)

m = $.modifiers[#Skin]
GetSkinVertWeight m 23 3
 
Сверху