Пример #1
0
 public void ChangeModel(SkinningData skd)
 {
     skinData = skd;
     boneTransforms = new Matrix[skd.BindPose.Count];
     skinTransforms = new Matrix[skd.BindPose.Count];
     worldTransforms = new Matrix[skd.BindPose.Count];
 }
Пример #2
0
 public void ChangeModel(SkinningData skd)
 {
     skinData        = skd;
     boneTransforms  = new Matrix[skd.BindPose.Count];
     skinTransforms  = new Matrix[skd.BindPose.Count];
     worldTransforms = new Matrix[skd.BindPose.Count];
 }
Пример #3
0
        SkinningData skinningData; // Skinning Data

        #endregion Fields

        #region Constructors

        /// <summary>
        /// ModelGeo with animation
        /// </summary>
        /// <param name="Go"></param>
        /// <param name="modelResource"></param>
        /// <param name="AniClip"></param>
        public ModelGeoAnim(GameObject Go, string modelResource, string AniClip)
            : base(Go, modelResource)
        {
            // Look up our custom skinning information.
            skinningData = mModel.Tag as SkinningData;

            if (skinningData == null)
                throw new InvalidOperationException
                    ("Model '" + modelResource + "' does not contain a SkinningData tag.");

            // Create an animation player, and start decoding an animation clip.
            animationPlayer = new AnimationPlayer(skinningData);

            AnimationClip clip = skinningData.AnimationClips[AniClip];
            animationPlayer.StartClip(clip);

            //boneTransforms = new Matrix[skinningData.BindPose.Count];
            //animationPlayer.GetBoneTransforms().CopyTo(boneTransforms, 0);
            //mMatBones = animationPlayer.GetBoneTransforms();
            BoneTransformTemp = new Matrix[skinningData.BindPose.Count];

            animationPlayer.Update(new TimeSpan(0, 0, 0), true, mMatWorld);

            InitBoundingSpheres();
            UpdateBoundingBox();
        }
