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'