【问题标题】:Convert an animation to .js to use it in three.js将动画转换为 .js 以在 three.js 中使用
【发布时间】:2016-03-01 23:25:24
【问题描述】:

您好,我正在使用 JavaScript 迈出第一步,也正在使用 three.js。

即使它使用 json 加载器加载,此示例的动画 http://threejs.org/examples/#webgl_morphtargets_horse 也是 .js 而不是 .json,它看起来像这样:https://github.com/mrdoob/three.js/blob/master/examples/models/animated/horse.js

如何从使用 Blender 制作的动画中获取类似的文件?目前我知道我有一个到 json 但没有到 js 的 three.js 导出器。或者也许有办法将json转换为js?

非常感谢您的帮助

【问题讨论】:

    标签: json three.js converter blender


    【解决方案1】:

    欢迎来到 Javascript/WebGL 世界!

    JSON 与 JS

    • JSON == JavaScript 对象表示法(要读取的数据)
    • JS == Javascript(运行代码)

    两种不同的东西。 JS是代码; JSON 是对象的字符串表示形式(在本例中为网格、变形等)。查看JSON official site 或谷歌以获得更温和的介绍。

    在示例中,JS 是:

    var x = 0.1;
    console.log(Math.floor(x));
    

    虽然 JSON 看起来像:

    {
      "obj": "cool",
      "count": 1
    }
    

    您会特别感兴趣的是 horse file is JSON,只是带有 .js 扩展名。这就是我从three.js 导出器中得到的。异步函数不关心扩展名(可能是“horse.foo”); three.js 只是尝试在提供的 URL 处获取文件并将字符串解析为 JSON(匹配 three.js 的格式)。

    复制动画

    直接跳到codepen example 到 TL;DR。

    使用 three.js 示例作为起点非常棒。我倾向于为此使用本地服务器,从长远来看它们不会持久(我将它们关闭,它们着火等)。所以我制作了horse example on codepen 的副本。它只是您引用的示例的完整克隆,但带有 codepen 资源。我会从 fork 开始,然后从那里开始工作。

    听起来好像您在使blender three.js exporter 正常工作方面取得了一些成功,所以我会这样做。您可以将该 JSON 作为另一个代码笔发布并像我在 (slightly modified) fork 中那样引用它。

    对于我的例子,我把这个animated ... thing(我不是艺术家)放在一起。请注意有问题的动画是如何从第 0-30 帧运行的,与以下代码所要求的相同:

    var clip = THREE.AnimationClip.CreateFromMorphTargetSequence('gallop', geometry.morphTargets, 30);
    

    希望这能解决您的问题。

    【讨论】:

    • 非常感谢。你的回答真的让我明白了!!
    • 现在我可以理解 var 剪辑和从第 0-30 帧运行的动画,但我正在尝试与此动画 s000.tinyupload.com/?file_id=07429365581548704592 相同,但它不起作用,甚至如果我正确地写了帧数。你知道为什么吗?谢谢你的帮助@user01
    • @gnazoa 整洁的动画和垫子。希望我有你的搅拌机技能。坏消息是我认为这不会像现在这样飞起来。这对于 23Mb 和 130k(!!) 面来说是巨大的。并且循环垫不会导出到 three.js json。 'level3' obj = 150Mb 的盲导出。虽然并非不可能,但我认为这对于 three.js 来说是不合理的。但是,假设你没有被吓倒:减少你的多边形数量并在 three.js 中创建你的垫子(完全是另一个主题)。大约 70 岁之后,那次冲浪带来的伤害比帮助更大。开始更简单,让演示工作,然后启动一切,直到你无法忍受文件大小/多边形/帧率
    猜你喜欢
    • 2013-08-15
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2013-04-12
    相关资源
    最近更新 更多