你半夜一点给我发消息,说Agent在虚拟环境里突然自己拐弯撞墙,我隔着屏幕都能感觉到你抓狂。巧了,这种鬼问题我上周刚经历过,当时不是Agent的脑子坏了,是它脚下的坐标系反了。模型在三维虚拟空间里跑,用的还是2D时代的思维——把世界坐标当成本地坐标,把深度值当成距离,结果一转弯就歪。最后我把所有空间变换打印出来,才看到那行旋转矩阵转欧拉角的代码,顺序填反了。
3D虚拟环境里的Agent,跟你在平面上做AI最大的区别就在于“姿态”这个东西。平面上的XY坐标够用,顶多再加个角度。可一旦进了三维,你就得跟四元数、欧拉角、旋转矩阵打交道,还要处理物体局部坐标系和世界坐标系之间的变换关系。如果你用欧拉角存储Agent朝向,然后想当然地对三个角度做插值,那恭喜你,万向锁会在某个俯仰角等你。这是我在实际项目里踩过的坑,别问怎么知道的。
先看一段典型的坑货写法:
# 别这样写!欧拉角直接插值会出事euler_start=(0,0,0