0

我正在做一个项目,但我被困在这件事上,我得到了一个带有动画的 bvh 文件,我在 3dsmax 中将它放在 Biped 上,然后我使用 thee.js json 导出器将每一帧导出到一个 json 文件中,然后当它播放时,我删除旧网格并添加一个新网格。这会导致模型多次上传,这当然不是我想要的。

我使用 jsonloader,我想知道是否有办法只更新每一帧的几何图形?我也制作了这些单独的文件,因为我不使用皮肤,而且我没有变形目标,因为我在 3dsmax 中使用了 bvh 文件。

如果有人可以帮助我,那就太棒了

示例:http ://www.deschaatssport.nl/3dsportsvisualiser/versie3/?p=3# (按播放按钮)

马蒂斯·詹森

4

1 回答 1

0

假设您的 JSON 导出器保持面/顶点的数量和顺序不变,您可以执行以下操作:

  • 像现在一样加载初始模型
  • geometry.dynamic = true;
  • 使用普通的旧 AJAX 加载其余 JSON 文件(或者,您可以将框架 JSON 文件合并到一个文件中,这样您就可以通过自己的代码访问所有这些文件)
  • 对于每一帧,循环新的帧顶点位置数组(在每帧的 JSON 中找到)并覆盖现有几何顶点的坐标 ( geometry.vertices[i].x = myframevertices[i][0]; etc...)
  • 设置 geometry.verticesNeedUpdate = true; 并渲染框架。

我再次假设每个 JSON 文件具有相同数量和顺序的面/顶点,并且只有顶点位置在每帧中发生变化。我不完全确定它是否像那样工作。

在 Three.js 的 BVH 支持方面也有一些(实验性的?)工作。您可能会成功搜索,但我不知道是否有任何可用的东西。这里的一项相关工作:https ://github.com/akjava/BVH-Motion-Creator

于 2013-04-10T19:26:25.333 回答