HLFX.Ru Forum Страницы (8): [1] 2 3 4 5 » ... Последняя »
Показать все 109 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Телевизор в ХЛ (https://hlfx.ru/forum/showthread.php?threadid=1040)


Отправлено Ku2zoff 03-12-2007 в 08:34:

Arrow Телевизор в ХЛ

Недавно я узнал про AviKit. Эта вещь позволяет воспроизводить avi-файлы внутри игр. Есть даже мод для ХЛ, телик работает по принципу монитора в Xash. Но сорцев мода нету. Я прошу всех заинтересованных помочь в разработке исходников. [Или XaeroX'a выложить то, что он по этому поводу делал ]

Здесь можно скачать мини-мод и исходники демок авикита:
http://randomnine.wootfu.com/project.php?p=18


Отправлено FiEctro 04-12-2007 в 10:04:

>> принципу монитора в Xash

Нифига не по принципу мониторов ...
Т.к. ксаш рисует на текстуру , авкит же рисует просто плоскость .... Но впринципе можно сделать и для текстуры , сделайте в движке "второй монтор" и заставьте на него проецировать ролик ...
Кстати там демокарта глючная ... Юзайте мою ...

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Ku2zoff 05-12-2007 в 08:13:

Итак, вопрос: как сделать, чтобы энтитя считывалась непосредственно клиентской длл и все её параметры тоже?(естественно, на сервере она уже закреплена за классом)


Отправлено PoD-Stas 09-12-2007 в 12:40:

Я считаю так же как в спирите спрайты на поверхности брашей ?! Это можна присобачить впринципе, но. Есть пару "но"


Отправлено Ku2zoff 17-03-2008 в 16:45:

Вот, поднял старую тему, не плюсуйте плз, мне нужно несколько советов:

1. откуда лучше вызывать загрузку видеоролика?
(Предполагаю, что это Hud_Init)

2. откуда вызвать обновление видеотекстуры(смена кадров) и что за переменную можно использовать в качестве времени воспроизведения?(Hud_Redraw, Hud_Think, CalcRefdef)

3. И есть ли способ не использовать fmod для воспроизведения звука? Или лучше можно ли подгрузить уже загруженную дллку фмода от MP3 плеера, чтобы музыка не остановилась и был звук из ролика?


Отправлено Дядя Миша 17-03-2008 в 17:11:

-CJ- ну хватит уже с умным видом нести фигню
Ну эксперты кругом, куда ни плюнь!
Ku2zoff делай по принципу видеотекстур в ку3.
и вся недолга.

Добавлено 17-03-2008 в 20:11:

1. видеоролики грузить не нужно, они потоком проигрываются, можешь выполнять инициализацию по мессаге.
2. Обновлять из калкрефдеф
3. Вряд ли


Отправлено Ku2zoff 17-03-2008 в 17:20:

Дядя Миша по принципу видеотекстур из ку3? Я исходники глянул, чуть голову не сломал, решил больше в них не возвращаться(пока не закончу мод для ХЛ) Но всё-таки гляну как там сделано. Вообще я за основу взял монитор из ксаша. Я на него проецировал произвольные текстуры, вообще от фонаря взятые. Например детальную текстуру(но как в паранойе у меня всё равно не получилось )...
Придётся ещё качать статик либы фмода...


Отправлено Дядя Миша 17-03-2008 в 17:36:

>>Придётся ещё качать статик либы фмода...
да ты его динамически подключи, в чем проблема-то?
а в кутри очень просто сделано и очень разумно, просто чтобы разобраться нужно время, загляни в cl_video.c


Отправлено FiEctro 17-03-2008 в 18:35:

Дядя Миша Ты дату поста смотрел ?
хотя насчет плоскости всеже вохзможно я прав , т.к. в хамере даже задаётся его разрешение ....

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 17-03-2008 в 19:17:

-CJ- у глупости, равно как и у правды не выходит срок (С)
а если ты не понимаешь что такое плоскость и как она образована - это не моя вина.


Отправлено Ku2zoff 17-03-2008 в 20:29:

Цитата:
Дядя Миша писал:
загляни в cl_video.c


Я нашёл тока ui_video.c Может версии исходников разные? У меня Quake v3-1.32b
В общем в авиките всё просто, надо только это правильно распихать по клиентской дллке ХЛ. И ещё найти способ создать область в которой и будет рисоваться текстура(можно отправить через мессагу индекс энтити и прилепить к её координатам и направлению + имя видеоролика и проч.).


Отправлено Дядя Миша 17-03-2008 в 21:02:

А сорьки, не cl_video.c а cl_cin.c

code:
void Draw_StretchRaw (int x, int y, int w, int h, int cols, int rows, byte *data, bool dirty) { int i, j; qglFinish(); GL_Bind(0); qglTexImage2D (GL_TEXTURE_2D, 0, gl_tex_solid_format, cols, rows, 0, GL_RGBA, GL_UNSIGNED_BYTE, data ); qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_max); qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max); R_SetGL2D(); qglColor4fv(gl_state.draw_color); qglBegin(GL_QUADS); qglTexCoord2f( 0.5f / cols, 0.5f / rows ); qglVertex2f (x, y); qglTexCoord2f((cols - 0.5f) / cols , 0.5f / rows ); qglVertex2f (x+w, y); qglTexCoord2f((cols - 0.5f) / cols, (rows - 0.5f) / rows ); qglVertex2f (x+w, y+h); qglTexCoord2f(0.5f / cols, ( rows - 0.5f )/rows ); qglVertex2f (x, y+h); qglEnd(); }

