Render.ru

забрать движение с бипеда на модель

Geser

Активный участник
Рейтинг
5
#1
Люди, помогите пожалуйста написать срипт:
есть бипед который управляет моделью. модель состоит из разрывных жестких частей, например нога состоит из 3 частей - ступня, бедро и голень. Части привязаны к бипеду - некоторые жестко, некоторые сразу к двум костям через констрейнты. Надо сделать так, чтобы после удаления бипеда части имели ключевые кадры с нужной частотой через N кадров.

Я сделал модель, заанимировал, выделил некоторые кадры и сказал SetKeys. Но почему то после удаления бипеда части модели на встают в выбранных кадрах в нужные позиции.
Еще попробовал написать такой скрипт для бедра модели
animate on
for t in 0 to 400 by 5 do
at time t (
obj = $Model_ThighR
t = obj.transform
obj.transform = t
)
Ключевые кадры расставились с нужной частотой, но опять после удаления бипеда бедро в нужные позиции не становится.
 

IN_human

Активный участник
Рейтинг
11
#3
Не парься, просто скопируй шейпы с объектов на кости бипеда:
что-то типа:
$Bip01Head.baseobject = $Head.baseobject

Ну а если надо приконстрейненому сколапсить анимацию:

macroScript AnimBake category:"IN_tools"
(
global objArr, transArr, nameArr
----------------------------------------------------------------------------------
rollout storeAnim "Bake Animation v1.1"
(
group "Time"
(
spinner startT "Start: " range:[-9999999,9999999,animationRange.start] type:#integer fieldWidth:45 align:#center across:2
spinner endT " End: " range:[-9999999,9999999,animationRange.end] type:#integer fieldWidth:45 align:#center
)
button store "Store" width:100
button restore "Restore" width:100 enabled:false
label nodeFind "Find node by:"
checkButton handleButton "Handle" across:2 align:#center width:90 checked:true
checkButton nameButton "Name" width:90
label stateString "ready"
on handleButton changed state do
(
nameButton.state = not state
)
on nameButton changed state do
(
handleButton.state = not state
)
on store pressed do
(
objArr = #()
nameArr = #()
transArr = #()
--max time start
--max time forward
--max time back
if $!=undefined do
(
if (classOf $)==objectSet then for i in $ do
(
append objArr i.handle
append nameArr i.name
append transArr #()
)
else
(
objArr = #($.handle)
nameArr = #($.name)
append transArr #()
)
for j=startT.value to endT.value do
(
--max time forward
if (classOf $)==objectSet then for i=1 to $.count do
(
at time j append transArr $.transform
stateString.text = j as string
)
else
(
at time j append transArr[1] $.transform
)
)
stateString.text = "stored"
restore.enabled = true
)
)
on restore pressed do undo "Bake animation" on
(
for i=1 to objArr.count do
(
if handleButton.state then curObj = maxOps.getNodeByHandle ObjArr
else curObj = getNodeByName nameArr
curObj.position.controller = linear_position()
curObj.rotation.controller = Euler_XYZ()
curObj.scale.controller = scale_script()
)
animate on
for j=1 to transArr[1].count do
(
for i=1 to objArr.count do
(
if handleButton.state then curObj = maxOps.getNodeByHandle ObjArr
else curObj = getNodeByName nameArr
at time (startT.value+j-1) curObj.transform = transArr[j]
stateString.text = j as string
)
)
stateString.text = "stored"
)
)
---------------------------------------------------------------------
createDialog storeAnim width:280
)

--я крут 8)))
 
Сверху