Пример #4
0
        //  END JASON's CODE
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(Game g, String modelName)
        {
            game = g;
            // Load the model.
            model = game.Content.Load<Model>(modelName);

            // Look up our custom skinning information.
            SkinningData skinningData = model.Tag as SkinningData;

            if (skinningData == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");

            skinningDataValue = skinningData;

            kinectSkeleton = new KinectSkeleton();

            boneTransforms = new Matrix[skinningData.BindPose.Count];
            worldTransforms = new Matrix[skinningData.BindPose.Count];
            skinTransforms = new Matrix[skinningData.BindPose.Count];

            //  creates the initial pose for the model
            //  (the important part here is the translation data for each bone)
            skinningData.BindPose.CopyTo(boneTransforms, 0);
            //  perform the first update to initialize Transform arrays
            Update(null, Matrix.Identity);
        }
Пример #5
0
 public ClipPlayer(SkinningData skd, float fps)
 {
     skinData = skd;
     boneTransforms = new Matrix[skd.BindPose.Count];
     skinTransforms = new Matrix[skd.BindPose.Count];
     worldTransforms = new Matrix[skd.BindPose.Count];
     this.fps = fps;
 }
Пример #6
0
 public ClipPlayer(SkinningData skd, float fps)
 {
     skinData        = skd;
     boneTransforms  = new Matrix[skd.BindPose.Count];
     skinTransforms  = new Matrix[skd.BindPose.Count];
     worldTransforms = new Matrix[skd.BindPose.Count];
     this.fps        = fps;
 }
Пример #7
0
 public AnimationPackage(SkinningData skin, float keyframeCount)
 {
     keyframes  = keyframeCount;
     fullclip   = skin.AnimationClips["Take 001"];
     bpCount    = skin.BindPose.Count;
     ms         = (int)fullclip.Duration.TotalMilliseconds;
     c          = ms / keyframeCount;
     animations = new Dictionary <int, DurationClip>();
 }
Пример #8
0
        private void LoadModels()
        {
            //model3D = Game.Content.Load<Model>( @"Models\playerAlpha3D" );
            model3D = Game.Content.Load<Model>( @"Models\enemy1" );

            mSkinData = model3D.Tag as SkinningData;
            if ( mSkinData == null )
                throw new InvalidOperationException(
                    "This model does not contain a SkinningData tag." );
        }
        public SkinnedAnimationPlayer(SkinningData skinningData)
        {
            m_SkinningData = skinningData;

            BoneTransforms = new Matrix[skinningData.BindPose.Count];
            WorldTransforms = new Matrix[skinningData.BindPose.Count];
            SkinTransforms = new Matrix[skinningData.BindPose.Count];

            Done = true;
        }
 /// <summary>
 /// Copy constructor. Creates a deep copy of another GModel.
 /// </summary>
 /// <param name="gm">GModel to clone.</param>
 public GModel(GModel gm)
 {
     model = gm.model;
     skinningData = gm.skinningData;
     Texture = gm.Texture;
     MaterialColors = gm.MaterialColors != null ? (Vector3[])gm.MaterialColors.Clone() : null;
     Emissive = gm.Emissive;
     EmissiveTexture = gm.EmissiveTexture;
     IsWaterfall = gm.IsWaterfall;
 }
Пример #11
0
        public Vector3 Translation = new Vector3(0, 0, 0); //current position on the screen

        #endregion Fields

        #region Constructors

        public GraphicObjectBones(Model currentModelInput)
        {
            currentModel = currentModelInput;
            // Look up our custom skinning information.
            skinningData = currentModel.Tag as SkinningData;
            if (skinningData == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");
            // Create an animation player, and start decoding an animation clip.
            animationPlayer = new AnimationPlayer(skinningData);
        }
Пример #12
0
		public void SkinningSetting(string startPose) {
			mSkinningData = Model.Tag as SkinningData;
			if (mSkinningData == null) {
				throw new InvalidOperationException("This model does not contain a SkinningData tag.");
			}
			AnimationPlayer = new AnimationPlayer(mSkinningData);
			AnimationSpeed = 0.04f;
			AnimationClip clip = mSkinningData.AnimationClips[startPose];
			AnimationPlayer.StartClip(clip);
			mTemppose = startPose;
		}
Пример #13
0
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningData)
        {
            if (skinningData == null)
                throw new ArgumentNullException("skinningData");

            skinningDataValue = skinningData;

            boneTransforms = new Matrix[skinningData.BindPose.Count];
            worldTransforms = new Matrix[skinningData.BindPose.Count];
            skinTransforms = new Matrix[skinningData.BindPose.Count];
        }
Пример #14
0
        /// <summary>
        /// Creates a new AnimatedModel instance based on the given model, which:
        /// a) already has to be loaded
        /// </summary>
        /// <param name="model"></param>
        public AnimatedModel(Model model)
        {
            this.model = model;

            skinningData = model.Tag as SkinningData;
            if (skinningData == null)
            {
                throw new InvalidOperationException("Model contains no animation data! Did you use the SkinnedModelProcessor?");
            }

            player = new AnimationPlayer(skinningData);
        }
Пример #15
0
        /// <summary>
        /// 新しいアニメーション・プレイヤーの生成
        /// </summary>
        public AnimationPlayer(SkinningData skinningData)
        {
            if (skinningData == null)
                throw new ArgumentNullException("skinningData");

            skinningDataValue = skinningData;

            boneTransforms = new QuatTransform[skinningData.BindPose.Count];
            worldTransforms = new QuatTransform[skinningData.BindPose.Count];
            skinRotations = new Quaternion[skinningData.BindPose.Count];
            skinTranslations = new Vector4[skinningData.BindPose.Count];
        }
Пример #16
0
        public AnimationPlayer(SkinningData skinningData)
        {
            if (skinningData == null)
            {
                throw new ArgumentNullException("skinningData");
            }

            mSkinningDataValue = skinningData;
            mBoneTransforms    = new Matrix[skinningData.BindPose.Count];
            mWorldTransforms   = new Matrix[skinningData.BindPose.Count];
            mSkinTransforms    = new Matrix[skinningData.BindPose.Count];
        }
Пример #17
0
 public ClipPlayer(SkinningData skd, float fps)
 {
     currentClip     = skd.AnimationClips["Take 001"];
     keyframeList    = currentClip.Keyframes;
     skinData        = skd;
     boneTransforms  = new Matrix[skd.BindPose.Count];
     skinTransforms  = new Matrix[skd.BindPose.Count];
     worldTransforms = new Matrix[skd.BindPose.Count];
     startTime       = TimeSpan.FromMilliseconds(0);
     currentTime     = startTime;
     endTime         = currentTime;
     this.fps        = fps;
 }
Пример #18
0
 public ClipPlayer(SkinningData skd, float fps)
 {
     currentClip = skd.AnimationClips["Take 001"];
     keyframeList = currentClip.Keyframes;
     skinData = skd;
     boneTransforms = new Matrix[skd.BindPose.Count];
     skinTransforms = new Matrix[skd.BindPose.Count];
     worldTransforms = new Matrix[skd.BindPose.Count];
     startTime = TimeSpan.FromMilliseconds(0);
     currentTime = startTime;
     endTime = currentTime;
     this.fps = fps;
 }
Пример #19
0
        public SkinnedModel(GraphicFactory factory, String Name) :
            base(factory, Name)
        {
            // Look up our custom skinning information.
            SkinningData = this.model.Tag as SkinningData;

            if (SkinningData == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");

            // Create an animation player, and start decoding an animation clip.
            AnimationPlayer = new AnimationPlayer(SkinningData);
        }
Пример #20
0
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningData)
        {
            if (skinningData == null)
            {
                throw new ArgumentNullException(nameof(skinningData));
            }

            this.skinningDataValue = skinningData;

            this.boneTransforms  = new Matrix[skinningData.BindPose.Count];
            this.worldTransforms = new Matrix[skinningData.BindPose.Count];
            this.skinTransforms  = new Matrix[skinningData.BindPose.Count];
        }
Пример #21
0
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningData, Model theModel)
        {
            currentModel = theModel;
            if (skinningData == null)
            {
                throw new ArgumentNullException("skinningData");
            }

            skinningDataValue = skinningData;

            boneTransforms  = new Matrix[skinningData.BindPose.Count];
            worldTransforms = new Matrix[skinningData.BindPose.Count];
            skinTransforms  = new Matrix[skinningData.BindPose.Count];
        }
        public static void SaveSkinningData(SkinningData skinningData, string path)
        {
            using (var fs = new FileStream(path, FileMode.Create))
            {
                var formatter = new BinaryFormatter();
                formatter.Serialize(fs, skinningData);
            }

            //JsConfig<Matrix>.SerializeFn = r =>
            //{
            //    var sw = new StringWriter(CultureInfo.InvariantCulture);
            //    sw.Write("[");
            //    sw.Write(r.M11);
            //    sw.Write(",");
            //    sw.Write(r.M12);
            //    sw.Write(",");
            //    sw.Write(r.M13);
            //    sw.Write(",");
            //    sw.Write(r.M14);
            //    sw.Write(",");
            //    sw.Write(r.M21);
            //    sw.Write(",");
            //    sw.Write(r.M22);
            //    sw.Write(",");
            //    sw.Write(r.M23);
            //    sw.Write(",");
            //    sw.Write(r.M24);
            //    sw.Write(",");
            //    sw.Write(r.M31);
            //    sw.Write(",");
            //    sw.Write(r.M32);
            //    sw.Write(",");
            //    sw.Write(r.M33);
            //    sw.Write(",");
            //    sw.Write(r.M34);
            //    sw.Write(",");
            //    sw.Write(r.M41);
            //    sw.Write(",");
            //    sw.Write(r.M42);
            //    sw.Write(",");
            //    sw.Write(r.M43);
            //    sw.Write(",");
            //    sw.Write(r.M44);
            //    sw.Write("]");
            //    return sw.ToString();
            //};
            //var serializer = new JsonSerializer<SkinningData>();
            //var json = serializer.SerializeToString(skinningData);
            //File.WriteAllText(path, json);
        }
        public void SetAnimation(Model model, string takeName)
        {
            // Look up our custom skinning information.
            skinningData = model.Tag as SkinningData;

            if (skinningData == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");

            // Create an animation player, and start decoding an animation clip.
            animationPlayer = new AnimationPlayer(skinningData);

            //set initial clip
            SetClip(takeName);
        }
Пример #24
0
        public bool Init()
        {
            if (Initialized)
            {
                return true;
            }

            if (Model == null)
            {
                return false;
            }

            SkinningData = Model.Tag as SkinningData;

            if (SkinningData == null)
                throw new InvalidOperationException
                    ("このモデルのTagにはSkinningDataが設定されていません。\n" +
                        "プロセッサにSkinnedModelProcessorを指定してください");

            if (SkinningData.AnimationClips.Count == 0)
                throw new InvalidOperationException
                    ("このモデルにはAnimationClipが存在しません。");

            AnimationPlayer = new AnimationPlayer(SkinningData);

            MotionNames.AddRange(SkinningData.AnimationClips.Keys);

            // 適当に最初のモーションを再生
            foreach (var clip in SkinningData.AnimationClips)
            {
                AnimationPlayer.StartClip(clip.Value);
                CurrentMotionName = clip.Key;
                break;
            }

            BoneTransforms = new QuatTransform[SkinningData.BindPose.Count];

            int width = AnimationPlayer.GetSkinRotations().Length;
            int height = 1;

            RotationTexture = new FlipTexture2D(GraphicsDevice, width, height, false, SurfaceFormat.Vector4);

            TranslationTexture = new FlipTexture2D(GraphicsDevice, width, height, false, SurfaceFormat.Vector4);

            Initialized = true;

            return true;
        }
Пример #25
0
        public AnimatedModelEntity(Model model)
        {
            this.model = model;
            this.size = Vector3.One;
            this.speed = 0.1f;

            skinning_data = model.Tag as SkinningData;

            if (skinning_data == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");

            animation_player = new AnimationPlayer(skinning_data);

            StartDefaultClip();
        }
        // �R���X�g���N�^
        public AnimationPlayer(SkinningData skinningData)
        {
            // �X�L�j���O�f�[�^����Ȃ�
            if (skinningData == null)
            {
                throw new ArgumentNullException("skinningData");
            }

            // �X�L�j���O�f�[�^��i�[
            skinningDataValue = skinningData;

            // �e�s����������
            boneTransforms = new Matrix[skinningData.BindPose.Count];
            worldTransforms = new Matrix[skinningData.BindPose.Count];
            skinTransforms = new Matrix[skinningData.BindPose.Count];
        }
Пример #27
0
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningDataValue, RasterizerState rasterizerState)
        {
            this.skinningDataValue       = skinningDataValue;
            this.originalRasterizerState = rasterizerState;
            //this.model = model;
            //if (model == null)
            //    throw new ArgumentNullException("model");

            //skinningDataValue = model.Tag as SkinningData;

            boneTransforms  = new Matrix[skinningDataValue.BindPose.Count];
            worldTransforms = new Matrix[skinningDataValue.BindPose.Count];
            skinTransforms  = new Matrix[skinningDataValue.BindPose.Count];

            this.jointMap = LoadJointMapDude();
        }
Пример #28
0
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningDataValue, RasterizerState rasterizerState)
        {
            this.skinningDataValue = skinningDataValue;
            this.originalRasterizerState = rasterizerState;
            //this.model = model;
            //if (model == null)
            //    throw new ArgumentNullException("model");

            //skinningDataValue = model.Tag as SkinningData;

            boneTransforms = new Matrix[skinningDataValue.BindPose.Count];
            worldTransforms = new Matrix[skinningDataValue.BindPose.Count];
            skinTransforms = new Matrix[skinningDataValue.BindPose.Count];

            this.jointMap = LoadJointMapDude();
        }
