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=2935)
Отправлено Shapirlic 25-04-2012 в 17:39:
Мне для некого эффекта не хватает атачментов.Я расставил кости в нужные места,создал маленький плейн(кучку фейсов) за моделькой,прицепил их к фиктивным костям,дабы те не исчезли.Теперь мне нужно получить оригины этих костей.Как?
Отправлено XaeroX 25-04-2012 в 17:43:
Через студиорендер, что очевидно.
__________________
Отправлено Shapirlic 25-04-2012 в 17:45:
Это может быть и очевидно,но я спрашивал не теоретическую часть,а практическую.Тоесть я ожидал ответа типа
Vector origin =студиорендер.kakaiatofunckia(boneindex);
Отправлено XaeroX 25-04-2012 в 18:12:
Shapirlic
Такой функции нет. Тебе надо определить, что рисуется именно твоя модель, и потом сохранить координаты нужной кости. Ну и разумеется, эффект твой должен каким-то образом рисоваться после вызова функции студиорендера.
Добавлено 26-04-2012 в 01:12:
Почему ты так не любишь теорию? Практическую часть люди пишут сами, после того, как им объяснят теоретическую, разве нет?
__________________
Отправлено Shapirlic 25-04-2012 в 18:14:
void DLLEXPORT HUD_DrawTransparentTriangles( void ) - запускается после вызова функции студиорендера? Если нет то получается придётся рисовать или как то после,или в следуещем кадре - но тогда отставангие.
Отправлено XaeroX 25-04-2012 в 18:27:
Shapirlic
Поэкспериментируй с алертами.
__________________
Отправлено Дядя Миша 25-04-2012 в 18:53:
Shapirlic секрет подскажу 
Сохраняй позиции аттачментов для вьюмодели в массив entity->ph (position_history_t). Он всё равно для вьюмодели не используется.
Так ты прямо туда их и пиши. Там 64 слота, хватит тебе аттачментов.
Я в ксаш-моде такое сделал. Можешь там подглядеть.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Shapirlic 26-04-2012 в 12:58:
Всем спасибо,парни! 
Отправлено Дядя Миша 26-04-2012 в 14:35:
Цитата:
Shapirlic писал:
void DLLEXPORT HUD_DrawTransparentTriangles( void ) - запускается после вызова функции студиорендера?
Ни до и не после.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Shapirlic 26-04-2012 в 14:36:
А когда она запускается?
Отправлено Дядя Миша 26-04-2012 в 15:03:
Как-то так
C++ Source Code:
1 | // then draw translucent entities |
2 | for( i = 0; i < tr.num_trans_entities; i++ ) |
4 | if( RI.refdef.onlyClientDraw ) |
7 | RI.currententity = tr.trans_entities[i]; |
8 | RI.currentmodel = RI.currententity->model; |
10 | ASSERT( RI.currententity != NULL ); |
11 | ASSERT( RI.currententity->model != NULL ); |
13 | RI.currententity->curstate.renderamt = R_ComputeFxBlend( RI.currententity ); |
15 | switch( RI.currentmodel->type ) |
18 | R_DrawBrushModel( RI.currententity ); |
21 | R_DrawStudioModel( RI.currententity ); |
24 | R_DrawSpriteModel( RI.currententity ); |
32 | clgame.dllFuncs.pfnDrawTransparentTriangles (); |
33 | if( !RI.refdef.onlyClientDraw ) |
39 | // NOTE: some mods with custom renderer may generate glErrors |
41 | while( pglGetError() != GL_NO_ERROR ); |
43 | glState.drawTrans = false; |
44 | pglDepthMask( GL_TRUE ); |
45 | pglDisable( GL_BLEND ); // Trinity Render issues |
Впрочем по отношению к вьюмодели - действительно перед. Но относительно любого вызова DrawStudioModel такое сказать нельзя.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Shapirlic 26-04-2012 в 15:06:
Понятно.Спасибо! Придётся чё нить выдумывать )
Отправлено Shapirlic 30-04-2012 в 06:20:
Почему если я рендерю что-то через ТриАпи в функции HUD_DrawTransparentTriangles( void ) - то всё нормально.А если я этот же самый код копирую в другое место (например в StudioDrawPlayer( int flags, entity_state_t *pplayer )), то ТриАпи как то криво срабатывает.А именно вместо прозрачных синих лучей,какие получаются,если код их отображения расположен в функции DrawTransparentTriangles,получаются просто белые,как будто система ТриАпи игнорирует выставленный rendermode,а именно kRenderTransAdd, и игнорирует функцию gEngfuncs.pTriAPI->Color4f.Почему так?
Отправлено marikcool 30-04-2012 в 06:41:
может блендфанк вырубается или еще что то.
переведи просто на opengl, чтобы знать что конкретно врубается и вырубается проще будет думаю.
Отправлено Дядя Миша 30-04-2012 в 07:53:
Цитата:
Shapirlic писал:
А если я этот же самый код копирую в другое место
а ты не копируй этот же самый код в другое место. OpenGL, как стейтовая машинка сильно привязан к месту вызова в плане рендеринга.
В одном месте - одни стейты, в другом - другие.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'