3d旋转引起的变形问题

旋转一个3d球体,沿着 x轴 或 y轴 旋转没有问题,但如果同时沿着 x 和 y 轴旋转,球体就会变形,摊手.jpg,效果如图:左方是正常的,右方的是沿着左上角旋转 180 度后的情况,而且诡异的是旋转 360 度后变形就恢复了。。。。。。太诡异了

var q_tmp = new cc.Quat();
var out_Q = cc.vmath.quat.rotateAround(q_tmp, this.node._quat, cc.v3(-1, 1, 0), Math.PI * 0.1);
this.node.setRotation(out_Q.x, out_Q.y, out_Q.z, out_Q.w);
这是我旋转用的代码, cc.v3(1, 0, 0) 或者 cc.v3(0, 1, 0) 都不会引擎模型变形,一旦同时旋转 x 和 y 就会出现变形

一个题外话,vmath 是已经废弃的 API,尽量使用 math

import { Quat, math } from 'cc';

const q_tmp = new Quat();
const out_Q = math.Quat.rotateAround(q_tmp, this.node._quat, cc.v3(), Math.PI * 0.1);
this.node.setRotation(out_Q.x, out_Q.y, out_Q.z, out_Q.w);

旋转轴需要归一化才能传给 rotateAround,我会在 API 文档中补充一下

好的,蟹蟹

果然解决了,谢谢大神。。。祝大神中秋快乐
只需加上 cc.v3(-1, 1, 0).normalizeSelf() 就不变形了。。。

你用的是什么版本啊,beta 15 上面的 node 上没有 _quat 这个属性,也不允许你获取这个属性

是啊老哥 我这也没_quat这个参数 是undefined```

额 改成_rot可以了

这个是不推荐写法,推荐写法请参考链接中被注释的写法,需要使用 typescript
https://forum.cocos.com/t/3d-rotatearound/83086/7?u=jaycelai

好嘞~

设置了刚体就没有效果了啊