MDP: fix encoding issues.
authorKim Kulling <kim.kulling@googlemail.com>
Tue, 12 Sep 2017 19:16:59 +0000 (21:16 +0200)
committerKim Kulling <kim.kulling@googlemail.com>
Tue, 12 Sep 2017 19:16:59 +0000 (21:16 +0200)
code/MMDPmdParser.h
code/MMDPmxParser.cpp
code/MMDPmxParser.h
code/MMDVmdParser.h

index 5439b90..586f20a 100644 (file)
@@ -49,17 +49,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 namespace pmd
 {
-       /// ヘッダ
        class PmdHeader
        {
        public:
-               /// モデル名
                std::string name;
-               /// モデル名(英語)
                std::string name_english;
-               /// コメント
                std::string comment;
-               /// コメント(英語)
                std::string comment_english;
 
                bool Read(std::ifstream* stream)
@@ -83,26 +78,19 @@ namespace pmd
                }
        };
 
-       /// 頂点
        class PmdVertex
        {
        public:
-               /// 位置
                float position[3];
 
-               /// 法線
                float normal[3];
 
-               /// UV座標
                float uv[2];
 
-               /// 関連ボーンインデックス
                uint16_t bone_index[2];
 
-               /// ボーンウェイト
                uint8_t bone_weight;
 
-               /// エッジ不可視
                bool edge_invisible;
 
                bool Read(std::ifstream* stream)
@@ -117,27 +105,17 @@ namespace pmd
                }
        };
 
-       /// 材質
        class PmdMaterial
        {
        public:
-               /// 減衰色
                float diffuse[4];
-               /// 光沢度
                float power;
-               /// 光沢色
                float specular[3];
-               /// 環境色
                float ambient[3];
-               /// トーンインデックス
                uint8_t toon_index;
-               /// エッジ
                uint8_t edge_flag;
-               /// インデックス数
                uint32_t index_count;
-               /// テクスチャファイル名
                std::string texture_filename;
-               /// スフィアファイル名
                std::string sphere_filename;
 
                bool Read(std::ifstream* stream)
@@ -180,23 +158,15 @@ namespace pmd
                RotationMovement
        };
 
-       /// ボーン
        class PmdBone
        {
        public:
-               /// ボーン名
                std::string name;
-               /// ボーン名(英語)
                std::string name_english;
-               /// 親ボーン番号
                uint16_t parent_bone_index;
-               /// 末端ボーン番号
                uint16_t tail_pos_bone_index;
-               /// ボーン種類
                BoneType bone_type;
-               /// IKボーン番号
                uint16_t ik_parent_bone_index;
-               /// ボーンのヘッドの位置
                float bone_head_pos[3];
 
                void Read(std::istream *stream)
@@ -219,19 +189,13 @@ namespace pmd
                }
        };
 
-       /// IK
        class PmdIk
        {
        public:
-               /// IKボーン番号
                uint16_t ik_bone_index;
-               /// IKターゲットボーン番号
                uint16_t target_bone_index;
-               /// 再帰回数
                uint16_t interations;
-               /// 角度制限
                float angle_limit;
-               /// 影響下ボーン番号
                std::vector<uint16_t> ik_child_bone_index;
 
                void Read(std::istream *stream)
@@ -303,7 +267,6 @@ namespace pmd
                }
        };
 
-       /// ボーン枠用の枠名
        class PmdBoneDispName
        {
        public:
@@ -338,59 +301,36 @@ namespace pmd
                }
        };
 
-       /// 衝突形状
        enum class RigidBodyShape : uint8_t
        {
-               /// 球
                Sphere = 0,
-               /// 直方体
                Box = 1,
-               /// カプセル
                Cpusel = 2
        };
 
-       /// 剛体タイプ
        enum class RigidBodyType : uint8_t
        {
-               /// ボーン追従
                BoneConnected = 0,
-               /// 物理演算
                Physics = 1,
-               /// 物理演算(Bone位置合せ)
                ConnectedPhysics = 2
        };
 
