HLFX.Ru Forum Страницы (3): « 1 2 [3]
Показать все 33 сообщений этой темы на одной странице

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=2050)


Отправлено Дядя Миша 09-01-2010 в 21:25:

PLut да все по прежнему, я от своих слов не отказуюсь.

__________________
My Projects: download page

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

Цитата:

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


Отправлено PLut 10-12-2010 в 14:57:

Exclamation

Прошу прощения за поднятие старой темы, но я исправил неприятный баг со сдвигом аттачментов во время движения, либо когда осматриваешься. На самом деле всё просто: заменил оригин и углы из класса CStudioModelRenderer на глобальные вектора v_origin, v_angles.

Надо в StudioModelRenderer.cpp заменить всю функцию StudioFormatAttachment.

Код ниже. Я немного перелопатил его в ходе выяснения причины бага, смотрел как в хл2бета сделано.

C++ Source Code:
1
extern vec3_t v_origin, v_angles;
2
 
3
void CStudioModelRenderer::StudioFormatAttachment( int nAttachment, bool bInverse )
4
{
5
  float worldx = tan( (float)gHUD.m_iFOV * M_PI / 360.0 );
6
  float viewx = tan( m_flViewmodelFov * M_PI / 360.0 );
7
 
8
  // aspect ratio cancels out, so only need one factor
9
  // the difference between the screen coordinates of the 2 systems is the ratio
10
  // of the coefficients of the projection matrices (tan (fov/2) is that coefficient)
11
  float factor = worldx / viewx;
12
 
13
  vec3_t vForward, vRight, vUp;
14
  AngleVectors( v_angles, vForward, vRight, vUp );
15
 
16
  // Get the coordinates in the viewer's space.
17
  Vector tmp = m_pCurrentEntity->attachment[nAttachment] - v_origin;
18
  Vector vTransformed( DotProduct( vRight, tmp ), DotProduct( vUp, tmp ), DotProduct( vForward, tmp ) );
19
 
20
  // Now squash X and Y.
21
  if ( bInverse )
22
  {
23
    if ( factor != 0 )
24
    {
25
      vTransformed.x /= factor;
26
      vTransformed.y /= factor;
27
    }
28
    else
29
    {
30
      vTransformed.x = 0.0f;
31
      vTransformed.y = 0.0f;
32
    }
33
  }
34
  else
35
  {
36
    vTransformed.x *= factor;
37
    vTransformed.y *= factor;
38
  }
39
 
40
  // Transform back to world space.
41
  Vector vOut = (vRight * vTransformed.x) + (vUp * vTransformed.y) + (vForward * vTransformed.z);
42
  m_pCurrentEntity->attachment[nAttachment] = v_origin + vOut;
43
}


Надеюсь, что помог кому-нибудь

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 10-12-2010 в 15:26:

Цитата:
PLut писал:
Прошу прощения за поднятие старой темы

если пишешь по делу - извиняться не надо. А наоборот молодец.

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 17:01. Страницы (3): « 1 2 [3]
Показать все 33 сообщений этой темы на одной странице

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