This article's documentation is for anything that uses the Source engine. Click here for more information.

$bodygroup

Материал из Valve Developer Community
Перейти к: навигация, поиск

$bodygroup это QC команды доступный во всех играх на платформе Source Source.

English (en)Русский (ru)
Править

это которая создаёт группу мешей, которые могут быть включены, отключены или же выглядеть полностью по-другому. Серверный код может изменять их состояние.

Note.pngПримечание:Body-группы не могут изменять скелет или модель коллизии.

Пример

Эта body-группа позволяет иметь на оружии несколько прицелов (например мушку, лазерный прицел или же никаких прицелов вообще):

$bodygroup sights
{
	studio ironsights
	studio laser_dot
	blank
}

Эта body-группа обозначает целый регион модели, который использует несколько костей:

$bodygroup chest
{
	studio chest_with_no_armor
	studio chest_with_light_armor
	studio chest_with_heavy_armor
	studio chest_with_super_armor
}
Note.pngПримечание:Так как полигоны одних body-групп не используют те же вертексы, что и полигоны других body-group, они не должны иметь швов между собой.

Bodyгруппы в LOD мешах

Крайне рекомендуется использование LOD'ов - особенно для геометрии с высоким количеством полигонов. LOD'ы могут быть использованы с помощью QC-команды $lod:

$lod 12
{
	replacemodel chest_with_no_armor chest_with_no_armor_lod1
	replacemodel chest_with_light_armor chest_with_light_armor_lod1
	replacemodel chest_with_heavy_armor chest_with_heavy_armor_lod1
	replacemodel chest_with_super_armor chest_with_super_armor_lod1
}

$lod 18
{
	replacemodel chest_with_no_armor chest_with_no_armor_lod2
	replacemodel chest_with_light_armor chest_with_light_armor_lod2
	replacemodel chest_with_heavy_armor chest_with_heavy_armor_lod2
	replacemodel chest_with_super_armor chest_with_super_armor_lod2
}
$shadowlod
{
	replacemodel chest_with_no_armor chest_with_no_armor_lod2
	replacemodel chest_with_light_armor chest_with_light_armor_lod2
	replacemodel chest_with_heavy_armor chest_with_heavy_armor_lod2
	replacemodel chest_with_super_armor chest_with_super_armor_lod2
}

Программирование

Чтобы изменить состояние body-группы:

static int bodygroup = FindBodygroupByName("chest"); // используйте эту строку лишь один раз
SetBodygroup( bodygroup, 1 ); // установить body-группу "chest" на второе значение (нумерация идёт с нуля)

Измените слово "chest" на название body-группы, состояние которой вам необходимо поменять.

По стандарту, класс CBaseAnimating поддерживает 4,294,967,296 комбинаций (32 бита), а классCBaseViewModel - 256 (8 битов). Вы можете увеличить этот лимит, изменив SendProp для m_nBody.

Чтобы посчитать, сколько комбинаций вам нужно, перемножьте друг на друга размер всех ваших body-групп. Для примера из этой страницы будет 3 * 4 = 12, но добавив, например, две дополнительных группы того же размера, кол-во комбинаций поднимется до 144.