Навигация
· 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 - Дом для вашего сайта
Статистика посещений:

Просмотр темы
 Распечатать тему
Матрицы, 2D камера и тайлы
DezoEsper
#1 Распечатать сообщение
Опубликовано 06.03.2013 23:08:12
Аватар пользователя

Специалист


Сообщений: 143
Зарегистрирован: 16.05.11

Привет, xnadev, пишу по проблеме, которую уже не в силах решить. У меня есть камера с ортографической матрицей трансформации, для правильной визуализации все подготовил:

Загрузить источник  GeSHi: C#
  1. graphics.PreferMultiSampling = false;
  2.  
  3. spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, Camera.View);
Добавлено за 0.005 секунд, используя GeSHi 1.0.8.2


1) SpriteSortMode.Deferred - для возможности использовать слои.
2) SamplerState.PointClamp - для пиксельной визуализации тайлов, чтобы избежать артефактов при смещении.

Скриншот без SamplerState.PointClamp:
dropi.ru/jXm.png

Доступа к исходникам у меня сейчас нет, но способ реализации камеры очень похож на этот.

При увеличении или уменьшении зума, а также при низком разрешении экрана, если перемещать камеру, иногда появляются полосы:
dropi.ru/bXm.png
Зеленый - на этих тайлах полосы не появляются.
Красный - собственно проблема, возникает на некоторых тайлах при движении камеры с зумом, без зума артефактов нет.
Еще скриншот:
dropi.ru/hXm.png
Тайлсет:
dropi.ru/gXm.png

Спасибо за время, потраченное на просмотр данного поста. Надеюсь, будут ответы от тех, кто с сталкивался с похожей проблемой.
Изменил(а) DezoEsper, 06.03.2013 23:09:24
MonoGame Site // LWJGL // OGRE
Я в Google+,Twitter
Сайт нашей команды.[Обновлен]
 
PhilippOK
#2 Распечатать сообщение
Опубликовано 06.03.2013 23:42:18
Аватар пользователя

Старший специалист


Сообщений: 201
Зарегистрирован: 22.05.12

навскидку - проблема с тайлами, а именно возникают полосы из-за того что когда идет линейная\анизатропная фильтрация текстуры обрабатывается блок размеры которого выходят за оригинальный размер тайла. Как решение - залить фоновым цветом небольшое пространство вокруг каждго тайла, т.е там где листья - зеленый, где кора дерева - коричневый, где вода - синий и тд
 
DrKillJoy
#3 Распечатать сообщение
Опубликовано 07.03.2013 17:43:56
Специалист


Сообщений: 63
Зарегистрирован: 04.06.12

Я сталкивался с этой же проблемой, когда использовал класс David Amador-а. Хотел время сэкономить! В итоге, столкнулся с этой проблемой. Убил уйму времени, чтобы разобраться, в итоге пришел к такому же выводу, что и PhilippOK.

Я лично решил это так: ко всем тайлам прибавил со всех сторон полоску, шириной в один пиксел этой же текстуры. Полосы исчезли! Но по мне это корявое решение!

В итоге я вообще отказался от матриц и сделал все через рендер таргет! Все отрисовываю в него с фиксированным разрешением, а мотом его масштабирую как надо!
Изменил(а) DrKillJoy, 07.03.2013 17:45:00
 
YuraGurzgyy
#4 Распечатать сообщение
Опубликовано 07.03.2013 20:07:08
Аватар пользователя

Старший специалист


Сообщений: 219
Зарегистрирован: 04.07.11

Люди, а почему нельзя просто взять, посчитать матрицами видимый прямоугольник камеры, и трансформацию изображения (поворот, масштаб), потом просто рисовать только те тайлы которые видимы через перегрузку SpriteBatch где тот принимает матрицу вида.
И рендер таргет здесь не нужен, ибо всё можно сразу рисовать на экран со всеми нужными эффектами.
Чтобы не было полосок надо тайлы правильно по сетке распределять, и здесь главное - не использовать тип int.

Если завтра ты хочешь владеть тем чего у тебя нет сегодня, то уже сегодня ты должен знать то, чего не знал вчера.
 
http://www.linkedin.com/profile/view?id=180716678
DezoEsper
#5 Распечатать сообщение
Опубликовано 08.03.2013 20:00:28
Аватар пользователя

Специалист


Сообщений: 143
Зарегистрирован: 16.05.11

Ну, проблема именно в float - плавном зуме, поэтому пока решил ограничить зум, оставил его для разрешения монитора. При маленьком разрешении монитора включается камера, потому что комната не помещается полностью в обзор. Делается это для того, чтобы не изменять размер тайлов из-за попиксельной проверки столкновений. Осталось найти золотую середину размера комнат, между максимально поддерживаемым разрешением монитора и производительностью.

