https://xray-engine.org/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B&feed=atom&hidebots=1&hideredirs=1&limit=50&offset=&namespace=0&username=&tagfilter=xrWiki - Новые страницы [ru]2024-03-28T09:23:23ZМатериал из xrWikiMediaWiki 1.27.7https://xray-engine.org/index.php?title=%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8FДеревья2024-02-10T18:33:28Z<p>RedPython: </p>
<hr />
<div>__NOTOC__<br />
== Геометрия ==<br />
[[Файл:xray-tree-geometry-01.PNG|thumb|320px|frame|Слева направо: видимая крона, видимый ствол, невидимый ствол, невидимая крона]]<br />
<br />
Любое дерево состоит из:<br />
* видимой геометрии<br />
* невидимой геометрии для просчёта коллизии<br />
<br />
Геометрия для коллижена ствола создаётся простым дублированием видимой геометрии.<br /><br />
Геометрия для коллижена кроны создаётся в виде максимально упрощённого меша, предназначение которого – отыгрывать звуки и партиклы при контакте с физическим объектом.<br />
<br />
Ствол дерева в 3д-редакторе [https://xray-engine.org/index.php?title=File:xray-tree-geometry-02.PNG утапливается ниже мирового центра], чтобы с запасом перекрывать все неровности ландшафта и наклоны объекта в редакторе уровней.<br />
<br />
Кустарник и камыш отличаются от дерева только отсутствием объекта ствола, в остальном всё то же самое.<br />
<br />
== Настройки материалов ==<br />
Для каждой части дерева - ствола, листьев, и невидимых частей - существуют особые настройки [[Материал|материалов]] со специальными шейдерами, которые реализуют реалистичное покачивание деревьев от несуществующего ветра.<br />
{| class="wikitable" style="color: black; background-color: white; width: 60%;"<br />
|-<br />
|style="background-color: #cdcdcd;"|'''Engine Shader'''<br />
|style="background-color: #cdcdcd;"|'''Compiler Shader'''<br />
|style="background-color: #cdcdcd;"|'''Game Material'''<br />
|style="background-color: #cdcdcd;"|'''Описание'''<br />
|-<br />
|flora/trunk_wave<br />
|flora/trunk_wave<br />
|materials/tree_trunk<br />
|Ствол (кора)<br />
|-<br />
|flora/leaf_wave<br />
|flora/leaf<br />
|materials/bush<br />
|Крона (ветки с листьями)<br />
|-<br />
|def_shaders/def_trans<br />
|flora/flora_collision<br />
|materials/tree_trunk<br />
|Невидимый дубликат ствола<br />
|-<br />
|def_shaders/def_trans<br />
|flora/flora_collision<br />
|materials/bush<br />
|Упрощённый меш кроны<br />
|}<br />
Видимая крона должна иметь флаг двусторонней поверхности (2-sided). Невидимой кроне тоже можно добавить такой флаг, но это, как правило, излишне.<br />
<br />
== Улучшенные возможности ==<br />
Для ускорения создания и чистки [[Сетка навигации ИИ (AI Map) | ИИ-сетки]] в проекте [[Б.О.Р.Ж.Ч.]] была реализована гениальная идея: создавать вокруг ствола дерева обечайку, в которую бы утыкались ноды в процессе генерации. Это нужно для того, чтобы вокруг ствола сохранялась буферная зона без ИИ-нод. Обечайка обладает специальным шейдером, который указывает [[xrLC | компилятору]] игнорировать данную поверхность. В результате такая геометрия работает в редакторе уровней, но не попадает в игру.<br />
{| class="wikitable" style="color: black; background-color: white; width: 60%;"<br />
|-<br />
|style="background-color: #cdcdcd;"|'''Engine Shader'''<br />
|style="background-color: #cdcdcd;"|'''Compiler Shader'''<br />
|style="background-color: #cdcdcd;"|'''Game Material'''<br />
|style="background-color: #cdcdcd;"|'''Описание'''<br />
|-<br />
|def_shaders/def_trans<br />
|special/ai_obstacle<br />
|default<br />
|Обечайка вокруг ствола<br />
|}<br />
Размер обечайки выбирается таким, чтобы она перекрывала диаметр ствола плюс по одной ноде с каждой стороны, а по высоте была больше параметра '''Can Up''' в настройках кисти генератора ИИ-сетки.<br />
Для работы опции требуется [https://forum.xray-engine.org/index.php/topic,252 борщовский СДК и компиляторы].<br />
<br />
== Настройки объекта ==<br />
Объекту дерева нужно задать специальный [[Типы геометрии в X-Ray| тип геометрии]] для инстансирования, так называемый '''Multiple Usage'''. Он не указывается при экспорте геометрии из 3д-редактора, его нужно задать вручную в библиотеке объектов [[Level Editor | редактора уровней]]. Для этого в меню '''Objects -> Object Library''' выбрать нужный объект, нажать кнопочку '''Properties''' и на вкладочке '''Main Options''' задать '''Object Type''' как '''Multiple Usage'''.<br /><br />
Если забыть это сделать, то при сборке уровня LE выдаст ошибку о невозможности применять шейдеры флоры на обычном статичном объекте.<br />
<syntaxhighlight lang="text">Object 'mu\flora\trees\tree_sosna_1_01': engine shader 'flora\trunk_wave' not compatible with static objects<br />
surface: 'trees_bark_sosna_01_SG'</syntaxhighlight><br />
Обязательно нужно создать специальную текстуру-билборд в том же окне библиотеки объектов. Для этого следует включить галку '''Preview Object''' и нажать кнопку '''Make LOD'''. Создастся текстура '''''gamedata\textures\lod\имя_текстуры_объекта.dds'''''. Подобные текстуры при сборке уровня в LE склеиваются в один большой атлас, который сохраняется в файл '''''X:\gamedata\levels\имя_уровня\level_lods.dds'''''<br />
<br />
== Расстановка деревьев ==<br />
Как и любой иной статичный объект, деревья можно расставлять вручную поодиночке, вручную случайной выборкой из списка, и даже массово полуавтоматически засаживать пространства (подробнее см. [[Статичные объекты (Objects)]]).<br />
<br />
[[Категория:X-Ray SDK]]</div>RedPythonhttps://xray-engine.org/index.php?title=%D0%A0%D0%B5%D0%B6%D0%B8%D0%BC%D1%8B_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BA%D0%B0Режимы запуска движка2024-02-03T18:29:38Z<p>RedPython: </p>
<hr />
<div>При разработке мода движок удобнее запускать из нескольких заранее подготовленных [[Пакетный файл|командных файлов]]. Ниже приведены примеры типовых режимов запуска.<br />
__NOTOC__<br />
== Стандартный режим==<br />
<syntaxhighlight lang="dos">start bin\xrEngine.exe</syntaxhighlight><br />
Движок запускается в главное меню.<br />
<br />
==Запуск уровня без симуляции==<br />
<syntaxhighlight lang="dos">start bin\xrEngine.exe -start server(escape/single)</syntaxhighlight><br />
Здесь escape – это имя карты с минимально необходимым спауном.<br />
<br />
==Запуск уровня с симуляцией==<br />
<syntaxhighlight lang="dos">start bin\xrEngine.exe -start server(escape/single/alife)</syntaxhighlight><br />
Здесь escape – это имя [[all.spawn|спаун-файла]], собранного для одиночной игры.<br />
<br />
==Запуск по сети==<br />
<syntaxhighlight lang="dos">start bin\xrEngine.exe -start localserver(имя_уровня/режим_игры) client(localhost/name=<имя_игрока>)</syntaxhighlight><br />
'''режим_игры''' может быть '''deathmatch''', '''teamdeathmatch''', '''artefacthunt'''.<br /><br />
Подробнее о настройке сервера для сетевой игры см. [[Настройка сервера S.T.A.L.K.E.R. Зов Припяти]]<br />
<br />
[[Категория:Движок]]</div>RedPython