Half-Life BSP

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Сообщение DODge » 12.02.2008 (Вт) 3:11

DirectXManiac
Вот тут ты прав по первому пункту. Было бы не плохо грузить с открытых файлов (я имею ввиду лежащих в каких-нибудь папках). А по поводу алгоритма близлежащих треугольников - весьма неплохая идея, интересно будет посмотреть как ты это реализуешь!
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

StimorolD3DX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 293
Зарегистрирован: 03.04.2007 (Вт) 18:19
Откуда: Kiev city

Сообщение StimorolD3DX » 12.02.2008 (Вт) 11:13

DirectXManiac
Да и если не тяжело сделай что бы это всё работало без PAK-файлов

homeworld
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 07.12.2006 (Чт) 13:17

Сообщение homeworld » 12.02.2008 (Вт) 12:45

а есть подобный пример для карт от Unreal Tournament 1999 ??? в нэте искал ничего не нашёл.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 12.02.2008 (Вт) 13:37

DODge
Вчера сидел до 5 утра и парился с проверкой каждого фейса... Чего то не добился проверки. Насколько я понял правильнее всего будет проверять только те фейсы, которые находятся в листе с камерой. Найти его не сложно BSP_FindLeaf(CameraPos). Насколько это правильно не знаю, надо проверять... Вообщем как добьюсь быстрых и правильных колизий - переделаю пример и выложу...
*Ушел парится дальше*
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 12.02.2008 (Вт) 15:18

Ну... Пришло время тестить... Значит удалось оптимизировать только на видимые, все работает но не без глюков. Крутите дальше как угодно, вообщем вот. Перед запуском кинуть в папку с HlBspView(этот тот пример что лежит на 1ой странице) файл с текстурами и карту. в mdlMain лежит строка загрузки. Убрал загрузку из PAK файла. Как я и говорил - загрузка кривая - грузятся не все карты. Колизии конечно убили скорость в 3-4 раза, ну а что делать. Буду думать дальше. Когда проверяю только тот Leaf который рядом под камерой - колизии проверяются не полностью. С некоторыми стенами работает, с некоторыми нет. В архиве есть тестовая карта(без текстур). Киньте какой нить WAD и смотрите. Есть у колизий несколько значительных глюков, но это дело времени... Вообщем вуаля! :)
У вас нет доступа для просмотра вложений в этом сообщении.
#define ROFL 0xDDDD

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Сообщение DODge » 12.02.2008 (Вт) 21:57

DirectXManiac
Вполне... очень даже... А глюк в основном проявляется на наклонных плоскостях, слайд по ним идёт не очень правильный, я б сказал вообще неправильный (код пока не разглядывал :) ). Но на самом деле проблема в хитбоксе камеры (к примеру можно пролезть в самую узкую щёлку, точно выровнив взгляд вдоль неё), т.е. я хочу сказать если продолжить совершенствование коллизий, то стоит продожить именно в этом направлении. А так отличное начало, будем ждать новых версий примера :D
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 13.02.2008 (Ср) 0:57

DODge
Для решения это проблемы надо использовать другой алгоритм. Не Ray->Triangle а Sphere->Triangle. А именно описать вокруг камеры невидимую сферу и проверять на столкновение... Отвечаю на ЛС здесь:
Даты такие потому что у меня на компе стоит 2006 год. Некоторые программы(пропатченные) отказываются работать, говорят что закончился период регистрации, вот и поставил на 2 года раньше. Не удивляйся :D
Ну я бы сам ржал очень долго :lol: :lol:
#define ROFL 0xDDDD

homeworld
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 07.12.2006 (Чт) 13:17

Сообщение homeworld » 13.02.2008 (Ср) 10:56

смотрел пример DirectXManiac но текстуры так и не удалось загрузить используя wad файлы.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 13.02.2008 (Ср) 15:12

homeworld
Это карта из TV3DSDK. Там текстуры не из WAD грузятся, а напрямую, поэтому ты их не увидишь...
#define ROFL 0xDDDD

