Render.ru

Как объединить объекты без потери анимации

сенека123

Пользователь сайта
Рейтинг
2
#1
Здравствуйте! Мучаюсь вопросом, как объединить несколько ГО без потери анимации на каждом из ГО т.е. есть у меня много плашек которые крутятся вокруг общего центра по овальной траектории, все хорошо, но проблема в том, что мне нужно объединить все в один меш, а при использовании обыкновенного аттач, слетают с приаттаченных полигонов анимация и они вращаются относительно объекта к которому присоединялись. в прикрепленном файле сама сцена с нужными ГО
можно анимацию снести мою, но как то ну.жно сделать, чтобы был 1 меш и полигоны вращались именно так как теперь
 

Вложения

  • 2 МБ Просмотров: 352

Владислав Бодюл

Активный участник
Рейтинг
15
#4
Попробуй выделить все объекты и запустить код. Переменные в начале кода задают диапазон кадров, а также запекание каждого n-го кадра
В результате будет создан новый объект EditablePoly с анимированными вершинами.

Код:
(
    local startFrame = 0
    local endFrame = 100
    local nthFrame = 1

    fn bakeObject obj sFrame eFrame nthFrame =
    (
        local copyObj = snapShot obj
        copyObj.pivot = [0,0,0]
        convertToPoly copyObj
   
        local popGetVert = PolyOp.GetVert
        local popSetVert = PolyOp.SetVert
   
        animate on
        (
            for f = sFrame to eFrame by nthFrame do
            (
                for v in #{1..(PolyOp.GetNumVerts obj)} do
                (
                    local vPos = at time f (popGetVert obj v)
                    at time f (popSetVert copyObj v vPos)
                )
            )
        )

        return copyObj
    )

    local bakedObjects = #()
    for o in selection where classOf o == Editable_Poly do
    (       
        append bakedObjects (bakeObject o startFrame endFrame nthFrame)
    )

    for i = 2 to bakedObjects.count do
    (
        PolyOp.Attach bakedObjects[1] bakedObjects[i]
    )
)
 
Последнее редактирование:

сенека123

Пользователь сайта
Рейтинг
2
#5
Или через boolean а потом point cache/alembic ...
Попробуй выделить все объекты и запустить код. Переменные в начале кода задают диапазон кадров, а также запекание каждого n-го кадра
В результате будет создан новый объект EditablePoly с анимированными вершинами.

Код:
(
    local startFrame = 0
    local endFrame = 100
    local nthFrame = 1

    fn bakeObject obj sFrame eFrame nthFrame =
    (
        local copyObj = snapShot obj
        copyObj.pivot = [0,0,0]
        convertToPoly copyObj
  
        local popGetVert = PolyOp.GetVert
        local popSetVert = PolyOp.SetVert
  
        animate on
        (
            for f = sFrame to eFrame by nthFrame do
            (
                for v in #{1..(PolyOp.GetNumVerts obj)} do
                (
                    local vPos = at time f (popGetVert obj v)
                    at time f (popSetVert copyObj v vPos)
                )
            )
        )

        return copyObj
    )

    local bakedObjects = #()
    for o in selection where classOf o == Editable_Poly do
    (      
        append bakedObjects (bakeObject o startFrame endFrame nthFrame)
    )

    for i = 2 to bakedObjects.count do
    (
        PolyOp.Attach bakedObjects[1] bakedObjects[i]
    )
)

Попробовал использовать оба варианта, оба работают в максе, но к сожалению анимация по какой то причине не переносится в Unity, в настройках экспорта включаю Baked анимации с 0 по 100 кадр, но анимация не переносится. Использую fbx
 
Сверху