3D Графика для Windows Phone 7 с использованием XNA Framework. Часть 5

SkinnedEffect

SkinnedEffect – это эффект, который используется с анимированными трехмерными моделями. Он поддерживает все те же эффекты, что и BasicEffect (туман, три источника света, текстуры). Более того, он поддерживает информацию о скиннинге для моделей.

Правда есть одна плохая новость об этом эффекте: сам по себе он не поддерживает анимацию моделей. Чтобы все же сделать анимацию нам нужно использовать специальный Content Processor. Его можно найти по ссылке (http://create.msdn.com/en-US/education/catalog/sample/skinned_model)

Сейчас мы создадим простой пример, основываясь на приложении из App Hub.

  1. Скачайте SkinnedSample_4_0
  2. Добавьте проекты SkinnedModel и SkinnedModelPipeline в новое решение в Visual Studio
  3. Добавьте dude.fbx и все текстуры из папки Content проекта SkinningSample в свой проект
  4. Добавьте dude.fbx в ContentProject в Visual Studio (не добавляйте текстуры, просто положите их в одну папку с моделью)
  5. Установите SkinnedModelProcessor в качестве ContentProcessor для dude.fbx

Теперь все готово и мы готовы к тому, чтобы начать писать код.

На самом деле, код будет практически таким же как и в примере для BasicEffect за исключением того факта, что теперь у нас будет AnimationPlayer, который будет анимировать модель.

        Model currentModel;
AnimationPlayer animationPlayer;

     protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);

// TODO: use this.Content to load your game content here
currentModel = Content.Load<Model>(«dude»);

// Look up our custom skinning information.
SkinningData 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);

AnimationClip clip = skinningData.AnimationClips[«Take 001»];

animationPlayer.StartClip(clip);
}

        protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Add your update logic here
animationPlayer.Update(gameTime.ElapsedGameTime, trueMatrix.Identity);

base.Update(gameTime);
}

        protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here
Matrix[] bones = animationPlayer.GetSkinTransforms();

Matrix world = Matrix.CreateScale(0.007f) * Matrix.CreateRotationY(MathHelper.Pi) * Matrix.CreateTranslation(0,-0.2f,0);
Matrix view = Matrix.CreateLookAt(new Vector3(0, 0, 1), Vector3.Zero, Vector3.Up);

Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, GraphicsDevice.Viewport.AspectRatio, 0.1f, 10);

// Render the skinned mesh.
foreach (ModelMesh mesh in currentModel.Meshes)
{
foreach (SkinnedEffect effect in mesh.Effects)
{
effect.SetBoneTransforms(bones);

effect.World = world;
effect.View = view;
effect.Projection = projection;

effect.EnableDefaultLighting();

effect.SpecularColor = new Vector3(0.25f);
effect.SpecularPower = 16;

}

mesh.Draw();
}

base.Draw(gameTime);
}

Замечание:

SkinnedEffect не создает анимацию для любой вашей модели. Анимация должна подготавливаться для каждой модели в программе для трехмерного моделирования.

Заключание

XNA Framework – это мощный инструмент для создания отличных трехмерных игр для Windows Phone 7, Windows и Xbox 360. В этой статье мы рассмотрели базовые принципы работы с трехмерной графикой для Windows Phone 7, и я надеюсь, что это поможет Вам в Вашей дальнейшей работе.

Реклама
Запись опубликована в рубрике Компьютерная графика с метками , , , , , , . Добавьте в закладки постоянную ссылку.

3 комментария на «3D Графика для Windows Phone 7 с использованием XNA Framework. Часть 5»

  1. Уведомление:   Windows Phone / Возможности 3D графики Windows Phone by SOS Admin!

  2. Александр:

    Не могу перейти по ссылке http://create.msdn.com/en-US/education/catalog/sample/skinned_model. Подскажите, пожалуйста, где я смогу скачать этот файл.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s