HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > [Тутор] Кастомный фов для вьюмодели
как в хл2
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32260
Нанёс повреждений: 392 ед.

Рейтинг



[Тутор] Кастомный фов для вьюмодели

Ко мне вчера в аську постучалось несколько человек и все вдруг попросили сделать кастомный fov для вьюмодели в халфе.
Наверное это был какой-то праздничный флэшмоб.
Собственно говоря проблема заключается в неправильном отображении вьюмоделек из хл2 где имелся кастомный фов и его можно было крутить.
Так или иначе - я выполнил их просьбу и написал простенький код который делает желаемое.
Постить сюда исходники не буду - смотрите рар-хив.
Собственно код очень простой - мы выбираем проективную матрицу, сохраняем текущую, и загружаем собственную в момент отрисовки вью-модели. А затем восстанавливаем основную.
FOV меняется консольной переменной cl_viewmodel_fov и работает только для OpenGL рендера (ну впрочем как и всегда).
О том, что кастомный FOV включен нас информирует строчка в консоли
CStudioModelRenderer: enable custom fov (в самом верху).
В рар-хиве изменные файлы оригинального сдк+скомпиленная дллка.
Наслаждайтесь

Вложение: vmodel_fov.rar (188.8 кб)
Этот файл был скачан 580 раз.
Дядя Миша проверил это вложение на вирусы 07-01-2010 в 13:51

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50030

Старое сообщение 07-01-2010 13:48
-
BeFore
Житель форума

Дата регистрации: Apr 2009
Проживает: (void)
Сообщений: 402

Рейтинг



Дядя Миша
Ага, помню я у тебя тоже спрашивал несколько месяцев назад
Есть еще другой вариант как сделать viewmodel_fov, но результат один и тот-же.

Сообщить модератору | | IP: Записан
Сообщение: 50032

Старое сообщение 07-01-2010 14:18
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32260
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
BeFore писал:
Есть еще другой вариант как сделать viewmodel_fov, но результат один и тот-же.

расскажи что за вариант?

Добавлено 07-01-2010 в 19:01:

А вот вам исправленная и дополненная версия
В этом коде учитывается текущий fov (например для арбалета), корректируется перспектива для карт с кастомным MaxRange
и положение аттачментов (теперь рисуются правильно).

Вложение: vmodel_fov.rar (189.6 кб)
Этот файл был скачан 536 раз.
Дядя Миша проверил это вложение на вирусы 07-01-2010 в 16:01

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50033

Старое сообщение 07-01-2010 16:01
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32260
Нанёс повреждений: 392 ед.

Рейтинг



И еще один маленький (последний) фикс - трипмайны на стенках глючили.
Ошибся я малость в коде.
На этом позвольте откланяться - больше я к этому коду не вернусь.

Вложение: vmodel_fov.rar (189.7 кб)
Этот файл был скачан 562 раз.
Дядя Миша проверил это вложение на вирусы 07-01-2010 в 17:23

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50034

Старое сообщение 07-01-2010 17:23
-
PoD-Stas
Житель форума

Дата регистрации: Jul 2007
Проживает: Харьков
Сообщений: 586
Возраст: 34

Рейтинг



Дядя Миша это рассчитывается по формуле
viewer distance = (screenwidth)/(2*tan(FOV/2)) ?
И вопрос в ХЛ2 вроде как не только размещение вью модели меняется, или не так?

Сообщить модератору | | IP: Записан
Сообщение: 50035

Старое сообщение 07-01-2010 17:37
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32260
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
PoD-Stas писал:
это рассчитывается по формуле

Что ЭТО ?
Цитата:
PoD-Stas писал:
И вопрос в ХЛ2 вроде как не только размещение вью модели меняется, или не так?

Понятия не имею как в хл2. Народ говорит что все правильно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50041

Старое сообщение 07-01-2010 20:28
-
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



ААА!! Ты крут! Спасибо! Я долго мучался и делал сам вьюмодел_фов и сделал, БиФор про мой способ говорит. Я в StudioDrawModel выставлял матрицу проекции для вьюмодели и возращал.
У моего способа есть слабость - аттачменты на фове 90 остаются вродь, вообщем маззлфлэш не там где надо

__________________
Base Defense on Steam, ModDB

Сообщить модератору | | IP: Записан
Сообщение: 50042

Старое сообщение 07-01-2010 20:32
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32260
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
PLut писал:
Я в StudioDrawModel выставлял матрицу проекции для вьюмодели и возращал.

А я по твоему как сделал? Вы хоть в исходники загляните сперва, а потом умничайте.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50043

Старое сообщение 07-01-2010 20:42
-
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



Да я скачал только что

__________________
Base Defense on Steam, ModDB

Сообщить модератору | | IP: Записан
Сообщение: 50044

Старое сообщение 07-01-2010 20:53
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34564
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


PLut Ты и первый пост не читал, надо полагать.

Цитата:
Дядя Миша писал:
мы выбираем проективную матрицу, сохраняем текущую, и загружаем собственную в момент отрисовки вью-модели. А затем восстанавливаем основную.

Чукча, как известно, не читатель - ему бы поскорее камент зафигачить

__________________

Сообщить модератору | | IP: Записан
Сообщение: 50045

Старое сообщение 07-01-2010 21:19
-
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



Да, поторопился

Кстати по поводу фишек из хл2, расскажите пожалуйста о инертном смещении оригина вьюмодели при изменении направления обзора
Ну или просто: отставание вьюмодели когда вертишь башкой.
Расскажите как сделать это можно и вообще какие способы.

