骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 851|回复: 0

[经验与教程] 纠正关于部分人对模型对应游戏程序对象的pos概念的错误理解

[复制链接]

212

主题

1033

回帖

1049

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
2893127
第纳尔
14847
精华
0
互助
93
荣誉
21
贡献
325
魅力
1382
注册时间
2017-11-5
鲜花(431) 鸡蛋(0)
发表于 2023-5-4 22:50:34 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 vegetto 于 2023-5-4 23:13 编辑

最近我了解到很多作者因为不注重模型知识,所以说它很难从代码上理解某些和模型结合的概念。比如有人认为agentpos就是在脚上,有人不清楚bone pos对于骨骼改变的后怎么变化。
首先,你们打开很多模型制作和游戏的模型查看器或者openbrf这种算是骑砍专有的模型查看器。会发现模型附近会有一个直角坐标系。实际上agent get pos也好,prop instance get pos也好,得到的是模型查看器里看到的这个坐标系原点O对应的点在游戏里放置的位置。
因为我们倾向于把物体的某个特征点,比如说底面中心放在原点o上,所以说我们会认为物体的坐标是形体的中心或者是底面,人的坐标是他的脚底,但是实际上不要这么理解。
因为假如你从动作上就做到了悬空和位移改变,那么你的可视形体和你的整体的特征坐标之间是有一定距离的。
我用下面第一张图来举个例子,假如简化为二维的坐标系,不考虑三维。abcd是一个平行四边形,是我们希望在游戏中看到的有形体的部分。而整个模型查看器的原点是o,也就是说平行四边形他的形体部分没有任何一个点放在O上。这样我们在游戏中对这个物体进行控制的时候就会出现如下几种情况:控制物体的放大缩小的时候发现物体好像还在移动;控制物体进行自旋的时候发现并不是自旋,而是一种无规则的曲线运动。
这一切的原因就是我们在看待下面第一张图的时候,游戏里所理解的物体并不abcd,而是oabcd,把o点对模型的任意一个顶点连成向量,你把这个虚拟的连线看成实体的时候,就会好理解的多,对这个物体进行放缩的时候,不仅ab,bc,cd,ad向量在放缩,oa,ob,oc,od也在放缩,而且正是因为通过后者的放缩来实现了前者的放缩。所以进行平移旋转等运动的时候,实际上是拖着o点在进行带动了物体其他顶点的变化。

所以说我们导入模型的时候,不要认为系统自己可以智能的找到整个物体模型我们最需要的形体在哪里,我们要考虑把物体形体上便于我们控制的特征点与原点对应。
比如说我要做一个球形的特效prop,要在游戏里控制运动,那我倾向于把整个球心放在原点上,因为这样的话方便控制边自转边平移,
如果我是做一个放在地面的箱子,那么倾向于把箱子底部中心点放在原点上。
而对于骨骼动画的制作,像以前有些击飞的动画就做的很有问题, 在很多游戏里用于位移行为的动画比如说走路跳跃等等,他们大多是不会把这种位移的行为做到模型动画素材里面的,因为这样会导致你的整个形体和代码控制位移的坐标原点特征点之间自己就产生了随动画帧改变的偏移,这样假如你对整体想要进行复杂的代码类控制位移的时候,就会带来很多的不便,因为你要先抵消这个模型动画位移才能进一步附加代码位移达到你需要的控制效果。

而对于我下面第二张图我进一步解释一下,为什么人体的骨骼坐标xyz和人体整体的agentpos坐标的xyz各坐标值的差值会随着骨骼大小的倍数而翻同等倍数。能够做动画的人模相当于身体上每个顶点与原点O之间连线的向量根据一定规则来扭动,假设某骨骼点为A,那么按照我上面说的平行四边形的理解,骨骼的放大导致人体模型的放大,所以人体模型上的特征顶点A与O的向量OA的模会放大相应的倍数。所以根据这种理论就可以用get bone pos逆算出放大了骨骼倍数的人的bone pos。所以说很多游戏会做动画的人会发现一个问题,就是你把动画整体按原点O旋转和放缩时还能保护原来的动画不扭曲,但是一旦进行平移拖拉,整个动画就乱了,就是因为动画骨骼绕o点的整体旋转放缩,能够保证O对任意点的向量模线性变化和整体变换。
20230504222838front1_0_2893127_FmBRt0oHXPdS-nHfQc7nYW2-z1lB.jpg
20230504222838front1_0_2893127_Fkjdk7NUnQ0WgJWh2Ltl1_8FRZSH.jpg


来自: iPhone客户端
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-12-27 12:15 , Processed in 0.113129 second(s), 20 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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