-       /// 剛体
        class PmdRigidBody
        {
        public:
-               /// 名前
                std::string name;
-               /// 関連ボーン番号
                uint16_t related_bone_index;
-               /// グループ番号
                uint8_t group_index;
-               /// マスク
                uint16_t mask;
-               /// 形状
                RigidBodyShape shape;
-               /// 大きさ
                float size[3];
-               /// 位置
                float position[3];
-               /// 回転
                float orientation[3];
-               /// 質量
                float weight;
-               /// 移動ダンピング
                float linear_damping;
-               /// 回転ダンピング
                float anglar_damping;
-               /// 反発係数
                float restitution;
-               /// 摩擦係数
                float friction;
-               /// 演算方法
                RigidBodyType rigid_type;
 
                void Read(std::istream *stream)
@@ -414,31 +354,19 @@ namespace pmd
                }
        };
 
-       /// 剛体の拘束
        class PmdConstraint
        {
        public:
-               /// 名前
                std::string name;
-               /// 剛体Aのインデックス
                uint32_t rigid_body_index_a;
-               /// 剛体Bのインデックス
                uint32_t rigid_body_index_b;
-               /// 位置
                float position[3];
-               /// 回転
                float orientation[3];
-               /// 最小移動制限
                float linear_lower_limit[3];
-               /// 最大移動制限
                float linear_upper_limit[3];
-               /// 最小回転制限
                float angular_lower_limit[3];
-               /// 最大回転制限
                float angular_upper_limit[3];
-               /// 移動に対する復元力
                float linear_stiffness[3];
-               /// 回転に対する復元力
                float angular_stiffness[3];
 
                void Read(std::istream *stream)
@@ -459,7 +387,6 @@ namespace pmd
                }
        };
 
-       /// PMDモデル
        class PmdModel
        {
        public:
@@ -491,7 +418,6 @@ namespace pmd
                        return result;
                }
 
-               /// ファイルからPmdModelを生成する
                static std::unique_ptr<PmdModel> LoadFromStream(std::ifstream *stream)
                {
                        auto result = mmd::make_unique<PmdModel>();
index 6a76c2c..c38bdf4 100644 (file)
@@ -45,7 +45,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 namespace pmx
 {
-       /// インデックス値を読み込む
        int ReadIndex(std::istream *stream, int size)
        {
                switch (size)
@@ -79,7 +78,6 @@ namespace pmx
                }
        }
 
-       /// 文字列を読み込む
        std::string ReadString(std::istream *stream, uint8_t encoding)
        {
                int size;
@@ -607,7 +605,6 @@ namespace pmx
                        this->joints[i].Read(stream, &setting);
                }
 
-               //// ソフトボディ
                //if (this->version == 2.1f)
                //{
                //      stream->read((char*) &this->soft_body_count, sizeof(int));
index 4aff7f8..989cffe 100644 (file)
@@ -49,7 +49,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 namespace pmx
 {
-       /// インデックス設定
        class PmxSetting
        {
        public:
@@ -64,26 +63,17 @@ namespace pmx
                        , rigidbody_index_size(0)
                {}
 
-               /// エンコード方式
                uint8_t encoding;
-               /// 追加UV数
                uint8_t uv;
-               /// 頂点インデックスサイズ
                uint8_t vertex_index_size;
-               /// テクスチャインデックスサイズ
                uint8_t texture_index_size;
-               /// マテリアルインデックスサイズ
                uint8_t material_index_size;
-               /// ボーンインデックスサイズ
                uint8_t bone_index_size;
-               /// モーフインデックスサイズ
                uint8_t morph_index_size;
-               /// 剛体インデックスサイズ
                uint8_t rigidbody_index_size;
                void Read(std::istream *stream);
        };
 
-       /// 頂点スキニングタイプ
        enum class PmxVertexSkinningType : uint8_t
        {
                BDEF1 = 0,
@@ -93,7 +83,6 @@ namespace pmx
                QDEF = 4,
        };
 
-       /// 頂点スキニング
        class PmxVertexSkinning
        {
        public:
@@ -200,7 +189,6 @@ namespace pmx
                void Read(std::istream *stresam, PmxSetting *setting);
        };
 
-       /// 頂点
        class PmxVertex
        {
        public:
@@ -219,24 +207,16 @@ namespace pmx
                        }
                }
 
-               /// 位置
                float position[3];
-               /// 法線
                float normal[3];
-               /// テクスチャ座標
                float uv[2];
-               /// 追加テクスチャ座標
                float uva[4][4];
-               /// スキニングタイプ
                PmxVertexSkinningType skinning_type;
-               /// スキニング
                std::unique_ptr<PmxVertexSkinning> skinning;
-               /// エッジ倍率
                float edge;
                void Read(std::istream *stream, PmxSetting *setting);
        };
 