__________________
Base Defense on Steam, ModDB

Сообщить модератору | | IP: Записан
Сообщение: 50046

Старое сообщение 07-01-2010 23:26
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12924
Возраст: 32

Рейтинг



PLut
player.h

C++ Source Code:
1
BOOL	m_bIron;
2
float posiciondemanos_abajo;
3
float posiciondemanos_adentro;
4
float posiciondemanos_medio;
5
float posiciondezoom;


client.cpp - ClientCommand()
C++ Source Code:
1
else if ( FStrEq(pcmd, "iron" ) )
2
{
3
  if ( GetClassPtr((CBasePlayer *)pev)->m_bIron )
4
    GetClassPtr((CBasePlayer *)pev)->m_bIron = FALSE;
5
  else
6
    GetClassPtr((CBasePlayer *)pev)->m_bIron = TRUE;
7
}


player.cpp - Prethink()
C++ Source Code:
1
edict_t *pClient;
2
pClient = g_engfuncs.pfnPEntityOfEntIndex( 1 );
3
 
4
CBaseEntity *pEntity;
5
 
6
if ( m_Activity == ACT_RELOAD || m_Activity == ACT_HOP )
7
  m_bIron = FALSE;
8
 
9
if ( m_bIron  )
10
{
11
  //change weapon's aiment
12
  posiciondemanos_abajo = -1.0;
13
 
14
  if(posiciondemanos_medio <= 3.4)
15
    posiciondemanos_medio += 0.12;
16
 
17
  posiciondemanos_adentro = 0.0;
18
 
19
  if(posiciondezoom >= 55.0)
20
    posiciondezoom -= 1.0;
21
 
22
  //change speed
23
  g_engfuncs.pfnSetClientMaxspeed( ENT( pev ), 120 );
24
}
25
if ( posiciondemanos_abajo >= 0.0 )
26
  posiciondemanos_abajo -= 0.1;
27
 
28
if(posiciondemanos_abajo <= 0.0)
29
  posiciondemanos_abajo = 0.0;
30
 
31
if ( posiciondemanos_adentro >= 0.0 )
32
  posiciondemanos_adentro -=0.1;
33
 
34
if(posiciondemanos_adentro <= 0.0)
35
  posiciondemanos_adentro = 0.0;
36
 
37
 
38
if ( posiciondemanos_medio > 0.0 )
39
  posiciondemanos_medio -= 0.1;
40
 
41
if ( posiciondemanos_medio < 0.0 )
42
  posiciondemanos_medio += 0.1;
43
 
44
if(posiciondezoom < 90)//fix
45
  posiciondezoom += 1;
46
 
47
CLIENT_COMMAND(pClient, "scr_ofsz %f\n", posiciondemanos_abajo);//down
48
CLIENT_COMMAND(pClient, "scr_ofsx %f\n", posiciondemanos_adentro);//back
49
CLIENT_COMMAND(pClient, "scr_ofsy %f\n", posiciondemanos_medio);//back
50
 
51
CLIENT_COMMAND(pClient, "default_fov %f\n", posiciondezoom);//down
52
if ( m_bIron  )
53
{
54
  //change weapon's aiment
55
  posiciondemanos_abajo = -1.0;
56
 
57
  if(posiciondemanos_medio <= 3.4)
58
    posiciondemanos_medio += 0.12;
59
 
60
  posiciondemanos_adentro = 0.0;
61
 
62
  if(posiciondezoom >= 55.0)
63
    posiciondezoom -= 1.0;
64
 
65
  //change speed
66
  g_engfuncs.pfnSetClientMaxspeed( ENT( pev ), 120 );
67
}
68
else
69
{
70
  g_engfuncs.pfnSetClientMaxspeed( ENT( pev ), CVAR_GET_FLOAT( "sv_maxspeed") );
71
}


C++ Source Code:
pEntity = FindEntityForward( this );

после
C++ Source Code:
CBaseEntity *pEntity;


На деле не проверял, так что если не пашет то ой.

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

Сообщить модератору | | IP: Записан
Сообщение: 50047

Старое сообщение 08-01-2010 10:00
- За что?
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



1. Код из АМ
2. Это код ironsight (прицел с мушки)
3. Здесь не оригин смещается, а сама камера, как я понял...

Вот видео того о чем я говорю: http://www.youtube.com/watch?v=eUiNLldsfW0
Смотреть на вьюмодельку. В хл1 она не отстает от прицела и двигается топорно вместе с камерой, а в хл2 она плавно двигается.

__________________
Base Defense on Steam, ModDB

Сообщить модератору | | IP: Записан
Сообщение: 50048

Старое сообщение 08-01-2010 10:10
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32260
Нанёс повреждений: 392 ед.

Рейтинг



PLut возьми код из управления раектой редемира.
Она там тоже напарвление не сразу меняет.
Пихни этот код с сервера на клиент и добавляй к углам пушки.
Получится та же самая иррунда. UTIL_ApproachAngle тебе надо или што-то такое.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50049

Старое сообщение 08-01-2010 10:28
-
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



Спасибо, сейчас буду разбираться.

__________________
Base Defense on Steam, ModDB

Сообщить модератору | | IP: Записан
Сообщение: 50050

Старое сообщение 08-01-2010 11:09
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 22:30. Новая тема    Ответить
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > [Тутор] Кастомный фов для вьюмодели
как в хл2
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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