homeworld
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 07.12.2006 (Чт) 13:17

Сообщение homeworld » 13.02.2008 (Ср) 15:41

ок понял.

З.Ы. ОФФТОП конечно но всё же, скачал прогу, которая вытаскивает все ресуры из игр использующих в качестве рендера DirectX 9 т.е. при игре нажимаешь специальную клавишу и всё что ты видишь в игре экспортируется: модели в 3D obj, текстуры в TGA, шейдеры и всё остальное, очень полезная штуковина. Я с помощью неё скопировал полную модель с текстурами карты из Unreal Tournament 3/

Ktulhu
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 14.07.2007 (Сб) 14:03
Откуда: Киев, Р'льех

Сообщение Ktulhu » 13.02.2008 (Ср) 18:29

homeworld
расшарь прогу, таваресч)

homeworld
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 07.12.2006 (Чт) 13:17

Сообщение homeworld » 13.02.2008 (Ср) 18:35

хорошо, сегодня выложу.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 13.02.2008 (Ср) 19:00

Ждемс... Веселая весч :D
#define ROFL 0xDDDD

StimorolD3DX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 293
Зарегистрирован: 03.04.2007 (Вт) 18:19
Откуда: Kiev city

Сообщение StimorolD3DX » 13.02.2008 (Ср) 22:12

3DRipper DX

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 13.02.2008 (Ср) 22:24

StimorolD3DX
Что ж вы все знали и молчите? :)
Итак рассказываю свои мысли на счет дальнейшей оптимизации...
Мною обнаружено что загрузчик BSP, выложеный здесь, да и рендер - кривой до потери пульса. Кривость есть даже в рисовании - а именно кривая система проверки видимых граней. Если её полностью переделать можно добится повышения скорости в 2-3 раза, а то и больше. Мой пример BSP рисует карту намного быстрее(насколько я помню).
Также это даст возможность проверить столкновения только с тем что видно или находится в пределах видимости. Если вы не заметили, то проверяется только позиция камеры, о углах не идет речь, значит то что сзади тоже рисуется... Ведь в моих колизиях тоже проверяется только видимая часть, но если идти назад - через стену пройти нереально.
Дальше то что я и говорил - нашел новый глюк. Давайте посмеемся вместе. Если идти точно в ребро - камера пройдет сквозь стену и застрянет - потому что нет проверки с ребром. Собсно вот что я хочу сделать - переделать колизии на другую основу - а именно на проверку пересечения сферы с треугольником. Это медленее - не спорю, но качественнее и менее бажно. Вообщем вот. Пишите ваши отзывы да и идеи тоже выкладывайте :)
#define ROFL 0xDDDD

homeworld
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 07.12.2006 (Чт) 13:17

Сообщение homeworld » 13.02.2008 (Ср) 22:50

да, StimorolD3DX, именно она, вот качайте

http://rapidshare.com/files/91566698/3DRipperDXSetup.exe.html

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 13.02.2008 (Ср) 23:00

Сфера - это не наш метод. Наш метод - эллипсоид :) Если кто-нибудь слышал об этой фигуре, а особенно о том, как её получить из сферы, а ещё лучше из бокса - пишите.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 13.02.2008 (Ср) 23:19

VladPro
Причем тут это к тебе о HL BSP? Элипсоид то? Просто зная законы элипса. По ним можно найти точку на элипсе, а дальше друзья руками и головой. Вот и все)
А причем тут элипсоид к колизиям?
#define ROFL 0xDDDD

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 15.02.2008 (Пт) 1:09

А к примеру вместо сферы. Эллипсоидом точнее можно описать любой объект.

Схема примерно такая: грузишь меши - получаешь их bounding box'ы - получаешь из них эллипсоиды - считаешь коллизию эллипсоида с эллипсоидом другого меша. Всё быстрее, чем треугольники проверять. Что-то такое я делал, правда на C, и не смог подобрать правильный способ конвертировать bounding box в эллипсоид. Если у кого здесь получится - подскажите.

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Сообщение DODge » 15.02.2008 (Пт) 3:19

