比如说:
目标方向是 let target: cc.Vec3;
目标节点是let node3d: cc.Node;
我想通过设置 node3d.eulerAngles 属性使目标节点指向 target 方向,
如何计算此时的欧拉旋转向量 eulerAngles ?
如果想要调用 setRotation ,传入参数 q 设置 node3d 的姿态,使其指向 target 方向,
如何计算此时需要传入的四元数 q ?
我数学水平有限,研究了一下午还没弄明白,还请大佬答疑解惑,先谢过了。
比如说:
目标方向是 let target: cc.Vec3;
目标节点是let node3d: cc.Node;
我想通过设置 node3d.eulerAngles 属性使目标节点指向 target 方向,
如何计算此时的欧拉旋转向量 eulerAngles ?
如果想要调用 setRotation ,传入参数 q 设置 node3d 的姿态,使其指向 target 方向,
如何计算此时需要传入的四元数 q ?
我数学水平有限,研究了一下午还没弄明白,还请大佬答疑解惑,先谢过了。
有大佬看一下吗
周末没人,工作日顶上来,3D大佬帮帮忙。

找到引擎源码文件夹中的value-types文件夹下的quat.js。
在lerp函数下方新增一个上述截图代码中的函数。
之后编译引擎。
该函数使用方法:
返回节点欧拉角旋转后的四元数。
使用范例 this.node.quat = this.node.quat.rotateAround(this.node.quat, cc.v3(0,1,0),Math.PI * 0.5,new cc.Quat());
参数:
rot:节点quat
axis:方向
rad:角度
out:传递的变量
试过了,不行啊。
我的代码是这样的
let p1: cc.Vec3; // 物体运动的上一个位置
let p2: cc.Vec3; // 物体运动的下一个位置
let d: cc.Vec3 = p2.sub(pq); // 计算出物体位于 p1 时的方向向量
node.setRotation(rotateAround(node.getRotation(), d, 0, new cc.Quat())); // 通过方向向量设置物体位于 p1 的姿态
这样做之后姿态并不对
不要沉鸭
你看下我写的那个使用范例
请问你解决没?
并没有
你是想自身旋转?还有 什么?
可以这样理解,我有一组由许多三维空间中的点组成的路径,现在需要使一个飞机依次经过这些点,要求飞机头部始终指向运动的方向,并且飞机的背部永远不朝向地面
持续关注中…
我也来学习下,3d空间的位移和旋转计算