Ru/$bodygroup: Difference between revisions
mNo edit summary |
(Completely re-writed the whole page, translating the original english one with some minor edits and better translation) |
||
Line 2: | Line 2: | ||
|en=$bodygroup | |en=$bodygroup | ||
}} | }} | ||
'''$bodygroup''' это [[QC command]] | '''$bodygroup''' - это [[QC command:ru|QC-команда]], которая создаёт группу мешей, которые могут быть включены, отключены или же выглядеть полностью по-другому. Серверный код может изменять их состояние. | ||
{{note| | {{note|Body-группы'''не могут''' изменять [[skeleton|скелет]] или [[collision model|модель коллизии]].}} | ||
== Пример == | == Пример== | ||
Эта body-группа позволяет иметь на оружии несколько прицелов (например мушку, лазерный прицел или же никаких прицелов вообще): | |||
<source lang=php> | <source lang=php> | ||
$bodygroup sights | $bodygroup sights | ||
{ | { | ||
studio | studio ironsights | ||
studio | studio laser_dot | ||
blank | |||
} | } | ||
</source> | </source> | ||
Эта | Эта body-группа обозначает целый регион модели, который использует несколько костей: | ||
<source lang=php> | <source lang=php> | ||
$bodygroup chest | $bodygroup chest | ||
{ | { | ||
studio | studio chest_with_no_armor | ||
studio | studio chest_with_light_armor | ||
studio | studio chest_with_heavy_armor | ||
studio | studio chest_with_super_armor | ||
} | } | ||
</source> | </source> | ||
{{note|Так как полигоны одних body-групп не используют те же вертексы, что и полигоны других body-group, они не должны иметь швов между собой.}} | |||
== Bodyгруппы в LOD мешах == | |||
'''Крайне рекомендуется''' использование [[LOD|LOD'ов]] - ''особенно для геометрии с высоким количеством полигонов''. LOD'ы могут быть использованы с помощью [[QC command:ru|QC-команды]] <code>[[$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> | <source lang=cpp> | ||
static int | static int bodygroup = FindBodygroupByName("chest"); // используйте эту строку лишь один раз | ||
SetBodygroup( | SetBodygroup( bodygroup, 1 ); // установить body-группу "chest" на второе значение (нумерация идёт с нуля) | ||
</source> | </source> | ||
Измените слово "chest" на название body-группы, состояние которой вам необходимо поменять. | |||
По стандарту, класс <code>[[CBaseAnimating]]</code> поддерживает 4,294,967,296 комбинаций (32 бита), а класс<code>[[CBaseViewModel]]</code> - 256 (8 битов). Вы можете увеличить этот лимит, изменив [[SendProp]] для <code>m_nBody</code>. | |||
Чтобы посчитать, сколько комбинаций вам нужно, перемножьте друг на друга размер всех ваших body-групп. Для примера из этой страницы будет 3 * 4 = 12, но добавив, например, две дополнительных группы того же размера, кол-во комбинаций поднимется до 144. | |||
[[ | [[Категория:QC Command:ru|b]] |
Revision as of 09:35, 27 September 2019
Template:Otherlang2 $bodygroup - это QC-команда, которая создаёт группу мешей, которые могут быть включены, отключены или же выглядеть полностью по-другому. Серверный код может изменять их состояние.

Пример
Эта 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
}

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.