Эта статья документации для всего, что использует платформу Source. Нажмите для получения дополнительной информации.

Ru/$bodygroup: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (Multipage removal)
 
(13 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar}}
|en=$bodygroup
{{this is a|QC command|name=$bodygroup}}
}}
это которая создаёт группу мешей, которые могут быть включены, отключены или же выглядеть полностью по-другому. Серверный код может изменять их состояние.
См. [[Body Groups]].


== Пример ==
{{note|Body-группы '''не могут''' изменять {{L|skeleton|скелет}} или {{L|collision model|модель коллизии}}.}}
 
== Пример==
 
Эта body-группа позволяет иметь на оружии несколько прицелов (например мушку, лазерный прицел или же никаких прицелов вообще):


<source lang=php>
<source lang=php>
$bodygroup sights
$bodygroup sights
{
{
studio "ironsights.smd"
studio ironsights
studio "laser_dot.smd"
studio laser_dot
<...>
blank
}
}
</source>
</source>


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


<source lang=php>
<source lang=php>
$bodygroup chest
$bodygroup chest
{
{
studio "chest_with_no_armor.smd"
studio chest_with_no_armor
studio "chest_with_light_armor.smd"
studio chest_with_light_armor
studio "chest_with_heavy_armor.smd"
studio chest_with_heavy_armor
studio "chest_with_super_armor.smd"
studio chest_with_super_armor
}
}
</source>
</source>


Эта боди-группа позволяет сменять вид брони на теле игрока.
{{note|Так как полигоны  одних body-групп не используют те же вертексы, что и полигоны других body-group, они не должны иметь швов между собой.}}
 
== Bodyгруппы в LOD мешах ==
 
'''Крайне рекомендуется''' использование {{L|LOD|LOD'ов}} - ''особенно для геометрии с высоким количеством полигонов''. LOD'ы могут быть использованы с помощью {{LCategory|QC Commands|QC-команды}} <code>{{L|$lod}}</code>:
 
<source lang=php>
$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
}
</source>
 
== Программирование ==
 
Чтобы изменить состояние body-группы:
 
<source lang=cpp>
static int bodygroup = FindBodygroupByName("chest"); // используйте эту строку лишь один раз
SetBodygroup( bodygroup, 1 ); // установить body-группу "chest" на второе значение (нумерация идёт с нуля)
</source>
Измените слово "chest" на название body-группы, состояние которой вам необходимо поменять.
 
По стандарту, класс <code>{{L|CBaseAnimating}}</code> поддерживает 4,294,967,296 комбинаций (32 бита), а класс<code>{{L|CBaseViewModel}}</code> - 256 (8 битов). Вы можете увеличить этот лимит, изменив {{L|SendProp}} для <code>m_nBody</code>.
 
Чтобы посчитать, сколько комбинаций вам нужно, перемножьте друг на друга размер всех ваших body-групп. Для примера из этой страницы будет 3 * 4 = 12, но добавив, например, две дополнительных группы того же размера, кол-во комбинаций поднимется до 144.
 
{{ACategory|QC Commands|bodygroup}}

Latest revision as of 03:06, 12 July 2024

English (en)Русский (ru)Translate (Translate)

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

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

Пример

Эта 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'ов(en) - особенно для геометрии с высоким количеством полигонов. LOD'ы могут быть использованы с помощью QC-команды(en) $lod(en):

$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(en) поддерживает 4,294,967,296 комбинаций (32 бита), а классCBaseViewModel(en) - 256 (8 битов). Вы можете увеличить этот лимит, изменив SendProp(en) для m_nBody.

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