Difference between revisions of "$bodygroup:ru"

From Valve Developer Community
Jump to: navigation, search
m
m (Added the page to the categories 'QC Command:ru' and 'Russian')
 
(2 intermediate revisions by one other user not shown)
Line 2: Line 2:
 
|en=$bodygroup
 
|en=$bodygroup
 
}}
 
}}
'''$bodygroup''' это [[QC command]] позволяющая создавать ячейки/подгруппы для изменения внешнего вида модели.
+
'''$bodygroup''' - это [[QC command:ru|QC-команда]], которая создаёт группу мешей, которые могут быть включены, отключены или же выглядеть полностью по-другому. Серверный код может изменять их состояние.
  
{{note|Боди-группы не могут изменять [[skeleton]] или [[collision model]].}}
+
{{note|Body-группы '''не могут''' изменять [[skeleton|скелет]] или [[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 мешах ==
 +
 
 +
'''Крайне рекомендуется''' использование [[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
 +
}
  
{{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>[[CBaseAnimating]]</code> поддерживает 4,294,967,296 комбинаций (32 бита), а класс<code>[[CBaseViewModel]]</code> - 256 (8 битов). Вы можете увеличить этот лимит, изменив [[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]]
+
[[Category:QC Command:ru|b]]
 +
[[Category:Russian]]

Latest revision as of 10:29, 24 May 2020

English

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

Note: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:Так как полигоны одних 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.