-       /// マテリアル
        class PmxMaterial
        {
        public:
@@ -261,42 +241,25 @@ namespace pmx
                        }
                }
 
-               /// モデル名
                std::string material_name;
-               /// モデル英名
                std::string material_english_name;
-               /// 減衰色
                float diffuse[4];
-               /// 光沢色
                float specular[3];
-               /// 光沢度
                float specularlity;
-               /// 環境色
                float ambient[3];
-               /// 描画フラグ
                uint8_t flag;
-               /// エッジ色
                float edge_color[4];
-               /// エッジサイズ
                float edge_size;
-               /// アルベドテクスチャインデックス
                int diffuse_texture_index;
-               /// スフィアテクスチャインデックス
                int sphere_texture_index;
-               /// スフィアテクスチャ演算モード
                uint8_t sphere_op_mode;
-               /// 共有トゥーンフラグ
                uint8_t common_toon_flag;
-               /// トゥーンテクスチャインデックス
                int toon_texture_index;
-               /// メモ
                std::string memo;
-               /// 頂点インデックス数
                int index_count;
                void Read(std::istream *stream, PmxSetting *setting);
        };
 
-       /// リンク
        class PmxIkLink
        {
        public:
@@ -310,18 +273,13 @@ namespace pmx
                        }
                }
 
-               /// リンクボーンインデックス
                int link_target;
-               /// 角度制限
                uint8_t angle_lock;
-               /// 最大制限角度
                float max_radian[3];
-               /// 最小制限角度
                float min_radian[3];
                void Read(std::istream *stream, PmxSetting *settingn);
        };
 
-       /// ボーン
        class PmxBone
        {
        public:
@@ -347,43 +305,24 @@ namespace pmx
                        }
                }
 
-               /// ボーン名
                std::string bone_name;
-               /// ボーン英名
                std::string bone_english_name;
-               /// 位置
                float position[3];
-               /// 親ボーンインデックス
                int parent_index;
-               /// 階層
                int level;
-               /// ボーンフラグ
                uint16_t bone_flag;
-               /// 座標オフセット(has Target)
                float offset[3];
-               /// 接続先ボーンインデックス(not has Target)
                int target_index;
-               /// 付与親ボーンインデックス
                int grant_parent_index;
-               /// 付与率
                float grant_weight;
-               /// 固定軸の方向
                float lock_axis_orientation[3];
-               /// ローカル軸のX軸方向
                float local_axis_x_orientation[3];
-               /// ローカル軸のY軸方向
                float local_axis_y_orientation[3];
-               /// 外部親変形のkey値
                int key;
-               /// IKターゲットボーン
                int ik_target_bone_index;
-               /// IKループ回数
                int ik_loop;
-               /// IKループ計算時の角度制限(ラジアン)
                float ik_loop_angle_limit;
-               /// IKリンク数
                int ik_link_count;
-               /// IKリンク
                std::unique_ptr<PmxIkLink []> ik_links;
                void Read(std::istream *stream, PmxSetting *setting);
        };