Смысл в чем - грузим наш кадр в видеопамять, тут же его биндим и рисуем. Поскольку кадров в секунду получается штук 15-20, а размер кадра от силы 200х160 (мы же маленький телевизор делаем, верно?) то на общей производительности это никак не скажется.
Код в данном случае предназначен для отрисовки видео в полный экран, но никто нам не запретит скормить ему координаты какого-нибудь полигона на карте (ессно R_SetGl2D надо убрать и glFinish тоже).

Добавлено 18-03-2008 в 00:02:

Про область - все элементарно, смотри как подобная текстура для монитора находится в Xash. Нам понадобится текстура с ключевым именем, типа "video", новый флаг SURF_VIDEO (по аналогии с SURF_PORTAL и SURF_MIRROR) ну и все остальное можно тупо скопипастить из кода камеры.
Единственная разница - это то, что вместо
code:
void R_NewScreenRenderPass( void ) { if (m_pCurrentScreen) { glBindTexture(GL_TEXTURE_2D, m_pCurrentScreen->texture); if(m_pCurrentScreen->color == 0 && !g_HardwareShaderCapable)//support for old video cards glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE8, 0, ScreenHeight - VIEWPORT_SIZE, VIEWPORT_SIZE, VIEWPORT_SIZE, 0); else glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, ScreenHeight - VIEWPORT_SIZE, VIEWPORT_SIZE, VIEWPORT_SIZE, 0); } }

Нам нужно будет грузить новый кадр из авишки. И естественно убрать проход в CalcRefDef, поскольку телевизор не требует отдельного прохода.
Как-то так.


Отправлено XaeroX 18-03-2008 в 04:10:

Дядя Миша ты хочешь сказать, что они вызывают glTexImage2D для загрузки кадра текстуры? Кармак что, с перепоя этот код писал? Для кого glTexSubImage2D придумали...
А фмод - он и так загрузится один раз, и все глобальные параметры будут общие. Если ты конечно его как дллку грузишь (динамически или статически - не важно, главное что не либу).

__________________

xaerox on Vivino


Отправлено Дядя Миша 18-03-2008 в 06:50:

XaeroX знаешь у меня на 9800 порою glBegin\glEnd работает быстрее чем VBO, поэтому я промолчу про glTexSubImage.


Отправлено Ku2zoff 18-03-2008 в 06:57:

>>поскольку телевизор не требует отдельного прохода

??? я не знал. Вообще хорошо бы чтоб и монитор не требовал, а зеркало только осталось. fmod я загружу динамически, без статик либов, чтоб кашу в коде не делать. Я ещё не смотрел можно ли ставить ролик на паузу. Хотя если там за время ролика считается время аудиопотока, то логично будет рассудить, что если аудио на паузе, то и кадр остановится.

Проблема в размере видеороликов. Если делать их со сжатием, то придётся вместе с модом устанавливать видеокодек.


Временная зона GMT. Текущее время 18:55. Страницы (8): [1] 2 3 4 5 » ... Последняя »
Показать все 109 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024