中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 2170|回复: 6

关于骨骼动画节省常量寄存器的问题

[复制链接]
发表于 2016-4-30 15:34:37 | 显示全部楼层 |阅读模式
实现骨骼动画,通常做法是CPU中计算出每根骨骼的世界矩阵(三个float4),然后传给GPU常量寄存器;可不可以仅传递位置和旋转信息给GPU常量寄存器(两个float4),然后在GPU中生成骨骼世界矩阵,再对顶点做变换,这样相当于节省了一个float4。理论上貌似可行,大家有木有尝试这样弄过呢???
发表于 2016-5-1 12:16:31 | 显示全部楼层
完全可以的,我正在研究制作的萌梦动画编辑器
其中的骨骼动画,也是自己研究了很久优化的结果。可以在很低配置的手机上运行。主要考虑到uniform的数量太小了。所以这么做了。
 楼主| 发表于 2016-5-2 07:31:26 | 显示全部楼层
jiangcaiyang 发表于 2016-5-1 12:16
完全可以的,我正在研究制作的萌梦动画编辑器
其中的骨骼动画,也是自己研究了很久优化的结果。可以在很低 ...

谢谢回复,你是用双四元数实现的嘛?双四元数参考下面的链接实现木有问题 https://www.cs.utah.edu/~ladislav/dq/index.html 不过要想做到效果完全正确 VS中要有比较运算符 我在弄Flash AGAL 寄存器128个 VS不支持比较运算 我想在GPU里用四元数推到出矩阵,然后改变顶点位移,但是尝试之后动画变形了,还木有找到问题原因


mengfanxin于2016-5-2 20:14补充以下内容:
这个方案可行,我这边Shader系数乘错了,导致的蒙皮变形,已经验证了~
发表于 2016-5-5 20:30:50 | 显示全部楼层
我也写过比较多有关这个的文章。四元数转矩阵还是挺方便的。如果你在C++端做,有Qt的方便方法,如果你在GLSL上做,也有类似GLSL代码可以使用。
发表于 2016-6-13 11:39:34 | 显示全部楼层
本帖最后由 渣渣熊猫 于 2016-6-13 13:24 编辑

发表于 2018-10-28 20:01:07 | 显示全部楼层
不错的贴,太喜欢了,大家都顶啊












本站发布红包,见者有份!

每人每天都可免费领取一次!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2019-1-23 16:29 , Processed in 0.062871 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表