Пятница, 29.03.2024, 07:51 | Приветствую Вас Гость

Планета XNA

Каталог статей

Главная » Статьи » Уроки » Переводы уроков

УРОК: Рендеринг Аватаров в XNA

Рендеринг Аватаров в XNA




Введение

Microsoft любезно предоставила примеры реализации рендеринга Аватаров в XNA 3.1 на XBox 360. Сначала прочтите Microsoft Permissive License, которая сопровождает эти примеры.


Добавление Аватара в XNA

Во-первых давайте посмотрим, как добавить в XNA возможность использования Аватаров.

В Microsoft.Xna.Framework.GamerServices вы найдете следующие новые функции, связанные с Аватарами:
 class AvatarDescription
class AvatarAnimation
class AvatarRenderer

struct AvatarExpression

enum AvatarAnimationPreset
enum AvatarBodyType
enum AvatarBone
enum AvatarEye
enum AvatarEyebrow
enum AvatarMouth

Наибольший интерес представляет класс AvatarDescription. Этот класс позволит Вам создать нового Аватара:
 AvatarDescription avatarDescription = AvatarDescription.CreateRandom();

Вы также можете загрузить свой Аватар (или аватар любого игрока) используя SignedInGamer.Avatar:
 AvatarDescription avatarDescription = SignedInGamer.SignedInGamers[0].Avatar;

Убедитесь, что Вы добавили GamerServicesComponent для доступа к Аватарам в вашей игре:
 Components.Add(new GamerServicesComponent(this));


Рендеринг Аватаров

Теперь, когда вы знаете, как описывается аватар, вы, вероятно, хотите быстро получить результаты для их визуализации на экране. К счастью, Microsoft предоставила отличный фреймворк для быстрой работы с классом AvatarRenderer. Этот конструктор класса получает описание аватара и создает хорошую инкапсуляцию для основ рендеринга Аватара.
 AvatarRenderer avatarRenderer = new AvatarRenderer(avatarDescription);

У вас есть AvatarRenderer, в который вы можете загрузить в анимацию, перечислив в AvatarAnimationPreset:
 public enum AvatarAnimationPreset
{
Stand0 = 0,
Stand1 = 1,
Stand2 = 2,
Stand3 = 3,
Stand4 = 4,
Stand5 = 5,
Stand6 = 6,
Stand7 = 7,
Clap = 8,
Wave = 9,
Celebrate = 10,
FemaleIdleCheckNails = 11,
FemaleIdleLookAround = 12,
FemaleIdleShiftWeight = 13,
FemaleIdleFixShoe = 14,
FemaleAngry = 15,
FemaleConfused = 16,
FemaleLaugh = 17,
FemaleCry = 18,
FemaleShocked = 19,
FemaleYawn = 20,
MaleIdleLookAround = 21,
MaleIdleStretch = 22,
MaleIdleShiftWeight = 23,
MaleIdleCheckHand = 24,
MaleAngry = 25,
MaleConfused = 26,
MaleLaugh = 27,
MaleCry = 28,
MaleSurprised = 29,
MaleYawn = 30,
}

Некоторая анимация предназначены для мужских, а другая для женских персонажей. avatarDescription.BodyType позволяет легко установить принадлежность в AvatarAnimationPreset:
 public enum AvatarBodyType
{
Female = 0,
Male = 1,
}

Давайте сначала рассмотрим, как оживить Ваш Аватар.
Сначала нужно загрузить параметры анимации для анимирования:
 AvatarAnimation waveAnimation = new AvatarAnimation(AvatarAnimationPreset.Wave);

В примерах от Microsoft Вы увидите расширенную технику анимирования. Для простоты остановимся на одной анимации.

Во время игры, вызывается текущий AvatarAnimation для анимирования вашего Аватара:
 waveAnimation.Update(gameTime.ElapsedGameTime, true);

Параметр для метода обновления является булевым, в котором вы можете зациклить анимацию или нет.

После того, как обновите анимацию Аватара, Вы получите доступ для работы с костями:
 waveAnimation.BoneTransforms;

Основой BoneTransforms является массив матриц, которые используются для рендеринга Аватара. Вы можете копировать изменения костей и вручную манипулировать значениями, что реализовано в примерах от Microsoft.

AvatarRenderer связан с каждым аватаром через World, View и Projection, которые работа с которыми аналогична с BasicEffect:
 avatarRenderer.World = world;
avatarRenderer.View = view;
avatarRenderer.Projection = projection;

Теперь Вы можете рендерить Ваш Аватар:
 avatarRenderer.Draw(waveAnimation.BoneTransforms, waveAnimation.Expression);

Примечание: Вы можете копировать данные костей из анимации BoneTransforms и управлять ими самостоятельно для создания собственной анимации, Вы можете найти примеры реализации на Creators Club.



Заключение

Рендерить Аватаров в XNA очень просто и система скелетной анимации предоставит все, что вам нужно.



Скачать

Скачать пример Simple Blended Animation с Creators Club
Скачать пример Multiple Animation с Creators Club

Не забудьте прочитать руководство использования аватаров в XNA играх: Руковоство



Источник: http://www.ziggyware.com/readarticle.php?article_id=270
Категория: Переводы уроков | Добавил: ST3ALth (13.06.2009)
Просмотров: 2429 | Рейтинг: 0.0/0
Меню
Поиск
Облако тэгов
Xbox 360 статистика Community Games 2009 конкурс Dream-Build-Play Catalin Zima Mass Effect пример 3D анонс Библиотека движок физический движок open-source исходники 2D Mercury Particle Engine система частиц Major Nelson Top Top-10 продажи 7.5 Autodesk ModTool бесплатно моделирование codeplex SharpDevelop WiX XNA 3.0 установщик XNA SilverArcade Silverlight SilverSprite заработок GPL XNA 2.0 E3 Xbox Live Zune HD normal map NormalMapper карты нормалей утилиты C# Cubage FV Productions Gimp Paint.NET PSD Unsigned XCF многослойные файлы DBP DBP 2009 Dream Build Play Dream Build Play 2009 Видео игры Проекты Участники
Время жизни сайта
Статистика