Example #1
0
 public static Vector3 ComplementTranslate(カメラフレーム frame1, カメラフレーム frame2, Vector3 progress)
 {
     return(new Vector3(
                Lerp(frame1.位置.X, frame2.位置.X, progress.X),
                Lerp(frame1.位置.Y, frame2.位置.Y, progress.Y),
                Lerp(frame1.位置.Z, frame2.位置.Z, progress.Z)));
 }
Example #2
0
        public static Quaternion ComplementRotateQuaternion(カメラフレーム frame1, カメラフレーム frame2, float progress)
        {
            var q1 = Quaternion.RotationYawPitchRoll(frame1.回転.Y, frame1.回転.X, frame1.回転.Z);
            var q2 = Quaternion.RotationYawPitchRoll(frame2.回転.Y, frame2.回転.X, frame2.回転.Z);

            return(Quaternion.Slerp(q1, q2, progress));
        }
Example #3
0
        private void _フレームを更新する(カメラフレーム cameraFrame1, カメラフレーム cameraFrame2, カメラ camera, 射影 projection, float 進行度合い0to1)
        {
            float ProgX = cameraFrame1.ベジェ曲線[0].横位置Pxに対応する縦位置Pyを返す(進行度合い0to1);
            float ProgY = cameraFrame1.ベジェ曲線[1].横位置Pxに対応する縦位置Pyを返す(進行度合い0to1);
            float ProgZ = cameraFrame1.ベジェ曲線[2].横位置Pxに対応する縦位置Pyを返す(進行度合い0to1);
            float ProgR = cameraFrame1.ベジェ曲線[3].横位置Pxに対応する縦位置Pyを返す(進行度合い0to1);
            float ProgL = cameraFrame1.ベジェ曲線[4].横位置Pxに対応する縦位置Pyを返す(進行度合い0to1);
            float ProgP = cameraFrame1.ベジェ曲線[5].横位置Pxに対応する縦位置Pyを返す(進行度合い0to1);

            // カメラ(ビュー)

            camera.移動する(
                注視点からの距離: CGHelper.Lerp(cameraFrame1.距離, cameraFrame2.距離, ProgL),
                注視点の位置: CGHelper.ComplementTranslate(cameraFrame1, cameraFrame2, new Vector3(ProgX, ProgY, ProgZ)),
                回転: CGHelper.ComplementRotateQuaternion(cameraFrame1, cameraFrame2, ProgR));

            // 射影

            float angle = CGHelper.Lerp(cameraFrame1.視野角, cameraFrame2.視野角, ProgP);

            projection.視野角rad = CGHelper.ToRadians(angle);
        }