从 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);
}
}
}
我有 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);
}
}
}