继续吐槽反人类的右手坐标系,现在物体节点执行lookAt目标居然是-z轴朝向目标

目前要做一个功能,通过代码让角色面向目标,并走向目标。

所以做了个测试,场景里有个角色,和一个石头,石头坐标为(0,0,0),角色坐标为(3,0,0)

角色的模型坐标系是脸朝向Z方向(标准的角色建模方式,不用怀疑,不会有错)。

角色默认面向屏幕方向。
如下图

现在要通过代码让角色面向目标石头,所以执行以下代码。
this.role.lookAt(this.stone.position); // 执行角色看向石头目标
如 下图

运行结果,角色的屁股朝向了目标
如下图

这时让玩家往脸朝向方向行走,
this.role.translate(new Vec3(0,0,1)); // 角色的脸朝向正Z,所以往自身坐标的正Z方向走

结果玩家和目标的距离越走越远。

node.lookAt 方向是 -z轴朝向,node.forward 也是 -z轴朝向
之前也提过forward向 -z轴的问题的帖子 creator3d节点方向bug,节点的forward属性的方向和节点z轴朝向写反了

现在开发者几乎用的都是,脸默认朝向Z轴正方向的模型,美术也是按这种标准建模。
这就造成了,在creator3d里,脸就是菊花,菊花就是脸。

引擎组人员进来,现在你们还觉得右手坐标系很合理吗?

opengl 也是 右手系

opengl用不用右手坐标系不是关键,关键的是右手坐标系开发游戏太蛋疼了。右手坐标系用在数理逻辑方面的还比较合适,但是用在世界观上就让人很难理解。

引擎组大佬,lookAt是由-z面向目标怎么破啊。以后的版本能否在lookAt函数里多加个参数用于控制是哪个轴面向目标。

+1 一直觉得游戏还是用左手坐标系好,,,,

1赞

2021-02-01_141007


方向向量根据自己模型的朝向定义

3赞