Недавно я узнал про AviKit. Эта вещь позволяет воспроизводить avi-файлы внутри игр. Есть даже мод для ХЛ, телик работает по принципу монитора в Xash. Но сорцев мода нету. Я прошу всех заинтересованных помочь в разработке исходников. [Или XaeroX'a выложить то, что он по этому поводу делал ]
Нифига не по принципу мониторов ...
Т.к. ксаш рисует на текстуру , авкит же рисует просто плоскость .... Но впринципе можно сделать и для текстуры , сделайте в движке "второй монтор" и заставьте на него проецировать ролик ...
Кстати там демокарта глючная ... Юзайте мою ...
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Итак, вопрос: как сделать, чтобы энтитя считывалась непосредственно клиентской длл и все её параметры тоже?(естественно, на сервере она уже закреплена за классом)
Вот, поднял старую тему, не плюсуйте плз, мне нужно несколько советов:
1. откуда лучше вызывать загрузку видеоролика?
(Предполагаю, что это Hud_Init)
2. откуда вызвать обновление видеотекстуры(смена кадров) и что за переменную можно использовать в качестве времени воспроизведения?(Hud_Redraw, Hud_Think, CalcRefdef)
3. И есть ли способ не использовать fmod для воспроизведения звука? Или лучше можно ли подгрузить уже загруженную дллку фмода от MP3 плеера, чтобы музыка не остановилась и был звук из ролика?
Дядя Миша по принципу видеотекстур из ку3? Я исходники глянул, чуть голову не сломал, решил больше в них не возвращаться(пока не закончу мод для ХЛ) Но всё-таки гляну как там сделано. Вообще я за основу взял монитор из ксаша. Я на него проецировал произвольные текстуры, вообще от фонаря взятые. Например детальную текстуру(но как в паранойе у меня всё равно не получилось )...
Придётся ещё качать статик либы фмода...
>>Придётся ещё качать статик либы фмода...
да ты его динамически подключи, в чем проблема-то?
а в кутри очень просто сделано и очень разумно, просто чтобы разобраться нужно время, загляни в cl_video.c
Дядя Миша Ты дату поста смотрел ?
хотя насчет плоскости всеже вохзможно я прав , т.к. в хамере даже задаётся его разрешение ....
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Я нашёл тока ui_video.c Может версии исходников разные? У меня Quake v3-1.32b
В общем в авиките всё просто, надо только это правильно распихать по клиентской дллке ХЛ. И ещё найти способ создать область в которой и будет рисоваться текстура(можно отправить через мессагу индекс энтити и прилепить к её координатам и направлению + имя видеоролика и проч.).
Смысл в чем - грузим наш кадр в видеопамять, тут же его биндим и рисуем. Поскольку кадров в секунду получается штук 15-20, а размер кадра от силы 200х160 (мы же маленький телевизор делаем, верно?) то на общей производительности это никак не скажется.
Код в данном случае предназначен для отрисовки видео в полный экран, но никто нам не запретит скормить ему координаты какого-нибудь полигона на карте (ессно R_SetGl2D надо убрать и glFinish тоже).
Добавлено 18-03-2008 в 00:02:
Про область - все элементарно, смотри как подобная текстура для монитора находится в Xash. Нам понадобится текстура с ключевым именем, типа "video", новый флаг SURF_VIDEO (по аналогии с SURF_PORTAL и SURF_MIRROR) ну и все остальное можно тупо скопипастить из кода камеры.
Единственная разница - это то, что вместо
Дядя Миша ты хочешь сказать, что они вызывают glTexImage2D для загрузки кадра текстуры? Кармак что, с перепоя этот код писал? Для кого glTexSubImage2D придумали...
А фмод - он и так загрузится один раз, и все глобальные параметры будут общие. Если ты конечно его как дллку грузишь (динамически или статически - не важно, главное что не либу).
>>поскольку телевизор не требует отдельного прохода
??? я не знал. Вообще хорошо бы чтоб и монитор не требовал, а зеркало только осталось. fmod я загружу динамически, без статик либов, чтоб кашу в коде не делать. Я ещё не смотрел можно ли ставить ролик на паузу. Хотя если там за время ролика считается время аудиопотока, то логично будет рассудить, что если аудио на паузе, то и кадр остановится.
Проблема в размере видеороликов. Если делать их со сжатием, то придётся вместе с модом устанавливать видеокодек.