Sidebar

радиусы а ambient_generic

HoRRoR

...
Jan 5, 2006
4,596
7
0
радиусы а ambient_generic

в ambient_generic радиусы small, medium и large, дык вось: скока они в юнитах? (радиус, не диаметр) :)

[ADDED=HoRRoR]1198767381[/ADDED]
нада бутт в MLE 1.2a такую инфу добавить))
 
Last edited:

Пряный Кот

New member
Oct 26, 2006
355
Не так-то все просто... Попробую пояснить, как вычисляется ослабление звука в движке первого квейка.
При старте звука ему в качестве параметра передается Attenuation - ATTN_NORM, ATTN_IDLE (это определенные константы) или любое число с плавающей запятой. У ambient_generic эти параметры как раз и соответствуют определенным значениям ослабления. Далее, для канала звука вычисляется множитель расстояния - это значение ослабления, деленое на константу sound_nominal_clip_dist (в первом квейке она равна 1000). Потом каждый кадр вычисляется расстояние до слушателя и умножается на этот множитель, после чего полученное значение усекается по отрезку (0,1), вычитается из единицы и умножается на громкость канала.
Так что посмотрите в исходниках хл1 значения констант ATTN_* и проведите эти вычисления.
Например, ATTN_NORM = 1.0, следовательно звук полностью исчезнет на расстоянии 1000 юнитов от источника.
И еще - для статических звуков (которые играются не через EMIT_SOUND, а через UTIL_EmitAmbientSound), значение ослабления еще делится на 64. То есть для ATTN_NORM получаем радиус в 64000 юнитов. Однако - так в ку1, в хл1 может быть другая константа или же не быть ее вообще.
 

Пряный Кот

New member
Oct 26, 2006
355
2 HoRRoR:
1000 поделить на значение константы ATTN_*
В хл1 они такие:
Code:
#define ATTN_NONE		0
#define ATTN_NORM		(float)0.8
#define ATTN_IDLE		(float)2
#define ATTN_STATIC		(float)1.25
Для ambient_generic получаются такие радиусы:
Play everywhere - бесконечность
Small Radius - 500 юнитов
Medium Radius - 800 юнитов
Large Radius -1250 юнитов
Если ни одна галочка не поставлена - 800 юнитов.

Вот я за вас все и посчитал :cat:
 

Пряный Кот

New member
Oct 26, 2006
355
2 Skaarj:
Code:
if ( FBitSet ( pev->spawnflags, AMBIENT_SOUND_EVERYWHERE) )
	{
		m_flAttenuation = ATTN_NONE;
	}
	else if ( FBitSet ( pev->spawnflags, AMBIENT_SOUND_SMALLRADIUS) )
	{
		m_flAttenuation = ATTN_IDLE;
	}
	else if ( FBitSet ( pev->spawnflags, AMBIENT_SOUND_MEDIUMRADIUS) )
	{
		m_flAttenuation = ATTN_STATIC;
	}
	else if ( FBitSet ( pev->spawnflags, AMBIENT_SOUND_LARGERADIUS) )
	{
		m_flAttenuation = ATTN_NORM;
	}
	else 
	{// if the designer didn't set a sound attenuation, default to one.
		m_flAttenuation = ATTN_STATIC;
	}
 

Skaarj

Супер Модератор
Aug 12, 2004
18,747
Угу, я это и имел в виду, что он до первой поставленной галочки в том порядке как у тебя код написан.
 

Skaarj

Супер Модератор
Aug 12, 2004
18,747
Ясненько, вот ведь узнаю всякие тонкости именно тогда, когда на маппинг уже забил. :)
 

Пряный Кот

New member
Oct 26, 2006
355
Ну я, если честно, тоже впервые об этом узнал сегодня. Из своего поста. :cat:
Ну в смысле, никогда не интересовался, какие там на самом деле радиусы...
 

HoRRoR

...
Jan 5, 2006
4,596
7
0
расчеты сделаны, всем сенк

[ADDED=HoRRoR]1198782464[/ADDED]
это ж что, тАААкИИИе гигААААнские радиусы????
 

Attachments

Last edited:

Пряный Кот

New member
Oct 26, 2006
355
Почему же гигантские? Вполне нормальные радиусы.
Кстати, там еще PVS/PAS проверяется, чтобы звук за стенкой слышен не был.
 

Ромка

Р
Может чуть не в тему, но как так сделать, чтоб звук шагов не был слышен сквозь конкретную стенку? А то нелогично получается у меня на карте.
 

Пряный Кот

New member
Oct 26, 2006
355
2 Ромка:
Да никак. Если компилятор посчитал, что за стенкой должно быть слышно, то ничего тут не поделаешь. Нужно менять планировку.
Если стенка не func_wall, конечно. В таком разе можно попробовать превратить ее в world brush.

[ADDED=Пряный Кот]1198787896[/ADDED]
2 qpAHToMAS:
Вот этого в исходниках ку1 нет, так что я понятия не имею, что это за переменные - s_occlude и т.п.
 
Last edited:

Scream

aw
Oct 29, 2005
6,857
38
Сколько в хл играл и ни разу не замечал, чтобы стены гасили звук. По-моему там этого просто нет, звук играет насквозь всего и затухает в зависимости от радиуса...

Кстати, а вообще возможно прописать в коде акустику так, чтобы звук проходил через определённые материалы по-разному и отражался? Давно интересовал этот вопрос...
 

Skaarj

Супер Модератор
Aug 12, 2004
18,747
В Unreal под A3D на звуковухах Aureal Vortex такое было, с реальным отражением звука от полигонов.
С EAX я такое не помню когда появилось, или в EAX2.0 или в более поздней версии.
 

qpAHToMAS

New member
Oct 22, 2006
9,289
33
"Сколько в хл играл и ни разу не замечал, чтобы стены гасили звук. По-моему там этого просто нет, звук играет насквозь всего и затухает в зависимости от радиуса..."

Есть, команда s_occfactor отвечает за "приглушивание" звука через стены...
 

Game Server

CSM TV

Page QR Code

QR Code

Donate Campaign

Total amount
$0.00
Goal
$25.00

Latest profile posts

TestUser wrote on TRUP@C's profile.
Master?
TestUser wrote on TRUP@C's profile.
Hello Father

Members online

No members online now.

Discord