Three.js - 蒙皮骨架网格实例,动画和混合

 跟-着感觉走 发布于 2023-02-12 09:21

我正在开发一款小型多人游戏,它有一个单一的皮肤玩家网格,很多玩家使用它.一些背景:我尝试通过maya和blender collada export加载.两者似乎都参考了某种形式的动画数据,但我无法让它发挥作用.我已经尝试过maya JSON导出器,它只用一条物质线吐出很小的1k文件.最后,搅拌机JSON导出器工作.对于那些也试图加载蒙皮网格的人,我发现这非常有用:模型与骨骼动画(blender导出)在three.js中动画不正确

所以现在我有一个来自JSON加载器的geometry对象和materials数组.

我可以设置skinning=true材料,创建一个THREE.SkinnedMesh,添加到场景,添加动画THREE.AnimationHandler.add(我不清楚AnimationHandler实际上做了什么),创建一个THREE.Animation,调用play()update(dt).最后我在我的场景中播放了一个网格和一个动画.

现在我想要的是这些......

    很多例子 - 我想在我的场景中运行不止一个玩家模型.

    我不希望多次加载相同的网格和动画数据.

    动画时间应该是每个实例(因此它们不会同步动画).

    我应该创建多个THREE.SkinnedMeshTHREE.Animation相同的型号?哪里THREE.AnimationHandler来的?

    许多动画 - 我希望空闲/运行周期能够单独播放.

    AFAIK只有一个动画关键帧的时间轴.Three.js如何为我分区,或者我必须手动执行此操作?

    动画混合 - 当角色停止运行并使用空闲动画静止不动时,我不希望从一个角色到另一个角色立即快速捕捉.我想暂停运行动画并将该状态重新混合到空闲动画中.

    目前这是否可以使用蒙皮网格(不是变形目标)?是否有关于此的示例或文档?

任何信息都会受到高度赞赏,即使只是朝着正确的方向努力.我不是在完整的教程之后,我想了解一些关于这些功能的更高级别的信息.

我可以愉快地实现23,但我想要一些关于threejs皮肤和动画框架的信息/描述文档来帮助我入门.例如,这不是很多.

[ 编辑 ]
谢谢,@ NishchitDhanani,这个页面相当不错,但没有提到多个动画或混合骨骼动画:http://chimera.labs.oreilly.com/books/1234000000802/ch05.html#animating_characters_with_skinning

这个页面说多个动画仍然是当前的问题,但不多(在评论中稍微讨论):http: //devmatrix.wordpress.com/2013/02/27/creating-skeletal-animation-in-blender-and -exporting,其对三JS /

目前的答案是......

    使用很多THREE.SkinnedMesh但仍然不确定THREE.AnimationHandler.

    不知道.也许有一种方法可以手动修改开始/结束关键帧THREE.Animation.

    未实施AFAIK.我可能会尝试创建一个自定义着色器,可以使用两个THREE.Animations并在它们之间进行插值.

insominx.. 13

从版本67(2014年4月)开始,支持骨架动画混合和多个动画.您仍然需要SkinnedMesh为每个模型创建一个.该AnimationHandler负责更新(打勾)每一帧动画,所以你应该叫上更新,而不是手动每个Animation.

请参阅新添加的示例:webgl_animation_skinning_blending.html或在此处查看我自己的几个:

基本字符控制器(时间扭曲速度混合)

时间扭曲速度混合

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有