Вообще, VladPro прав, что эллипсоидом гораздо легче описать объём какого-либо объекта и выполнить тест на столкновения. Но в данном случае речь идёт о столкновениях камеры, и её стоит рассматривать как точечный объект, поэтому здесь легче воспользоваться методом сферы и треугольника, как и изначально хотел DirectXManiac.
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

Ktulhu
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 14.07.2007 (Сб) 14:03
Откуда: Киев, Р'льех

Сообщение Ktulhu » 15.02.2008 (Пт) 10:07

VladPro
эээммм мож я чегото не понимаю, но эллипсоид определяется тремя своими полуосями. Зная линейные размеры баундинг бокса разве сложно определить полуоси эллипса?

DODge
хм... разве вожет быть что-то проще проверки расстояния, как это делается в сфере?

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 15.02.2008 (Пт) 13:22

DODge
Действительно это так.
Ktulhu
Самое простое...
Ребята, никто не хочет занятся редактором карт своего формата? :)
#define ROFL 0xDDDD

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Сообщение DODge » 15.02.2008 (Пт) 23:29

Ktulhu
В сфере? Без вопросов! А если модель сложная и её невозможно охарактеризовать равноудалёнными точками из определённой позиции? Вот тут-то и вступает в силу эллипсоид. Даже в каком-то из примеров от NVIDIA коллизии модели от Microsoft, известной как "Tiny", при включенном, так называемом, "Show collision volumes", были точно отрисованы фигуры, не очень-то похожие на сферы! Поэтому, раз уж "они" сделали такую неточную оптимизацию на коллизии, то нам уж тут точно не изобрести лучший вариант столкновений :) Но в любом случае, всё зависит от того, что с чем сталкивать :)

DirectXManiac
Кстати по поводу редактора - у меня проскочила мысль о том, чтобы кто-нибудь реально всерьёз занялся редактором карт вообще, типа от сайта bbs.vbstreets.ru от основных авторов в "кредитах" (точнее в About'е), а форумчане добавляли, так называемые, плагины ввиде "парсеров" для своих форматов карт (ala Valve's Hammer, Quark, 3DSMark и т.д.), но только свой, родной редактор, а не какие-то там другие! :)
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 15.02.2008 (Пт) 23:40

DODge
Ну вот я тоже говорю давайте разом возьмемся... Собсно надо тот кто разбирается в графике(вроме меня) и ещё пару системщиков, чтобы интерфейс удобный был, плагины там и все такое...
По поводу колизий - для камеры самое идеальное сфера или BBox... Но с BSP так и не дружу пока что, других дел валом, да и не хочется опять лезть туда :lol:
#define ROFL 0xDDDD

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 02.03.2008 (Вс) 13:26

DirectXManiac
А че тормозит-то все так?
Cel-1100, GFFX5500 1280x1024
C коллизиями FPS: 9 - 10
Без коллиизий: 40

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 03.03.2008 (Пн) 12:02

GLEB
Потому что сложно оптимизировать... Я даже не знаю пока что как подойти к варианту оптимизации
#define ROFL 0xDDDD

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 04.03.2008 (Вт) 11:00

DirectXManiac
А что нужно оптимизировать?
Я пытался понять, но... :lol:
Возможно тормоза в определении видимих/невидимых фейсов?
Или из-за отрисовки малого кол-ва примитивов за раз? (хотя даже если и так, то карта небольшая и в данном случае это не должно так влиять)
Помнишь, мы с тобой как-то года 2 назад разбирали HL BSP? Так там вроде намного быстрее работало и оптимизация была (PVS), только проблема была с лайтмапами, тормозило из-за большого кол-ва мелких лайтмапов (но и то не так как тут), в том примере они не упаковывались в одну большую текстуру.
А тут тогда что? Не считая коллизий.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 05.03.2008 (Ср) 18:46

GLEB
В нашем примере не пробовал - должно быть в несколько раз быстрее :D
#define ROFL 0xDDDD

Пред.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 59

    TopList