Пример #29
0
        public AnimationPlayer(Model model, RasterizerState rasterizerState, Dictionary <JointType, int> jointMap)
        {
            this.originalRasterizerState = rasterizerState;
            this.model = model;
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            skinningDataValue = model.Tag as SkinningData;

            boneTransforms  = new Matrix[skinningDataValue.BindPose.Count];
            worldTransforms = new Matrix[skinningDataValue.BindPose.Count];
            skinTransforms  = new Matrix[skinningDataValue.BindPose.Count];

            this.jointMap = jointMap;
        }
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningData)
        {
            // Construct the event dictionaries for each clip
              /*  foreach (string clipName in skinningData.AnimationClips.Keys)
            {
                registeredEvents[clipName] = new Dictionary<string, EventCallBack>();
            }

            if (skinningData == null)
                throw new ArgumentNullException("skinningData");*/

            skinningDataValue = skinningData;

            boneTransforms = new Matrix[skinningData.BindPose.Count];
            worldTransforms = new Matrix[skinningData.BindPose.Count];
            skinTransforms = new Matrix[skinningData.BindPose.Count];
        }
Пример #31
0
        // Load Content
        public static void LoadContent(ContentManager content)
        {
            model = content.Load<Model>("Model\\dude");

            skinData = model.Tag as SkinningData;
            if(skinData == null)
            {
                throw new InvalidOperationException("This model does not contain a SkinningData tag");
            }

            player = new AnimationPlayer(skinData);
            clip = skinData.AnimationClips["Take 001"];

            player.StartClip(clip);

            random = new Random();
        }