Вот запись, полос нет при стандартных разрешениях: YouTube Video

Изменил(а) DezoEsper, 08.03.2013 20:58:29
MonoGame Site // LWJGL // OGRE
Я в Google+,Twitter
Сайт нашей команды.[Обновлен]
 
YuraGurzgyy
#6 Распечатать сообщение
Опубликовано 09.03.2013 00:46:14
Аватар пользователя

Старший специалист


Сообщений: 219
Зарегистрирован: 04.07.11

То есть при нормальном расширении монитора ты рисуешь тайлы без камеры, всё отлично, но когда расширение меняется то врубается камера и появляются полоски?
Попробуй врубить камеру при обычном расширении, если полоски останутся значит проблема в камере, если полосок не будет - значит ппц, разобраться в этом сможешь только ты, ибо весь код у тебя.
Я конечно не экстрасенс но можно попробовать округлять позиции тайлов.
Если завтра ты хочешь владеть тем чего у тебя нет сегодня, то уже сегодня ты должен знать то, чего не знал вчера.
 
http://www.linkedin.com/profile/view?id=180716678
DezoEsper
#7 Распечатать сообщение
Опубликовано 09.03.2013 22:18:24
Аватар пользователя

Специалист


Сообщений: 143
Зарегистрирован: 16.05.11

IMCO написал:
То есть при нормальном расширении монитора ты рисуешь тайлы без камеры, всё отлично, но когда расширение меняется то врубается камера и появляются полоски?
Попробуй врубить камеру при обычном расширении, если полоски останутся значит проблема в камере, если полосок не будет - значит ппц, разобраться в этом сможешь только ты, ибо весь код у тебя.
Я конечно не экстрасенс но можно попробовать округлять позиции тайлов.

Полосы появляются не на всех тайлах, а только при непропорциональном зуме, можно конечно сделать зум равномерным: x2, x4 и т.д. тогда можно его использовать. Я чувствую, что натыкаюсь на стандартные грабли, посмотрим, что будет дальше, буду держать, по возможности, в курсе.
MonoGame Site // LWJGL // OGRE
Я в Google+,Twitter
Сайт нашей команды.[Обновлен]
 
PhilippOK
#8 Распечатать сообщение
Опубликовано 09.03.2013 22:41:16
Аватар пользователя

Старший специалист


Сообщений: 201
Зарегистрирован: 22.05.12

DezoEsper написал:
IMCO написал:
То есть при нормальном расширении монитора ты рисуешь тайлы без камеры, всё отлично, но когда расширение меняется то врубается камера и появляются полоски?
Попробуй врубить камеру при обычном расширении, если полоски останутся значит проблема в камере, если полосок не будет - значит ппц, разобраться в этом сможешь только ты, ибо весь код у тебя.
Я конечно не экстрасенс но можно попробовать округлять позиции тайлов.

Полосы появляются не на всех тайлах, а только при непропорциональном зуме, можно конечно сделать зум равномерным: x2, x4 и т.д. тогда можно его использовать. Я чувствую, что натыкаюсь на стандартные грабли, посмотрим, что будет дальше, буду держать, по возможности, в курсе.

Залить пару пикселей вокруг тайла не вариант?
Если не вариант, то сделай сурс ректангл на 1 пиксель меньше (на 1 не получится - делай на 2 =) )
Изменил(а) PhilippOK, 09.03.2013 22:49:38
 
DezoEsper
#9 Распечатать сообщение
Опубликовано 09.03.2013 23:06:37
Аватар пользователя

Специалист


Сообщений: 143
Зарегистрирован: 16.05.11

PhilippOK написал:Залить пару пикселей вокруг тайла не вариант?
Если не вариант, то сделай сурс ректангл на 1 пиксель меньше (на 1 не получится - делай на 2 =) )

Полоска появляется размером "меньше измененного пикселя тайла". =)
В редакторе присутствует возможность загружать пользовательские тайлсеты. Смысл состоит в том, что игроки самостоятельно развивают вселенную игры, создавая собственные миры и истории при помощи редактора. Т.е. редактор для пользователей, и им будет неудобно добавлять дополнительные пиксели вокруг тайлов, и не факт что это решит проблему.

PS: Огромное всем спасибо за внимание к данной проблеме.
Изменил(а) DezoEsper, 10.03.2013 00:12:39
MonoGame Site // LWJGL // OGRE
Я в Google+,Twitter
Сайт нашей команды.[Обновлен]
 
Перейти на форум:
Авторизация
Логин

Пароль



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

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

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,11 секунд 8,709,505 уникальных посетителей