从 obj/gtlf 个文件创建动画,导入 Unity

Create an animation from obj/gtlf files, import in Unity

我有 350 个 gtlf 文件。最初的文件是 OBJ 格式(350 个文件 + 音频),我用 obj2gtlf 将它们转换成单独的 gtlf。

如何创建包含所有 350 个关键帧的动画 gtlf 文件?或者我如何使用这 350 个 obj/gltf 文件在 Unity 中创建动画?

我想 import/create 使用这些文件和 运行 Hololens 应用程序在 Unity 中制作动画。通过放置此动画,我希望在我的 Hololens 应用程序中看到播放体积视频。

但我无法使用 gtlf 变换制作序列,它似乎只需要一个 gtlf 文件(而不是全部 350 个)并将纹理分离到单独的 jpg 文件中。我无法在 Unity 中使用时间轴创建动画。

谁能帮帮我?我是 Unity 的新手,找不到解决方案

PS: 骨骼动画不是解决方案。我的文件代表了一个用体积视频方法捕获的真人。他留下来,说话,微笑并移动他的手。我需要将 3d 动画模型导入 Unity 才能在我的硕士论文中使用它。所以我没有为那个模型制作动画,我有一个捕获的视频作为 350 个 obj 文件 + 网格作为 jpg 和音频。我可以将单个 3d 模型导入为 obj 文件,但我找不到导入动画体积视频的方法。

您似乎有一个非常具体的用例,您确实需要将它们作为单独的 3D 模型和纹理/材质。

如前所述,最简单但可能不是最高效的方法是将所有这些 3D 对象简单地放在场景中,并且一次只将其中一个设置为活动对象。

例如

public class ModelFrames : MonoBehaviour
{
    // You drag these all in once via the Inspector
    public GameObject[] models;

    private int currentIndex = -1;

    private void Awake()
    {
        foreach(var model in models)
        {
            model.SetActive(false);
        }
    }

    private void Update()
    {
        if(currentIndex >= 0)
        {
            models[currentIndex].SetActive(false);
        }

        currentIndex = (currentIndex + 1) % models.Length;

        models[currentIndex].SetActive(true);
    }
}

如果你不想切换每一帧你也可以添加一些修饰符然后做

public class ModelFrames : MonoBehaviour
{
    // You drag these all in once via the Inspector
    public GameObject[] models;

    public int targetFramesPerSecond = 60;

    private void Awake()
    {
        foreach(var model in models)
        {
            model.SetActive(false);
        }
    }

    private IEnumerator Start()
    {
        var currentIndex = 0;

        models[currentIndex].SetActive(true);

        while(true)
        {
            yield return new WaitForSeconds(1f / targetFramesPerSecond);

            models[currentIndex].SetActive(false);

            currentIndex = (currentIndex + 1) % models.Length;

            models[currentIndex].SetActive(true);
        }
    }
}