_worldMatrix 各项值分析

_worldMatrix矩阵信息中每个项分别是表示什么值? 继续讨论:

有不正确的地方,还望批评指正。游戏开发萌新一个,前段时间想分析下拖尾到底是怎么实现的?,结果从shader看到矩阵再看到计算机图形学。先把学会的心得记录下来

_worldMatrix 到底是什么上
_worldMatrix 到底是什么中
_worldMatrix 到底是什么下

3赞

大神求解:https://forum.cocos.com/t/topic/83634
为什么最后求四个点的时候展开公式和旋转公式对应不上。

注意 cocos中矩阵转置。我在旋转的地方有说明。

[x,y,1] [cos sin 0]
[-sin cos 0]

这个不支持公式,凑合看下。希望能帮助到你

今天在分析 _updateLocalMatrix 发现给你回复应该是错误的,这个很矩阵转置没关系。是一个在计算机图形学中,规定

  • 逆时针方向为正。而现实生活中,顺时针方向为正。
  • cos 是偶函数,关于y轴对称 ,值正负相等
  • sin 是奇函数, 值正负取反相等
  • 三角函数公式推导中 sin(-a) =-sin(a) ; cos(-a)=cos(a)

不知这次理解是否是正确,仅做参考。

照这么说的话,cc里面node的rotation是以右手坐标系的逆时针为正。

在CCNode的_updateLocalMatrix方法中

let rotation = -this._eulerAngles.z;
let rotationRadians = rotation * ONE_DEGREE;
let a = 1, b = 0, c = 0, d = 1;
c = Math.sin(rotationRadians);
d = Math.cos(rotationRadians);
a = d; // cos
b = -c; // -sin

t.m00 = a *= sx;
t.m01 = b *= sx;
t.m04 = c *= sy;
t.m05 = d *= sy;

即旋转矩阵为
| cos sin |
| -sin cos |

在按你说的取个负变成
| cos -sin |
| sin cos |

好像是这么回事,但是感觉差了点,又不知道差在哪。:joy:

其实我也有这种感觉,就是一直查询不到权威的资料