ejoy / ant

Ant game engine
MIT License
3.84k stars 388 forks source link

gltf 兼容性 #95

Closed cloudwu closed 9 months ago

cloudwu commented 9 months ago

Discussed in https://github.com/ejoy/ant/discussions/91

Originally posted by **constly** February 17, 2024 我在[sketchfab](https://sketchfab.com/) 这个网站上下载了好几个模型,都没办法正常运作起来,各有各的问题(有些是显示不全,有些是动画播放不对等等之类的) 比如 [这个](https://sketchfab.com/3d-models/stylized-roman-warrior-838a087bd2d54808bdf106eba40fdab1) 就是动画播放不对: (我把下载的模型直接放ant.test.simple下的,不知道是否要用编辑器处理下) ![bug_01](https://github.com/constly/ant_demo/blob/main/img/bug_01.png?raw=true) 希望有空帮忙看看是什么情况 ~ 这两个模型应该都可以免费下来测试[模型1](https://sketchfab.com/3d-models/tifa-advent-children-dissidia-red-df2f2c6abe94426da4aa9cf4837115dc) [模型2](https://sketchfab.com/3d-models/stylized-roman-warrior-838a087bd2d54808bdf106eba40fdab1) , glb/gltf格式一样的表现
cloudwu commented 9 months ago

等另外一些重要的 bug 解决后就看一下这个。

gltf 本身是用 json 描述的,解析格式非常简单,specs 见 https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html

但让引擎完整支持 gltf 可以表达的东西,可能还需要很多工作。只能一点点来。

julywind168 commented 9 months ago

是的 我用的一个 glb 动画不对 😓

cloudwu commented 9 months ago

初步看了原因:这个动画驱动的不是模型的蒙皮动画,而是直接驱动的静态模型节点。

即这里 https://github.com/ejoy/ant/wiki/Animation 提到的由动画驱动场景对象。这种动画需要创建 modifier 对象,而现在引擎的 Prefab 还没有支持 modifier 的持久化;而只能通过运行时代码创建。

需要做的工作:让 gltf 转换成引擎的 prefab 文件时,把相关 modifier 也构造出来,这样才能在实例化 prefab 自动带上这类动画。

aimoonchen commented 9 months ago

@HYbutterfly 最新引擎已兼容没有蒙皮但是父亲为骨骼的Mesh。