Sidebar

env_projectedtexture & кинематографическая физика

staseg

Ищу долбаное желание
Jul 5, 2010
231
29
env_projectedtexture & кинематографическая физика

Всем привет. Вот у меня 2 вопроса.
1. Чего не хватает в 2007 версии сорса ентити env_projectedtexture? Если кто знает,можете рассказать как она вообще работает? Я все вроде баги профиксил с офф сайта Valve. И всё-ровно она как-то криво отбрасывает тени по сравнению с source 2010 ( portal 2 ).
2. Вот есть такое понятие: кинематографическая физика. А можем ли мы, простые смертные, создавать её? Есть какие-нибудь редакторы?
 

DeTLeR

New member
Dec 17, 2006
2,777
2 staseg:
Криво пофиксил, там всё нормально работает. Только иногда бывают баги, если прожекттекса находится прямо над предметами, которые должны отбрасывать тень.
 

snaksan

New member
Jun 13, 2010
601
32
2 staseg: вопрос где-то уже задавался. думаю можем создавать. 3ds max в помощь. как проп делаешь нужную часть плагином разрушаешь анимацю делаешь конвертируешь и вуаля
 

staseg

Ищу долбаное желание
Jul 5, 2010
231
29
2 DeTLeR:
Слушай, а можешь мне кинуть файлы ( .cpp ) которые надо исправлять уже исправленные? А то я несколько дней голову ломал :mad:
 

staseg

Ищу долбаное желание
Jul 5, 2010
231
29
2 DeTLeR:
Ты очень любезен :)
Итак.
Enabling multiple shadow maps - сделал успешно.
Fixing targeting - после описанной процедуры игра вылетает. Как правильно сделать? ( вылет только при загрузке карты, где есть env_projectedtexture )
Fixing cuts in projected texture - сделал.
Fixing Parenting - делать не пробовал. Что это исправляет?
Enabling visibility tests - тоже не пробовал. Что исправляет?
Enabling shadow receiving on the view model - аналогично.
Decreasing shadow bleeding and "ghosting" - аналогично.
Lowering the amount of "grain" on shadows - зернистость вроде исправил. Во всяком случае разобрался, как регулировать.
Create a shadow map depth texture greater than the framebuffer size - что это исправляет?
Fix configurable texture value in Hammer - сделал успешно.
Буду офигенно благодарен за помощь :bigsmile:
 
Last edited:

DeTLeR

New member
Dec 17, 2006
2,777
2 staseg:
Fixing targeting - после описанной процедуры игра вылетает. Как правильно сделать? ( вылет только при загрузке карты, где есть env_projectedtexture )
Вот в этом все твои беды. Остальные пункты не так важны, но сделай их и не думай особо.
На клиенте вот это:
Code:
AngleVectors( GetAbsAngles(), &vForward, &vRight, &vUp );
Смени на это:
Code:
Vector vecToTarget = m_hTargetEntity->GetAbsOrigin() - GetAbsOrigin();
QAngle vecAngles;
VectorAngles( vecToTarget, vecAngles );
AngleVectors( vecAngles, &vForward, &vRight, &vUp );
На сервере просто смени функцию CEnvProjectedTexture::InitialThink на ту, что в туторе, т.е. вот эту:
Code:
void CEnvProjectedTexture::InitialThink( void )
{
	if ( m_hTargetEntity == NULL && m_target != NULL_STRING )
		m_hTargetEntity = gEntList.FindEntityByName( NULL, m_target );
	if ( m_hTargetEntity == NULL )
		return;
 
	Vector vecToTarget = (m_hTargetEntity->GetAbsOrigin() - GetAbsOrigin());
	QAngle vecAngles;
	VectorAngles( vecToTarget, vecAngles );
	SetAbsAngles( vecAngles );
 
	SetNextThink( gpGlobals->curtime + 0.1 );
}
И да, я очень любезен.
 

staseg

Ищу долбаное желание
Jul 5, 2010
231
29
2 DeTLeR:
Я понял. Я всё именно так и сделал. Вылетает.
И ещё. Есть ссылка на исходники? А то их удалили из раздела.
 

staseg

Ищу долбаное желание
Jul 5, 2010
231
29
Всё, Targeting профиксил. Еще один вопрос.
[HIDE]Enabling visibility tests

Projected textures are not tested for visibility. Being constantly enabled creates issues like shadows bleeding through walls. To fix them, head into c_env_projectedtexture.cpp, and make these changes:
Add a new function (remember to declare it in the header):
bool C_EnvProjectedTexture::ShouldDraw()
{
//No need to check the flashlight for visibility.
if( m_bCameraSpace )
return true;

//Trace forward to the nearest brush face to get a good leaf test vector.
Vector vForward;
GetVectors( &vForward, NULL, NULL );

Vector vTraceStart = GetAbsOrigin();
Vector vTraceEnd = GetAbsOrigin() + vForward * m_flFarZ;

trace_t tr;
CTraceFilterWorldOnly filter;

UTIL_TraceLine( vTraceStart, vTraceEnd, CONTENTS_SOLID && CONTENTS_OPAQUE, &filter, &tr );

//Check to see if our end vector is in a visible leaf.
int LeafNum = enginetrace->GetLeafContainingPoint( tr.endpos );
return render->AreAnyLeavesVisible( &LeafNum,1 );
}
In C_EnvProjectedTexture::UpdateLight, change the first line to read:
if ( m_bState == false || !ShouldDraw() )[/HIDE]
Что значит "обозначить функцию в шапке? Где её надо обозначить? И как?
 

Psycho-A

 
Staff member
Модератор
Aug 29, 2009
4,020
37
76
48
  • Золотая медаль 225
Fixing Parenting - делать не пробовал. Что это исправляет?
Это позволяет нормально припарентить энтитю к какому-либо динамическому объекту (т.е. энтитя будет перемещаться вместе с ним, подобно light_dynamic). Довольно удобно при создании переносных фонарей или качающихся на потолке ламп...
 

staseg

Ищу долбаное желание
Jul 5, 2010
231
29
Как видно: тени отображаются не так, как надо. ( Модель пробоины в стене стоит вплотную к полу. )
Enabling multiple shadow maps - Сделал
Fixing targeting - Сделал
Fixing cuts in projected texture - Сделал
Enabling visibility tests - Нужна помощь.
Enabling shadow receiving on the view model - Сделал
Decreasing shadow bleeding and "ghosting" - Сделал
Lowering the amount of "grain" on shadows - Знаю, как делать. На скрине еще не сделал
Create a shadow map depth texture greater than the framebuffer size - Нужна помощь.
 

Attachments

Last edited:

haos9cr

Member
Dec 6, 2009
247
0
16
Create a shadow map depth texture greater than the framebuffer size
После того как ввожу эту функцию мод перестает запускаться