Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 02.01.2007, 20:25   #1
Nunan
Оператор ЭВМ
 
Регистрация: 23.10.2006
Сообщений: 39
Написано одно полезное сообщение
(для 0 участников)
Проблема Blitz3d с большими расстояниями

В процессе разработки своей игры (онлайновая РПГ-Экшен) столкнулся с одной очень плохой проблемой.
Вы сталкивались с тем что на больших расстояниях от центра координат обьекты при перемщении начинают дребезжать, причем степень этого дребезжания прямо пропорционально зависят от расстояния.
Вот простой пример:
R=500000

Graphics3D 400,300
SetBuffer BackBuffer() 
camera=CreateCamera()
CameraRange camera,0.05,10000
PositionEntity camera,R,0,0

light=CreateLight() 
RotateEntity light,90,0,0 

m=CreateSphere(10,camera) 
m2=CreateCube(camera):TurnEntity m2,45,60,0
PositionEntity m,1.5,0,5
PositionEntity m2,-1.5,0,5 

While Not KeyDown( 1 )
TurnEntity camera,0,1,0
RenderWorld 
Text 0,0,"Range= "+R
Flip
Delay 9
Wend 
End
запустите его у себя и посмотрите. Скажите что вы видите?
Попробуйте изменить значение "R" на 10000...10000000.
(Offline)
 
Ответить с цитированием
Старый 02.01.2007, 20:30   #2
kortesfil
Знающий
 
Регистрация: 16.10.2005
Сообщений: 310
Написано 7 полезных сообщений
(для 0 пользователей)
Re: Проблема Blitz3d с большими расстояниями

Да дребезжит, чем дальше тем сильней.
Я знаю в чём проблема.Ты знаком с великой теорией относительности? Если знаеш то поймёш, чем дальше обьект тем модуляция фатонов пропорциональна времени и пространству.
ха, шучу) понятия не имею почему у тебя так)
(Offline)
 
Ответить с цитированием
Старый 02.01.2007, 22:27   #3
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Re: Проблема Blitz3d с большими расстояниями

Это из-за того что разрядность z-буффера не бесконечная.
Например при 32битном z-буффере глубина объектов изменяется от 0 до 2^32

таким образом за границы этого диапазона берутся самые далеко отстоящие друг от друга вершины всей сцены. И это расстояние делится на 2^32 слоёв (если проводить аналогию с фотошопом). Если же расстояния очень велики то может получиться так что несколько близких вершин будут в одном слое и будут выводится одновременно что приведёт к их неправильному перекрытию и следовательно к дребезгу

Лекарство одно - уменьшиь масштаб моделей и соответственно скорости
__________________
(Offline)
 
Ответить с цитированием
Старый 02.01.2007, 23:20   #4
jimon
 
Сообщений: n/a
Re: Проблема Blitz3d с большими расстояниями

ну если брать за масштаб 1 = 1 метр
то растояния в 2 тыс км особо не надо
 
Ответить с цитированием
Старый 04.01.2007, 03:21   #5
Черный крыс
 
Сообщений: n/a
Re: Проблема Blitz3d с большими расстояниями

код не запускал...
Это возможно еще и эффект "борьбы полигонов" - просто расставь в редакторе обьекты так чтоб между ними был небольшой зазор.
 
Ответить с цитированием
Старый 04.01.2007, 21:49   #6
Nunan
Оператор ЭВМ
 
Регистрация: 23.10.2006
Сообщений: 39
Написано одно полезное сообщение
(для 0 участников)
Re: Проблема Blitz3d с большими расстояниями

SBJoker, почему тогда я такого не видел в играх? Ведь есть много игр в которых уровни имеют большие размеры. Или у них движки лучше сделаны?
В игре мне необходимы расстояния до 5км, тоесть если брать 1м=1, то 5000. И на расстоянии 5000 начинается маленькое дребезжание на один пиксел.
(Offline)
 
Ответить с цитированием
Старый 05.01.2007, 00:51   #7
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Проблема Blitz3d с большими расстояниями

2 Nunan : Да, движок Блица очень старый и вообще ацтойный. В нём куча багов. Он тормозит. Всё в кадре мерцает. Он работает на плохом 7-ом Директе. В нет шейдеров. Но есть очень крутое новое двигло: Дарк-Бейсик-ПРО. Все настоящие гуру давно перешли на него. Он держит ДиректХ9 и вообще классный и крутой. Очень рекомендую пока не поздно перейти на ДБПро.
Как вариант- можно очень легко и быстро написать свой настоящий движок: как раз для этого Майкрософт выпустила С#- среду как раз для разработки 3Д-движков.
Обращайся за помощью на форум сайта gamesanatomy.ru . Кстати, при входе на сайт показывают скрин- так вот это всё игры, сделанные на С# и DB-Pro.
Удачи!

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 20 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 13:35   #8
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Re: Проблема Blitz3d с большими расстояниями

