/// <summary> /// カメラ視点の更新処理 /// </summary> /// <param name="vm">カメラ視点モード</param> private void ViewpointUpdate(ViewpointMode vm) { Ode.Vector3 viewPos = new Ode.Vector3(); // 視点の位置(x, y, z) Ode.Vector3 viewDir = new Ode.Vector3(); // 視点の方向(ヘッド,ピッチ,ロール) // 車の位置行列・回転行列を取得 Ode.Vector3 pos; ; Ode.Matrix3 R; _car.GetStatus(out pos, out R); switch (vm) { case ViewpointMode.Fixed: break; case ViewpointMode.Trace: viewPos.X = pos.X; viewPos.Y = pos.Y; viewPos.Z = 10.0f; viewDir.X = 90.0f; viewDir.Y = -90.0f; viewDir.Z = 0.0f; Ds.SetViewpoint(ref viewPos, ref viewDir); // 視点の設定 break; case ViewpointMode.FirstPerson: Real yaw = (float)Math.Atan2(R.M21, R.M11) / Ode.PI * 180.0f; viewPos.X = pos.X; viewPos.Y = pos.Y; viewPos.Z = 0.5f; viewDir.X = 90.0f - yaw; viewDir.Y = 0.0f; viewDir.Z = 0.0f; Ds.SetViewpoint(ref viewPos, ref viewDir); // 視点の設定 break; } }
public static warp_Vector Ode2DxVector3(Ode.Vector3 odeV) { return(new warp_Vector(( float )odeV.X, ( float )odeV.Y, ( float )odeV.Z)); }
/// <summary> /// Drawstuffの初期視点設定 /// </summary> private void InitializeViewpoint() { //Ode.Vector3 viewPos = new Ode.Vector3(); // 視点の位置(x, y, z) //viewPos.X = 0.0f; //viewPos.Y = 3.0f; //viewPos.Z = 1.0f; //Ode.Vector3 viewDir = new Ode.Vector3(); // 視点の方向(ヘッド,ピッチ,ロール) //viewDir.X = -90.0f; //viewDir.Y = 0.0f; //viewDir.Z = 0.0f; Ode.Vector3 viewPos = new Ode.Vector3(); // 視点の位置(x, y, z) viewPos.X = 0.0f; viewPos.Y = 0.0f; viewPos.Z = 10.0f; Ode.Vector3 viewDir = new Ode.Vector3(); // 視点の方向(ヘッド,ピッチ,ロール) viewDir.X = 90.0f; viewDir.Y = -90.0f; viewDir.Z = 0.0f; Ds.SetViewpoint(ref viewPos, ref viewDir); // 視点の設定 }