Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 3,684
· Новый пользователь: headron
Последние фото
Эх, чуть не проспал закрытие.
Эх, чуть не проспал ...
Альбом: XNA Engine

GB
GB
Альбом: XNA Engine

South Park Coon & Friends
South Park Coon & Fr...
Альбом: XNA Games

Блоги
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
dampirik
» Реклама,статистик...
Chort
» XNA и StartCoroutine
Chort
» Curve Class
dampirik
» Реклама, статисти...
dampirik
» Увеличение скорос...
dampirik
» Реклама, статисти...
general
» Распаковка DxtCom...
general
» Как работать с XN...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Статистика посещений:

Chase Camera Sample + Fullscreen Motion Blur

Простой пример, как добавить в Chase Camera Sample (XNA 2.0) эффект полноэкранного ускорения (за счет смазанности) движения. Motion Blur особенно хорошо смотрится на динамичных сценах. На все про все уйдет не более 5-ти минут...

Урок Chase Camera с сайта XNA Creators Club был выбран именно из за динамичности отображаемой сцены. Оригинальный пример выглядит так -

 

Теперь добавим к этой сцене Motion Blur. Все изменения будут в классе ChaseCameraGame.

Для работы, этот эффект использует дополнительную текстуру, в которой будут хранится наложенные друг на друга кадры всей сцены -


1
ResolveTexture2D blendTexture;

 


Изменим конструктор ChaseCameraGame, добавив в него код установки нужного нам формата бэк буфера -

1
2
3
4
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferFormat = SurfaceFormat.Bgr32;
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;

 


Далее меняем метод LoadContent() -

1
2
blendTexture = new ResolveTexture2D(GraphicsDevice, 800, 600, 1, SurfaceFormat.Bgr32);
spriteBatch = new SpriteBatch(graphics.GraphicsDevice);

 


Обратите внимание на соответствие форматов бэка и новой текстуры. Остался метод Draw() -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
protected override void Draw(GameTime gameTime)
{
GraphicsDevice device = graphics.GraphicsDevice;
 
GraphicsDevice.ResolveBackBuffer(blendTexture);
 
device.Clear(Color.CornflowerBlue);
 
DrawModel(shipModel, ship.World);
DrawModel(groundModel, Matrix.Identity);
 
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState);
spriteBatch.Draw(blendTexture, Vector2.Zero, new Color(255, 255, 255, 200)); // 200 - величина блюра
spriteBatch.End();
 
DrawOverlayText();
 
base.Draw(gameTime);
}
 
 

 

Вот и всё, теперь при движении сцена выглядит так -

Работает очень просто, и главное быстро. Отрисованная сцена сохраняется в нашей новой текстуре, после этого мы накладываем отрисованную сцену на саму себя используя полноэкранный спрайт. При наложении указываем цвет, с помощью которого будет происходить смешивание. Альфа канал этого цвета играет роль величины блюра. Чем меньше альфа, тем меньше блюр. Чем больше блюр, тем больше кадров мы сможем "запомнить" в текстуре, так как от величины блюра на прямую зависит на сколько быстро кадр исчезнет.

Разумеется это не полноценный Motion Blur, но зато достаточно точная имитация. Есть ограничение на количество FPS - если их слишком много, блюр будет так быстро исчезать, что станет незаметен. По этому, лучше всего этот эффект смотрится когда включена вертикальная синхронизация, что ограничивает FSP в пределах 60-ти...

Комментарии
#1 | kremedved 14.05.2009 16:01:41
Супер! Спасибо!
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

27.08.2014
Я умею немного на asp.net + html и css

22.08.2014
на ASP mvc 3 есть пару проектов. Могу помочь, если нужно. Обидно, если закроется Frown

21.08.2014
я тоже ноль

21.08.2014
Я в вебе только с php занимался да и то на уровне чтоб работало.

21.08.2014
Я в вебе полный ноль…

21.08.2014
Переводить его надо, хоть на ту же азуру. И двиг менять на что-то современное. Если есть веб-разрабы - можем скооперироваться. Один делать не буду.

21.08.2014
не знаю всех нюансов по оплате и все хорошее когда нибудь заканчивается

21.08.2014
А что случилось?

21.08.2014
похоже сайт будет работать до 28го числа

09.08.2014
Апи пока не видел. Но есть приложение в магазине Live Lock Screen BETA, так что думаю скоро будет

08.08.2014
Я про API для Update1. На нем работает это

08.08.2014
А что именно нужно? Чтото и сейчас открыто http://msdn.micro.
...105).aspx

06.08.2014
Кто-нибудь слышал об открытии доступа к Lock Screen Api?

31.07.2014
VPDExpress на базе MVS 2012, ни в какую не ловит исключения. Даже если их сам создаешь. И всех так?

25.07.2014
С днем системного администратора причастных к этой профессии! По случаю - тортик от жены

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,07 секунд 8,709,863 уникальных посетителей