Дело тут не в Z-буффере, а в том что в блитце используются 4-х байтные числа с плавающей точкой, в следствии чего число может быть либо очень большим с небольшой точностью, либо очень маленьким с большой точночтью, следовательно для блитца необходимо уменьшить масштаб всех моделей до размера, при котором это дрожание незаметно, либо при переходе в определенные зоны менять систему координат (что собственно гемор)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 13:38   #9
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Re: Проблема Blitz3d с большими расстояниями

и есчо не делай так: CameraRange camera,0.05,10000
Лучше всего работает вот так: CameraRange camera,1,10000
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 14:08   #10
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Re: Проблема Blitz3d с большими расстояниями

Сообщение от PAX
Дело тут не в Z-буффере
да ты шо? вах -вах.
А Z-буффер по твоему это что? Это массив чисел с плавающей точкой с разрядностью видеорежима по дефолту.
т.е. для блитца 32бит=4байт, поэтому когда расстояния между вершинами разных мешей превышает порог точности Z-буффера он меняет масштаб преобрахования координат или если проще точность, а поскольку Z-буффер считает расстояния во "внутренних координатах" то все 3д максовые системы расстояний некатят, т.к. только генерик юнитс совпадают. а всякие метры, миллиметры километры и т.д. наделе оказываются сотнями тысячами и миллионами генерик юнитс. что при водит к переполнению точность буфера уже на 1ой модели.

И все игры это учитывают..вообще все...и проблема это не блитца а ДХ , даже вообще всей игровой индустрии.

Борьба полигонов заметна во многих играх категории ААА, особенно при налиции перекрывающихся моделей на небольшом расстоянии друг от друга.

Кстати борьба полигонов усиливается по отдалению от центра координат также. Т.е. теоритически если двигать не игрока а весь мир относительно игрока то геймплей непострадает а борьбы полигонов небудет вообще (если игрок располоден в 0,0,0 хотя лучше немного сместить игрока от центра т.к. для объектов в центре координат неработают куча функций.

А так же как сказал предыдцщий оратор лучше юзать целые числа для указания плоскостей отсечения камеры да и саму зону обзора делаь как можно меньше.

т.о. есть следующие способы борьбы с дрожание полигонов:
1. использовать более мелкий масштаб моделей (например 1генерик юнит=1метр)
2. использовать целые числа для CamereRange (и как можно с меньшей разницей)
3. неудалять камеру игрока далеко от центра координат(а если возможно двигать мир вместо игрока)
4. делать одномешевые уровни и/или объхекты (т.к. полигоны в приделах одного меша не борются)
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Kudesnic (28.03.2014)
Старый 08.01.2007, 18:42   #11
Nunan
Оператор ЭВМ
 
Регистрация: 23.10.2006
Сообщений: 39
Написано одно полезное сообщение
(для 0 участников)
Re: Проблема Blitz3d с большими расстояниями

Я делаю РПГ-Action от первого лица типа типа DeusEx.
Вы советуете сделать 1=1метр, и в то же время советуете ставить CamereRange cam,1,1000, но это не подходит, так как от первого лица необходимо видеть минимум на радиусе 5-10 см, тоесть 0.1-0.05.

Перемещать мир а не героя - почти нереально и очень плохо, так как я уверен что при этом колизия начнёт не работать как надо.

Страшный конечно движок... Разработчики там хоть собираются его доводить до ума и до 9го директ Икса.
__________________
NTFS для Mac
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 19:11   #12
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Проблема Blitz3d с большими расстояниями

это надо осилить....
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 20:15   #13
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Проблема Blitz3d с большими расстояниями

[Evil]
Страшный конечно движок... Разработчики там хоть собираются его доводить до ума и до 9го директ Икса.
Дык и не собираюццо. Я ж говорю- "В БМВ броня ацтой, фаустпатрон не держит!"(с). Тебе, дорогой на gamesanatomy.ru прямая дорога. "Ты б в наСишники пошел, там тебя научат!"(с)
[/Evil]
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 20:40   #14
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Re: Проблема Blitz3d с большими расстояниями

Ндэ...а кто мешает 0, 1000 поставить?
__________________
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 21:30   #15
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Проблема Blitz3d с большими расстояниями

Сообщение от Nunan
Страшный конечно движок...
Дык напиши лучше, чего же ты?

ЗЫ
Насчет движения мира и "дребезжания" - помню AsmLover писал что-то про пивоты на blitz.pp.ru
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с С++ HAMANN C++ 10 24.12.2009 09:31
Проблема rr333 3D Моделирование 10 07.06.2009 17:08
Проблема в MP Nautilus MidletPascal 4 26.10.2008 05:30
Проблема с MP3 и EAX Maxim1441 2D-программирование 3 29.07.2008 18:29
проблема с ode jimon 3D-программирование 0 24.09.2005 17:20


Часовой пояс GMT +4, время: 10:29.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com