Vector 如何在CC3摄影机或CC3网格节点上设置原点轴

Vector 如何在CC3摄影机或CC3网格节点上设置原点轴,vector,rotation,cocos3d,Vector,Rotation,Cocos3d,所以我在Obj-C中使用Cocos3D 由于我最初的问题似乎不够清楚,无法得到任何答案,我又写了一遍 我正在制作一个3D查看器,通过它,我希望能够在屏幕上拖动手指,使我的对象(Dobj)自行旋转 -(void) startRotatingObjectOnXYAxis { saveXYAxisStartLocation = Dobj.rotation; } -(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement { CC3Vector rot

所以我在Obj-C中使用Cocos3D

由于我最初的问题似乎不够清楚,无法得到任何答案,我又写了一遍

我正在制作一个3D查看器,通过它,我希望能够在屏幕上拖动手指,使我的对象(
Dobj
)自行旋转

-(void) startRotatingObjectOnXYAxis { saveXYAxisStartLocation = Dobj.rotation; }
-(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement
{
    CC3Vector rotateVector = CC3VectorMake(aMovement.y, aMovement.x, 0.0f);
    Dobj.rotation = CC3VectorAdd(saveXYAxisStartLocation, rotateVector);
}
问题是,当我这样做时,对象轴也会旋转,之后会有一些拖动,X轴将是垂直的(而不是水平的),旋转会变得非常混乱

因此,我想在每次拖动后将轴重置为原点

诸如此类:

-(void) startRotatingObjectOnXYAxis { saveXYAxisStartLocation = Dobj.rotation; }
-(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement
{
    [Dobj moveMeshOriginTo:CC3VectorMake(0.0f, 0.0f, saveXYAxisStartLocation.z)];
    CC3Vector rotateVector = CC3VectorMake(aMovement.y, aMovement.x, 0.0f);
    Dobj.rotation = CC3VectorAdd(saveXYAxisStartLocation, rotateVector);
}
但它没有任何效果


在我的示例中,
aMovement
(uipangestrerecognizer*)手势。translation
值。

好的,我最终以以下解决方案结束:

-(void) startRotatingObjectOnXYAxis { objectXYAxisStartRotation =  CC3VectorMake(0.0f, 0.0f, 0.0f); }
-(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement
{
    CC3Vector rotateVector = CC3VectorMake(aMovement.y, aMovement.x, 0.0f);
    [Dobj rotateBy:CC3VectorDifference(rotateVector, objectXYAxisStartRotation)];
    objectXYAxisStartRotation = rotateVector;
}
rotateBy似乎只旋转对象,而不旋转轴。 所以问题解决了