/// <summary> /// 指定されたストリームから読み込む。 /// </summary> internal static ボーンフレーム 読み込む(Stream fs) { var frame = new ボーンフレーム(); frame.ボーン名 = ParserHelper.get_Shift_JISString(fs, 15); frame.フレーム番号 = ParserHelper.get_DWORD(fs); frame.ボーンの位置 = ParserHelper.get_Float3(fs); frame.ボーンの回転 = ParserHelper.get_Quaternion(fs); // 補間データ[4][4][4] frame.補間データ = new byte[4][][]; for (int i = 0; i < 4; i++) { frame.補間データ[i] = new byte[4][]; for (int j = 0; j < 4; j++) { frame.補間データ[i][j] = new byte[4]; for (int k = 0; k < 4; k++) { frame.補間データ[i][j][k] = ParserHelper.get_Byte(fs); } } } // 補間データからベジェ曲線を生成する。 // 補間データは、[0][0~3][0~4] のみ使用。 frame.ベジェ曲線 = new ベジェ曲線[4]; for (int i = 0; i < 4; i++) { var curve = new ベジェ曲線() { //v0 = new Vector2( 0, 0 ), v1 = new Vector2((float)frame.補間データ[0][0][i] / 128f, (float)frame.補間データ[0][1][i] / 128f), // (0,0)側の方向点 v2 = new Vector2((float)frame.補間データ[0][2][i] / 128f, (float)frame.補間データ[0][3][i] / 128f), // (1,1)側の方向点 //v3 = new Vector2( 1, 1 ), }; frame.ベジェ曲線[i] = curve; } return(frame); }
/// <summary> /// 指定されたストリームから読み込む。 /// </summary> internal static カメラフレーム 読み込む(Stream fs) { var frame = new カメラフレーム(); frame.フレーム番号 = ParserHelper.get_DWORD(fs); frame.距離 = ParserHelper.get_Float(fs); frame.位置 = ParserHelper.get_Float3(fs); frame.回転 = ParserHelper.get_Float3(fs); frame.回転.X = -frame.回転.X; // カメラの回転量は正負が逆であるため、ここで符号を反転しておく。 frame.回転.Y = -frame.回転.Y; frame.回転.Z = -frame.回転.Z; frame.補間データ = new byte[6][]; for (int i = 0; i < 6; i++) { frame.補間データ[i] = new byte[4]; for (int j = 0; j < 4; j++) { frame.補間データ[i][j] = ParserHelper.get_Byte(fs); } } frame.視野角 = ParserHelper.get_DWORD(fs); frame.パースペクティブ = (0 == ParserHelper.get_Byte(fs)) ? true : false; // 0 が ON で 1 が OFF なので注意 // 補間データからベジェ曲線を生成する。 frame.ベジェ曲線 = new ベジェ曲線[6]; for (int i = 0; i < 6; i++) { var curve = new ベジェ曲線 { //v0 = new Vector2( 0, 0 ), v1 = new Vector2(frame.補間データ[i][0] / 128f, frame.補間データ[i][1] / 128f), v2 = new Vector2(frame.補間データ[i][2] / 128f, frame.補間データ[i][3] / 128f), //v3 = new Vector2( 1, 1 ), }; frame.ベジェ曲線[i] = curve; } return(frame); }