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

Ru/$bodygroup: Difference between revisions

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


{{note|Боди0группы не могут изменять [[skeleton]] или [[collision model]].}}
{{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
}


{{note|Since polygons never share vertices in Source models, there need not be seams between properly-made components.}}
$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>
<source lang=cpp>
static int BodyGroup_Sights = FindBodygroupByName("sights"); // calculate this value once
static int bodygroup = FindBodygroupByName("chest"); // используйте эту строку лишь один раз
SetBodygroup( BodyGroup_Sights , 1 ); // laser dot
SetBodygroup( bodygroup, 1 ); // установить body-группу "chest" на второе значение (нумерация идёт с нуля)
</source>
</source>
Измените слово "chest" на название body-группы, состояние которой вам необходимо поменять.


By default, <code>[[CBaseAnimating]]</code> supports 4,294,967,296 combinations (32 bits), and <code>[[CBaseViewModel]]</code> supports 256 (8 bits). You can raise either of these by editing the relevant [[SendProp]] for <code>m_nBody</code>.
По стандарту, класс <code>{{L|CBaseAnimating}}</code> поддерживает 4,294,967,296 комбинаций (32 бита), а класс<code>{{L|CBaseViewModel}}</code> - 256 (8 битов). Вы можете увеличить этот лимит, изменив {{L|SendProp}} для <code>m_nBody</code>.


To calculate how many combinations you need, multiply the size of all your bodygroups together. The examples on this page total 3 * 4 = 12...but add two more groups the same size and you're up at 144. The figure grows exponentially.
Чтобы посчитать, сколько комбинаций вам нужно, перемножьте друг на друга размер всех ваших body-групп. Для примера из этой страницы будет 3 * 4 = 12, но добавив, например, две дополнительных группы того же размера, кол-во комбинаций поднимется до 144.


[[Category:QC Commands]]
{{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.