Пример #32
0
        public SkinnedModel(Model model, List<Keys> lstkeys, Vector3 position, Vector3 rotation, Vector3 scale)
        {
            this.model = model;
            this.lstKeys = lstkeys;
            this.position = position;
            this.rotation = rotation;
            this.scale = scale;

            this.skinningData = model.Tag as SkinningData;
            if (skinningData == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");

            animationPlayer = new AnimationPlayer(skinningData);

            bones = animationPlayer.GetSkinTransforms();
        }
Пример #33
0
        /// <summary>
        /// Duration Based Animation constructor
        /// </summary>
        /// <param name="skin"></param>
        /// <param name="clip"></param>
        /// <param name="Dictionary of valid bones - null if all bones are valid"></param>
        public DurationBasedAnimator(SkinningData skin, AnimationClip clip, Dictionary <int, int> validBones)
        {
            // store skin data
            skindata = skin;

            // store the long clip
            fullclip         = clip;
            fullclipDuration = fullclip.Duration;

            // set up empty matrices
            boneTransforms  = new Matrix[skin.BindPose.Count];
            worldTransforms = new Matrix[skin.BindPose.Count];
            skinTransforms  = new Matrix[skin.BindPose.Count];

            durations = new Dictionary <int, DurationClip>();

            this.validBones = validBones;
        }
Пример #34
0
        /// <summary>
        /// Duration Based Animation constructor
        /// </summary>
        /// <param name="skin"></param>
        /// <param name="clip"></param>
        /// <param name="Dictionary of valid bones - null if all bones are valid"></param>
        public DurationBasedAnimator(SkinningData skin, AnimationClip clip, Dictionary<int, int> validBones)
        {
            // store skin data
            skindata = skin;

            // store the long clip
            fullclip = clip;
            fullclipDuration = fullclip.Duration;

            // set up empty matrices
            boneTransforms = new Matrix[skin.BindPose.Count];
            worldTransforms = new Matrix[skin.BindPose.Count];
            skinTransforms = new Matrix[skin.BindPose.Count];
            
            durations = new Dictionary<int, DurationClip>();

            this.validBones = validBones;
        }
Пример #35
0
        public Fish()
        {
            this.model = Resources.fish_model;
            this.size = Vector3.One;
            this.speed = 2;
            this.max_speed = (float)rand.NextDouble()*2 + 0.5f;
            this.time = new TimeSpan();

            skinning_data = model.Tag as SkinningData;

            if (skinning_data == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");

            animation_player = new AnimationPlayer(skinning_data);

            StartDefaultClip();
            Update(0);
        }
Пример #36
0
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningData)
        {
            if (skinningData == null)
                throw new ArgumentNullException("skinningData");

            skinningDataValue = skinningData;

            bone_matrices = new Matrix[skinningData.BindPose.Count];
            world_matrices = new Matrix[skinningData.BindPose.Count];
            skin_matrices = new Matrix[skinningData.BindPose.Count];
            keyframe_matrices = new Matrix[skinningData.BindPose.Count];

            bone_transforms = new Transform[skinningData.BindPose.Count];

            skinningDataValue.BindPose.CopyTo(bone_matrices, 0);

            for (int i = 0; i < bone_matrices.Length; i++)
                bone_transforms[i] = new Transform(bone_matrices[i]);
        }
Пример #37
0
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningData)
        {
            if (skinningData == null)
            {
                throw new ArgumentNullException("skinningData");
            }

            skinningDataValue = skinningData;

            boneTransforms  = new Matrix[skinningData.BindPose.Count];
            worldTransforms = new Matrix[skinningData.BindPose.Count];
            skinTransforms  = new Matrix[skinningData.BindPose.Count];

            // Construct the event dictionaries for each clip
            foreach (string clipName in skinningData.AnimationClips.Keys)
            {
                registeredEvents[clipName] = new Dictionary <string, EventCallback>();
            }
        }
