Ru/Detail props: Difference between revisions
No edit summary |
No edit summary |
||
Line 245: | Line 245: | ||
{{bug|Любая пользовательская текстура растительности должна быть краткой дефолтной <code>detail\detailsprites</code> Иначе будет искривление рендера ! [https://developer.valvesoftware.com/wiki/Detail_props/Aspect_ratio_fix исправить это можно здесь]}} | {{bug|Любая пользовательская текстура растительности должна быть краткой дефолтной <code>detail\detailsprites</code> Иначе будет искривление рендера ! [https://developer.valvesoftware.com/wiki/Detail_props/Aspect_ratio_fix исправить это можно здесь]}} | ||
; <code>spritesize <normal|U, V> <[[float]]|W, H></code> | ; <code>spritesize <normal|U, V> <[[float]]|W, H></code> | ||
: | : Размеры спрайта в самой игре, (U/V) - смещение.относительно точки опоры и (W/H) | ||
; <code>spriterandomscale <normal></code> | ; <code>spriterandomscale <normal></code> | ||
: | : Ширина и высота спрайта. (U/V лучше не трогать) | ||
Размер спрайта не должен быть указан как 1 и 1, его не будет в игре. Оптимальный размер от 10 до 20. | |||
; <code>detailOrientation <int></code> | ; <code>detailOrientation <int></code> | ||
: | : Будет ли спрайт поворачиваться своим “лицом” к камере игрока: | ||
:* 0: | :* 0: Не вращается. | ||
:* 1: | :* 1: спрайт всегда смотрит в камеру игрока, даже когда игрок стоит над спратом, тот словно наклоняется. | ||
:* 2: | :* 2: Спрайт всегда смотрит в камеру игрока, однако вращается только вокруг Z оси, по кругу. | ||
==== | ==== Шейпы-сложные формы ==== | ||
[[File:Detail shape tri.jpg|thumb|200px|<code>sprite_shape tri</code>]] | [[File:Detail shape tri.jpg|thumb|200px|<code>sprite_shape tri</code>]] |
Revision as of 22:26, 2 February 2020


Detail props это дешевые, бесплотные объекты, которые случайным образом появляются на поверхности специальных материалов. Они исчезают из вида на определенном расстоянии от игрока (по умолчанию это 1200 юнитов). Это значит, что они годятся только для небольших объектов, таких как трава или прочая мелкая растительность.
Detail props бывает двух типов:
- Спрайты
- двух полигональный плоский квадрат, использующий параметр $translucent внутри материала. Объект может быть настроен так, чтобы он всегда “смотрел” в сторону камеры игрока, покачивался на ветру (что уже будет ресурсоемко) и прогибался под шагами идущего. Спрайт не может проходить сквозь водную поверхность.
- Модели
- 3д модели следует использовать очень редко, если вообще использовать. Каждая модель расходует видео ресурсы DirectX, вне зависимости от того, сколько у модели полигонов, нагрузка всегда будет выше приемлемой.
Использование
Типы покрытия detail prop ("detail types") определяются скриптом файла .vbsp (Формат ANSI), и описаны в материалах с помощью параметра %detailtype. Затем VBSP рандомно генерирует detail props на поверхностях, покрытых этим материалом, при компиляции карты.
Detail props могут быть размещены в ручную в паре с prop_detail и prop_detail_sprite энтити, но это редкая практика.
Базовые типы detail
Эти типы detail доступны Source SDK Base:
Эти типы detail присутствуют, но доступны только на 3D моделях:
- swamp_land_001
- swamp_water_001
- grassland1
- grassland2
- grassland3
- rocks3
- test
- coast_pebbles
- street_junk
Новые типы detail
Здесь отображен пользовательский VBSP файл. Требуется поддержка detail shape. используется эта текстура с этим шаблоном.
detail
{
forest_floor_01
{
density 1600
GrassTex
{
alpha 0
RoseFlower
{
sprite "0 0 83 128 512"
spritesize "0.5 0.05 7 13"
spriterandomscale .3
amount 0.02
detailorientation 2
sway 0.2
upright 1
maxangle 70
}
FernShrub
{
sprite "120 0 136 256 512"
spritesize "0.5 0.05 17 28"
spriterandomscale .15
amount 0.03
sprite_shape tri
shape_size 0
sway 0.3
upright 1
maxangle 50
}
GrassTuft
{
sprite "0 199 120 57 512"
spritesize "0.5 0 20 10"
spriterandomscale .2
amount .6
sprite_shape cross
sway .1
maxangle 95
}
PinkFlower
{
sprite "83 0 38 128 512"
spritesize "0.5 0 6 18"
spriterandomscale .1
amount 0.02
detailorientation 2
sway 0.3
upright 1
maxangle 70
}
LushShrub
{
sprite "256 128 172 128 512"
spritesize "0.5 0 32 21"
spriterandomscale .3
amount 0.01
sprite_shape tri
shape_size 0.1
sway 0.1
maxangle 40
}
}
LeavesTex
{
alpha 1
DriedGrass
{
sprite "256 0 92 120 512"
spritesize "0.5 0 13 17"
spriterandomscale .15
amount .3
sprite_shape cross
sway .3
maxangle 95
}
GrassTuft
{
sprite "0 199 120 57 512"
spritesize "0.5 0 20 10"
spriterandomscale .2
amount .6
sprite_shape cross
sway .1
maxangle 95
}
RoseFlower
{
sprite "0 0 83 128 512"
spritesize "0.5 0.05 7 13"
spriterandomscale .3
amount 0.02
detailorientation 2
sway 0.2
upright 1
maxangle 70
}
}
}
}
Простой Шаблон:
detail
{
<Detail type>
{
density <float>
<Group>
{
alpha <normal>
<Prop>
{
<settings>
}
}
}
}
Обозначение команд::
- Detail type
- Это имя дитейла указанного в VMT материала
%detailtype
.density <float>
- Плотность генерации detail пропов на поверхности материала. Template:Совет
- Group
- Даже если вам требуется определить всего один detail prop, вам все равно необходимо создать группу (group). Имя вряд ли где-то используется, оно нужно просто для справки.
Примечание: поверхности Non-displacement используют только первую группу detail!
alpha <normal>
- Значение сдвига alpha, при котором генерируется данная группа detail проп. Каждый раз при генерации detail проп VBSP выбирает группу с ближайшим значением alpha к текущему в данной локации (месте). Если alpha не определена, все группы появятся во всех областях.
- Prop
- Определяет detail prop. И хотя у него есть уникальное имя, нет возможности ссылаться на существующий проп позже в .VBSP: он должен быть переопределен всякий раз, когда он нужен. И все же использовать понятные имена это неплохая идея.
Prop настройки
amount <normal>
- Доля от общего числа всех моделей (спрайтов) относительно указанной плотности из переменной
density
Обычно 0.1. upright <bool>
- Если указано (не важно какое значение) модель всегда будет “смотреть” вверх. Если переменной нет, модель будет ориентироваться относительно материала поверхности на которой она должна генерироваться. (расти из земли вертикально)
minangle <float>
maxangle <float>
- Регулирует генерацию на крутых поверхностях. Стандартное значение для обоих 180 градусов (без ограничений). . Template:Совет
Спрайты
sprite <int|X, Y, W, H, VTF width>
- Это координаты на общей VTF текстуре, откуда берется рендер каждой отдельной травинки.
- X/Y это горизонтальная и вертикальная координаты.
- W/H это размеры (ширина, высота) в текстелях

detail\detailsprites
Иначе будет искривление рендера ! исправить это можно здесь [нужно проверить в ?]spritesize <normal|U, V> <float|W, H>
- Размеры спрайта в самой игре, (U/V) - смещение.относительно точки опоры и (W/H)
spriterandomscale <normal>
- Ширина и высота спрайта. (U/V лучше не трогать)
Размер спрайта не должен быть указан как 1 и 1, его не будет в игре. Оптимальный размер от 10 до 20.
detailOrientation <int>
- Будет ли спрайт поворачиваться своим “лицом” к камере игрока:
- 0: Не вращается.
- 1: спрайт всегда смотрит в камеру игрока, даже когда игрок стоит над спратом, тот словно наклоняется.
- 2: Спрайт всегда смотрит в камеру игрока, однако вращается только вокруг Z оси, по кругу.
Шейпы-сложные формы
Shapes are props where two or three sprites are arranged in a 3D shape. They can be made to sway as if in a breeze, and can bend away from intersecting players.

Detail shapes are only available in some games, for example Day of Defeat: Source, Counter-Strike: Source, Counter-Strike: Global Offensive, Garry's Mod and the SDK source code. If you try to create shapes in a game without support for them, the detail props will not be created at all.
sprite_shape <choices>
- Creates a set of sprites at different angles, allowing for a pseudo-3D effect.
tri
- Three sprites sitting equidistant from each other in a triangle formation.
cross
- Two sprites which cross over one another in the middle.
sway <normal>
- Percentage of
cl_detail_max_sway
that the prop bends to. Template:Совет shape_angle <float>
- sprite_shape tri only. Number of degrees outward at which to angle the individual sprites. Unfortunately it is not possible to angle inward, for some reason! Useful range is 0-45.
shape_size <normal>
- sprite_shape tri only. Percentage of the sprites' width to put between them and the centre of the triangle. 0 means that the sprites cross at the prop's origin.
There are several console commands which affect shapes:
cl_detail_avoid_force
- Force with which to avoid players.
cl_detail_avoid_radius
- Radius around sprite to avoid players.
cl_detail_avoid_recover_speed
- How fast to recover position after avoiding players.
cl_detail_max_sway
- Amplitude of the detail prop sway.
If you can't find these, then there is no detail shape support.
Models
Remember that models have a performance overhead that sprites do not. Use them only when needed!
Good candidates for models are contiguous objects that need to spread out along the ground, like small rocks, fallen branches and ground-covering plants including ivy and brambles. Things that stand upright are better off as sprites or shapes.
model <string>
- A model to use; must be $staticprop and
UnlitGeneric
(ALL skins). Include\models
and.mdl
in the path.
New detail materials

There are a few hoops to jump through when creating new detail sprite materials:
- Leave at least a one-pixel gap between subregions, or you may find parts of one sprite bleeding over into the next.
- The material must be
UnlitGeneric
. You'll probably want to use the $vertexcolor, $receiveflashlight, $nocull and $translucent parameters. - Unless you are overwriting
detail\detailsprites.vmt
, mappers must remember to select the correct material in Map > Map Properties....

detail\detailsprites
. You can fix this if you are shipping your own binaries. [нужно проверить в ?]Blocking detail props
If you do not want to have detail props being generated in a specific area, use func_detail_blocker (Only available in Portal 2, Alien Swarm, Left 4 Dead 2, Counter-Strike: Global Offensive, and Garry's Mod.)