@@ -543,7 +482,6 @@ namespace pmx
                void Read(std::istream *stream, PmxSetting *setting); //override;
        };
 
-       /// モーフ
        class PmxMorph
        {
        public:
@@ -551,34 +489,21 @@ namespace pmx
                        : offset_count(0)
                {
                }
-               /// モーフ名
                std::string morph_name;
-               /// モーフ英名
                std::string morph_english_name;
-               /// カテゴリ
                MorphCategory category;
-               /// モーフタイプ
                MorphType morph_type;
-               /// オフセット数
                int offset_count;
-               /// 頂点モーフ配列
                std::unique_ptr<PmxMorphVertexOffset []> vertex_offsets;
-               /// UVモーフ配列
                std::unique_ptr<PmxMorphUVOffset []> uv_offsets;
-               /// ボーンモーフ配列
                std::unique_ptr<PmxMorphBoneOffset []> bone_offsets;
-               /// マテリアルモーフ配列
                std::unique_ptr<PmxMorphMaterialOffset []> material_offsets;
-               /// グループモーフ配列
                std::unique_ptr<PmxMorphGroupOffset []> group_offsets;
-               /// フリップモーフ配列
                std::unique_ptr<PmxMorphFlipOffset []> flip_offsets;
-               /// インパルスモーフ配列
                std::unique_ptr<PmxMorphImplusOffset []> implus_offsets;
                void Read(std::istream *stream, PmxSetting *setting);
        };
 
-       /// 枠内要素
        class PmxFrameElement
        {
        public:
@@ -587,14 +512,11 @@ namespace pmx
                        , index(0)
                {
                }
-               /// 要素対象
                uint8_t element_target;
-               /// 要素対象インデックス
                int index;
                void Read(std::istream *stream, PmxSetting *setting);
        };
 
-       /// 表示枠
        class PmxFrame
        {
        public:
@@ -603,15 +525,10 @@ namespace pmx
                        , element_count(0)
                {
                }
-               /// 枠名
                std::string frame_name;
-               /// 枠英名
                std::string frame_english_name;
-               /// 特殊枠フラグ
                uint8_t frame_flag;
-               /// 枠内要素数
                int element_count;
-               /// 枠内要素配列
                std::unique_ptr<PmxFrameElement []> elements;
                void Read(std::istream *stream, PmxSetting *setting);
        };
@@ -637,17 +554,11 @@ namespace pmx
                                orientation[i] = 0.0f;
                        }
                }
-               /// 剛体名
                std::string girid_body_name;
-               /// 剛体英名
                std::string girid_body_english_name;
-               /// 関連ボーンインデックス
                int target_bone;
-               /// グループ
                uint8_t group;
-               /// マスク
                uint16_t mask;
-               /// 形状
                uint8_t shape;
                float size[3];
                float position[3];
@@ -818,7 +729,6 @@ namespace pmx
                void Read(std::istream *stream, PmxSetting *setting);
        };
 
