iPhoneアプリで拡張現実のカメラオーバーレイとしてcocos3dの3Dオブジェクトを追加したいと思います。私はいくつかのモデルでCC3Sceneを持っています。デバイスのカメラの方向に関する情報を取得するためにmotionManagerキャプチャを作成し、-(void)update:(ccTime)dtでcocos3dのシーン内カメラの位置を更新しようとしています(シーンの上方方向はZ軸です) :
-(void) update:(ccTime)dt
{
CMDeviceMotion *currentDeviceMotion = motionManager.deviceMotion;
CMAttitude *currentAttitude = currentDeviceMotion.attitude;
CC3Camera *cam = (CC3Camera*)[cc3Scene getNodeNamed:@"Camera"];
static double lastY = 0;
static double lastP = 0;
static double lastR = 0;
double yaw = CC_RADIANS_TO_DEGREES(currentAttitude.yaw-lastY);
double pitch = CC_RADIANS_TO_DEGREES(currentAttitude.pitch-lastP);
double roll = CC_RADIANS_TO_DEGREES(currentAttitude.roll-lastR);
CC3Vector fd = cc3v(0,1,0);
[cam rotateByAngle:roll aroundAxis:fd];
CC3Vector rp = cc3v(1,0,0);
[cam rotateByAngle:pitch aroundAxis:rp];
CC3Vector up = cc3v(0,0,1);
[cam rotateByAngle:yaw aroundAxis:up];
lastY = currentAttitude.yaw;
lastP = currentAttitude.pitch;
lastR = currentAttitude.roll;
[super update:dt];
}
cocos(現在の軸を使用)の回転順序がデバイスの回転順序と一致しないため、cam.rotation = cc3v(pitch、roll、yaw)を直接使用できませんでした。しかし、私のコードも正しく機能していません。カメラを手動で回転させているときにエラーが発生しました。カメラを正しく回転させるにはどうすればよいかわかりません(順序と軸のほぼすべての組み合わせを試しました)。
では、問題は、ココスのカメラの回転とデバイスのカメラの回転をどのように一致させることができるかということです。私は何かが足りないのですか?または、そのような主題のコードまたはチュートリアルプロジェクトを提供できますか?三角法しかないので、それは簡単な質問だと思いますが、やろうと思ってしまいました。
ありがとう!