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:
 
 
Прошу прощения за поднятие старой темы, но я исправил неприятный баг со сдвигом аттачментов во время движения, либо когда осматриваешься. На самом деле всё просто: заменил оригин и углы из класса CStudioModelRenderer на глобальные вектора v_origin, v_angles.
Надо в StudioModelRenderer.cpp заменить всю функцию StudioFormatAttachment.
Код ниже. Я немного перелопатил его в ходе выяснения причины бага, смотрел как в хл2бета сделано.
C++ Source Code:
| 1 | extern vec3_t v_origin, v_angles; | 
| 3 | void CStudioModelRenderer::StudioFormatAttachment( int nAttachment, bool bInverse ) | 
| 5 |   float worldx = tan( (float)gHUD.m_iFOV * M_PI / 360.0 ); | 
| 6 |   float viewx = tan( m_flViewmodelFov * M_PI / 360.0 ); | 
| 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; | 
| 13 |   vec3_t vForward, vRight, vUp; | 
| 14 |   AngleVectors( v_angles, vForward, vRight, vUp ); | 
| 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 ) ); | 
| 20 |   // Now squash X and Y. | 
| 25 |       vTransformed.x /= factor; | 
| 26 |       vTransformed.y /= factor; | 
| 30 |       vTransformed.x = 0.0f; | 
| 31 |       vTransformed.y = 0.0f; | 
| 36 |     vTransformed.x *= factor; | 
| 37 |     vTransformed.y *= factor; | 
| 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; | 
 
Надеюсь, что помог кому-нибудь 
__________________
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'