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

$texturegroup

From Valve Developer Community
< Ru
Jump to: navigation, search
English (en)Français (fr)Русский (ru)Translate (Translate)

$texturegroup - это QC команда(en), доступно для всех игр на движке Source Source.

Icon-broom.png
Эта статья или раздел требует доработки, чтобы соответствовать более высокому стандарту качества потому что:
перевод ужасный. Во первых переведены команды, "name"... и т.д. которые на самом деле не должны быть переведены (так как это исходные команды и они на английском. Имеется тавтология, некоторые предложения просто смысл не имеют
Для получения помощи, обратитесь к руководству по редактированию на VDC и процессу очистки на Wikipedia. Также не забудьте проверить наличие заметок, оставленных отмечающим на странице обсуждения этой статьи.
Она позволяет модели иметь несколько скинов(en), состоящих из одного или нескольких материалов.

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

Plasticcrate01.jpg

Синтаксис

$texturegroup <имя>
{
	{ "<стандартный материал>" } //Скин 0 (стандартный)
	{ "<новый материал>"       } //Скин 1
 	[...]
}
имя
Имя группы текстур.
Icon-Bug.pngБаг:StudioMDL(en) требует имя, но оно никак не используется. Обычно группы текстур называют skinfamilies.  [todo tested in?]
стандартный материал
Название материала(en) (VMT(en)) на референс модели.
новый материал
Название материала(en) (VMT(en)), который будет заменять материал выше.


У моделей с несколькими материалами $texturegroup принимает несколько материалов за строку. При таком использовании первый скин будет указывать заменяющиеся материалы. Если какой-либо материал не указан, то его замена не произойдет, даже если его указать в следующих строках.

$texturegroup <имя>
{
	{ "<стандартный материал 1>" "<стандартный материал 2>" [...] } //Скин 0 (стандартный)
	{ "<новый материал 1>"       "<новый материал 2>"       [...] } //Скин 1
	[...]
}

StudioMDL(en) позволяет использовать до 32 уникальных материалов на модели. Этот лимит встроен в компилятор, но его можно увеличить используя пропатченный StudioMDL(en).

Tip.pngСовет:Если нужно заменить основную текстуру в скине, можно скопировать изначальный материал и изменить его название и его параметр $basetexture
Icon-Bug.pngБаг:Вы должны добавить пробелы между кривыми скобками {} и названием материала. {skin_0} работать не будет, в отличие от { skin_0 }.  [todo tested in?]

Примеры

$texturegroup rockcliff_cluster01
{
	{ rockcliff02a }
	{ rockcliff02b }
	{ rockcliff02c }
}
$cdmaterials models\bots\sniper models\effects
$texturegroup skinfamilies
{
	{ sniper_bot_red  sniper_bot_head_red  }
	{ sniper_bot_blue sniper_bot_head_blue }

	{ invulnfx_red    invulnfx_red         }
	{ invulnfx_blue   invulnfx_blue        }
}
$cdmaterials models\player\hvyweapon
$texturegroup skinfamilies
{
	{ heavy_head_red        eyeball_r      eyeball_l      hvyweapon_red               hvyweapon_red_sheen               }
	{ heavy_head_blue       eyeball_r      eyeball_l      hvyweapon_blue              hvyweapon_blue_sheen              }

	{ heavy_head_red_invun  eyeball_invun  eyeball_invun  hvyweapon_red_invun         hvyweapon_red_invun               }
	{ heavy_head_blue_invun eyeball_invun  eyeball_invun  hvyweapon_blue_invun        hvyweapon_blue_invun              }

	{ heavy_head_zombie     eyeball_zombie eyeball_zombie heavy_red_zombie_alphatest  heavy_red_zombie_alphatest_sheen  }
	{ heavy_head_zombie     eyeball_zombie eyeball_zombie heavy_blue_zombie_alphatest heavy_blue_zombie_alphatest_sheen }

	{ heavy_head_red_invun  eyeball_invun  eyeball_invun  hvyweapon_red_zombie_invun  hvyweapon_red_zombie_invun        }
	{ heavy_head_blue_invun eyeball_invun  eyeball_invun  hvyweapon_blue_zombie_invun hvyweapon_blue_zombie_invun       }
}

Использование нескольких текстурных групп

Использование более, чем одной $texturegroup разрешено, но не рекомендуется. Поведение нескольких групп текстур как минимум неинтуитивно.

Icon-Bug.pngБаг:Количество скинов определяется только первой группой текстур. Это значит, что для того, чтобы получить доступ к другим текстурным группам количество скинов должно превышать 31 (32 в HLMV(en)).  [todo tested in?]
Icon-Bug.pngБаг:$texturegroup не воспринимаются отдельно друг от друга, группы текстур разделяются на части по 32 скина. Не более чем 32 скина могут быть использованы на текстурной группе кроме первой.  [todo tested in?]
Icon-Bug.pngБаг:Каждый материал, изменяемый группой текстур, должен быть указан в первом скине первой группы текстур. Получается, все группы текстур должны иметь одно количество материалов в их первом скине, чтобы материалы не перемешались.  [todo tested in?]

Из-за всех этих проблем несмотря на то, что указано в синтаксисе, использование нескольких $texturegroup команд на самом деле не позволит несколько состояний скина, в отличии от $bodygroup.

Если модель требует несколько состояний текстур, то они должны быть сделаны настройкой скинов в подобной манере:

$texturegroup skinfamilies
{
	{ <состояние 1> <подсостояние 1> }
	{ <состояние 1> <подсостояние 2> }
	{ <состояние 2> <подсостояние 1> }
	{ <состояние 2> <подсостояние 2> }
	[...]
}

Замена материала материалом с таким же именем в другой папке

.. выводит путь поиска материала на директорию выше, тем самым позволяя вам использовать материалы из другой папки, как $popd.
В таком случае добавление новых строк $cdmaterials не требуется.
Если Вы просто хотите использовать другой материал, не имеющий то же самое имя, Вы можете просто использовать ещё одну строку $cdmaterials.

Пример из Left 4 Dead 2 Left 4 Dead 2:

$cdmaterials "models\c2m5_helicopter_extraction\"
$texturegroup "skinfamilies"
{
	{ "helicopter_news_adj"                "helicopter_news2"                } //helicopter_news2 из models\c2m5_helicopter_extraction\
	{ "..\hybridPhysx\helicopter_news_adj" "..\hybridPhysx\helicopter_news2" } //helicopter_news2 из models/hybridPhysx
	{ "..\hybridPhysx\helicopter_army"     "..\hybridPhysx\helicopter_army2" } //Можно было просто использовать ещё одну строку $cdmaterials и использовать "helicopter_army2"
}

Больше информации

  • Скины также могут изменять $bumpmap, $surfaceprop и другие параметры VMT(en). Также для оптимизации можно использовать $lod и LOD модели(en).
  • Все альтернативные текстуры должны иметь ту же развёртку(en).
  • Хоть StudioMDL(en) и имеет встроенный лимит в 32 уникальных материала, он технически поддерживает до 1024 скинов до тех пор, пока они состоят из 32 материалов.
  • Team Fortress 2 Почти каждая покрашенная под цвет команды модель имеет как минимум 2 скина. Обычно первый скин для команды RED, а второй скин для команды BLU.

See also