-       /// PMXモデル
        class PmxModel
        {
        public:
@@ -836,65 +746,35 @@ namespace pmx
                        , soft_body_count(0)
                {}
 
-               /// バージョン
                float version;
-               /// 設定
                PmxSetting setting;
-               /// モデル名
                std::string model_name;
-               /// モデル英名
                std::string model_english_name;
-               /// コメント
                std::string model_comment;
-               /// 英語コメント
                std::string model_english_comment;
-               /// 頂点数
                int vertex_count;
-               /// 頂点配列
                std::unique_ptr<PmxVertex []> vertices;
-               /// インデックス数
                int index_count;
-               /// インデックス配列
                std::unique_ptr<int []> indices;
-               /// テクスチャ数
                int texture_count;
-               /// テクスチャ配列
                std::unique_ptr< std::string []> textures;
-               /// マテリアル数
                int material_count;
-               /// マテリアル
                std::unique_ptr<PmxMaterial []> materials;
-               /// ボーン数
                int bone_count;
-               /// ボーン配列
                std::unique_ptr<PmxBone []> bones;
-               /// モーフ数
                int morph_count;
-               /// モーフ配列
                std::unique_ptr<PmxMorph []> morphs;
-               /// 表示枠数
                int frame_count;
-               /// 表示枠配列
                std::unique_ptr<PmxFrame [] > frames;
-               /// 剛体数
                int rigid_body_count;
-               /// 剛体配列
                std::unique_ptr<PmxRigidBody []> rigid_bodies;
-               /// ジョイント数
                int joint_count;
-               /// ジョイント配列
                std::unique_ptr<PmxJoint []> joints;
-               /// ソフトボディ数
                int soft_body_count;
-               /// ソフトボディ配列
                std::unique_ptr<PmxSoftBody []> soft_bodies;
-               /// モデル初期化
                void Init();
-               /// モデル読み込み
                void Read(std::istream *stream);
-               ///// ファイルからモデルの読み込み
                //static std::unique_ptr<PmxModel> ReadFromFile(const char *filename);
-               ///// 入力ストリームからモデルの読み込み
                //static std::unique_ptr<PmxModel> ReadFromStream(std::istream *stream);
        };
 }
index c5057ef..778ee11 100644 (file)
@@ -50,19 +50,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 namespace vmd
 {
-       /// ボーンフレーム
        class VmdBoneFrame
        {
        public:
-               /// ボーン名
                std::string name;
-               /// フレーム番号
                int frame;
-               /// 位置
                float position[3];
-               /// 回転
                float orientation[4];
-               /// 補間曲線
                char interpolation[4][4][4];
 
                void Read(std::istream* stream)
@@ -86,15 +80,11 @@ namespace vmd
                }
        };
 
-       /// 表情フレーム
        class VmdFaceFrame
        {
        public:
-               /// 表情名
                std::string face_name;
-               /// 表情の重み
                float weight;
-               /// フレーム番号
                uint32_t frame;
 
                void Read(std::istream* stream)
@@ -114,23 +104,15 @@ namespace vmd
                }
        };
 
-       /// カメラフレーム
        class VmdCameraFrame
        {
        public:
-               /// フレーム番号
                int frame;
-               /// 距離
                float distance;
-               /// 位置
                float position[3];
-               /// 回転
                float orientation[3];
-               /// 補間曲線
                char interpolation[6][4];
-               /// 視野角
                float angle;
-               /// 不明データ
                char unknown[3];
 
                void Read(std::istream *stream)
@@ -156,15 +138,11 @@ namespace vmd
                }
        };
 
-       /// ライトフレーム
        class VmdLightFrame
        {
        public:
-               /// フレーム番号
                int frame;
-               /// 色
                float color[3];
-               /// 位置
                float position[3];
 
                void Read(std::istream* stream)
@@ -182,7 +160,6 @@ namespace vmd
                }
        };
 
-       /// IKの有効無効
        class VmdIkEnable
        {
        public:
@@ -190,7 +167,6 @@ namespace vmd
                bool enable;
        };
 
-       /// IKフレーム
        class VmdIkFrame
        {
        public:
@@ -229,23 +205,15 @@ namespace vmd
                }
        };
 
-       /// VMDモーション
        class VmdMotion
        {
        public:
-               /// モデル名
                std::string model_name;
-               /// バージョン
                int version;
-               /// ボーンフレーム
                std::vector<VmdBoneFrame> bone_frames;
-               /// 表情フレーム
                std::vector<VmdFaceFrame> face_frames;
-               /// カメラフレーム
                std::vector<VmdCameraFrame> camera_frames;
-               /// ライトフレーム
                std::vector<VmdLightFrame> light_frames;
-               /// IKフレーム
                std::vector<VmdIkFrame> ik_frames;
 
                static std::unique_ptr<VmdMotion> LoadFromFile(char const *filename)