internal override void 読み込む(Stream fs, PMXヘッダ header)
 {
     関連剛体Aのインデックス = ParserHelper.get_Index(fs, header.剛体インデックスサイズ);
     関連剛体Bのインデックス = ParserHelper.get_Index(fs, header.剛体インデックスサイズ);
     位置           = ParserHelper.get_Float3(fs);
     回転           = ParserHelper.get_Float3(fs);
     移動制限の下限      = ParserHelper.get_Float3(fs);
     移動制限の上限      = ParserHelper.get_Float3(fs);
     回転制限の下限      = ParserHelper.get_Float3(fs);
     回転制限の上限      = ParserHelper.get_Float3(fs);
     ParserHelper.get_Float3(fs);     //6DOF は、 回転・平行移動バネ定数が無効なので読み取ってシーク
     ParserHelper.get_Float3(fs);
 }
Пример #2
0
 /// <summary>
 ///     指定されたストリームから読み込む。
 /// </summary>
 internal override void 読み込む(Stream fs, PMXヘッダ header)
 {
     関連剛体Aのインデックス = ParserHelper.get_Index(fs, header.剛体インデックスサイズ);
     関連剛体Bのインデックス = ParserHelper.get_Index(fs, header.剛体インデックスサイズ);
     位置           = ParserHelper.get_Float3(fs);
     回転rad        = ParserHelper.get_Float3(fs);
     ParserHelper.get_Float3(fs);     // 使わないフィールドをスキップ
     ParserHelper.get_Float3(fs);
     ParserHelper.get_Float3(fs);
     ParserHelper.get_Float3(fs);
     ParserHelper.get_Float3(fs);
     ParserHelper.get_Float3(fs);
 }
        /// <summary>
        ///     指定されたストリームから読み込む。
        /// </summary>
        internal static 材質モーフオフセット 読み込む(FileStream fs, PMXヘッダ header)
        {
            var offset = new 材質モーフオフセット();

            offset.モーフ種類       = モーフ種類.材質;
            offset.材質インデックス    = ParserHelper.get_Index(fs, header.材質インデックスサイズ);
            offset.オフセット演算形式   = ParserHelper.get_Byte(fs);
            offset.拡散色         = ParserHelper.get_Float4(fs);
            offset.反射色         = ParserHelper.get_Float3(fs);
            offset.反射強度        = ParserHelper.get_Float(fs);
            offset.環境色         = ParserHelper.get_Float3(fs);
            offset.エッジ色        = ParserHelper.get_Float4(fs);
            offset.エッジサイズ      = ParserHelper.get_Float(fs);
            offset.テクスチャ係数     = ParserHelper.get_Float4(fs);
            offset.スフィアテクスチャ係数 = ParserHelper.get_Float4(fs);
            offset.Toonテクスチャ係数 = ParserHelper.get_Float4(fs);

            return(offset);
        }
Пример #4
0
        /// <summary>
        ///     指定されたストリームから読み込む。
        /// </summary>
        internal static ジョイントパラメータ 読み込む(Stream fs, PMXヘッダ header, ジョイント.ジョイント種別 type)
        {
            switch (type)
            {
            // PMX 2.0
            case ジョイント.ジョイント種別.ばね付き6DOF:
                var sp6 = new ばね付き6DOFジョイントパラメータ();
                sp6.読み込む(fs, header);
                return(sp6);

            // PMX 2.1
            case ジョイント.ジョイント種別.基本6DOF:
            case ジョイント.ジョイント種別.P2P:
            case ジョイント.ジョイント種別.円錐回転:
            case ジョイント.ジョイント種別.スライダー:
            case ジョイント.ジョイント種別.ヒンジ:
                throw new NotSupportedException("PMX2.1 以降には未対応です。");           // todo: これらの実装

            default:
                throw new NotSupportedException();
            }
        }
Пример #5
0
        /// <summary>
        ///     指定されたストリームから読み込む。
        /// </summary>
        internal override void 読み込む(Stream fs, PMXヘッダ header)
        {
            関連剛体Aのインデックス = ParserHelper.get_Index(fs, header.剛体インデックスサイズ);
            関連剛体Bのインデックス = ParserHelper.get_Index(fs, header.剛体インデックスサイズ);
            位置           = ParserHelper.get_Float3(fs);
            回転rad        = ParserHelper.get_Float3(fs);

            Vector3 moveLimitationMin         = ParserHelper.get_Float3(fs);
            Vector3 moveLimitationMax         = ParserHelper.get_Float3(fs);
            Vector3 rotationLimitationMin     = ParserHelper.get_Float3(fs);
            Vector3 rotationLimitationMax     = ParserHelper.get_Float3(fs);
            Vector3 springMoveCoefficient     = ParserHelper.get_Float3(fs);
            Vector3 springRotationCoefficient = ParserHelper.get_Float3(fs);

            Low              = rotationLimitationMin.X;
            High             = rotationLimitationMax.X;
            SoftNess         = springMoveCoefficient.X;
            BiasFactor       = springMoveCoefficient.Y;
            RelaxationFactor = springMoveCoefficient.Z;
            MotorEnabled     = Math.Abs(springRotationCoefficient.X - 1) < 0.3f; // floatなので誤差防止のため(こんなに大きくいらないけど。)
            TargetVelocity   = springRotationCoefficient.Y;
            MaxMotorImpulse  = springRotationCoefficient.Z;
        }
Пример #6
0
 /// <summary>
 ///     指定されたストリームから読み込む。(派生クラスで実装のこと。)
 /// </summary>
 internal abstract void 読み込む(Stream fs, PMXヘッダ header);