Пример #38
0
        public Octopus()
        {
            this.model = Resources.octopus_model;
            this.size = Vector3.One;
            this.speed = 1;
            this.rotation.Z = MathHelper.PiOver2;
            this.max_speed = 0.5f;
            this.time = new TimeSpan();

            skinning_data = model.Tag as SkinningData;

            if (skinning_data == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");

            animation_player = new AnimationPlayer(skinning_data);

            StartDefaultClip();
            Update(0);
        }
Пример #39
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public AnimationPlayer(SkinningData skinningData)
        {
            if (skinningData == null)
            {
                throw new ArgumentNullException("skinningData");
            }

            skinningDataValue = skinningData;

            boneTransforms  = new Matrix[skinningData.BindPose.Count];
            worldTransforms = new Matrix[skinningData.BindPose.Count];
            skinTransforms  = new Matrix[skinningData.BindPose.Count];

            previousBoneTransforms = new Matrix[skinningData.BindPose.Count];

            // デフォルトはループ再生を許可
            loopEnable = true;

            interpolationWeight      = 0.0f;
            interpolationWeightCount = 0.0f;
        }
Пример #40
0
        /// <summary>
        /// Constructs a new animation player.
        /// </summary>
        public AnimationPlayer(SkinningData skinningData)
        {
            if (skinningData == null)
            {
                throw new ArgumentNullException("skinningData");
            }

            skinningDataValue = skinningData;

            bone_matrices     = new Matrix[skinningData.BindPose.Count];
            world_matrices    = new Matrix[skinningData.BindPose.Count];
            skin_matrices     = new Matrix[skinningData.BindPose.Count];
            keyframe_matrices = new Matrix[skinningData.BindPose.Count];

            bone_transforms = new Transform[skinningData.BindPose.Count];

            skinningDataValue.BindPose.CopyTo(bone_matrices, 0);

            for (int i = 0; i < bone_matrices.Length; i++)
            {
                bone_transforms[i] = new Transform(bone_matrices[i]);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="skinningData"></param>
        public void ResetTransform(SkinningData skinningData)
        {
            // Bone matrices for the "dude" model
            this.boneTransforms = new Matrix[skinningData.BindPose.Count];
            this.worldTransforms = new Matrix[skinningData.BindPose.Count];
            this.skinTransforms = new Matrix[skinningData.BindPose.Count];

            // Initialize bone transforms to the bind pose.
            this.skinningDataValue = skinningData;
            RefreshBindPose();
        }
Пример #42
0
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            c = new Camera(this);
            Components.Add(c);

            // Load model
            m = Content.Load<Model>("pet_hippo");

            // Load textures into an array
            textures[0] = Content.Load<Texture2D>("hippo_blueeyes_default");
            textures[1] = Content.Load<Texture2D>("hippo_blueeyes_pink");
            textures[2] = Content.Load<Texture2D>("hippo_blueeyes_blue");
            textures[3] = Content.Load<Texture2D>("hippo_blueeyes_camo");

            skinningData = m.Tag as SkinningData;

            if (skinningData == null)
                throw new InvalidOperationException
                    ("This model does not contain a SkinningData tag.");

            // Create an animation player, and start decoding an animation clip.
            animationPlayer = new AnimationPlayer(skinningData);

            // Set clip to an animation track as written in the .fbx file
            clip = skinningData.AnimationClips["Dance"];

            // initialize animation
            animationPlayer.StartClip(clip);
            animating = true;
        }
Пример #43
0
 public Animation(string name, SkinningData data)
 {
     Name = name;
     SkinningData = data;
     AnimationPlayer = CreateAnimationPlayer();
 }