Объекты - деревья библиотеки RuScenery

09 июля 2009 г.

В сценариях x-plane лес делают с помощью .for полигонов. Рисуется многоугольник, и внутри него территория случайным образом заполняется деревьями. Существует богатый выбор видов леса в самом x-plane. Добавили свои виды леса разработчики OpenScenery. Где-то лежит даже платный комплект деревьев.

Для создания лесов, перелесков (там где деревья расположены нерегулярным образом) работает это неплохо. В соответствии с описанием в файле .for, расположение, вид деревьев и высота произвольно варьируются.

Однако, эта случайность не работает или работает плохо там где деревья нужно расположить в строгом порядке. Это парки, аллеи, близкостоящие группы деревьев, отдельные деревья в ключевых точках. Тут метод полигонов пригоден слабо.

Для расстановки отдельных деревьев в RuScenery были сделаны специальные объекты. Для этих объектов — деревьев используется стандартная текстура из папки x-plane. Если бы формат obj понимал пробелы в пути к текстуре, можно было бы ссылаться прямо в папку «default scenery», но приходится эту текстуру копировать.

Каждый объект представлен в нескольких размерах. Высота дерева указывается двумя последними цифрами в названии файла.
Например:
poplar1-05.obj — пятиметровый тополь;
poplar1-07.obj — семиметровый тополь;
poplar1-10.obj — десятиметровый тополь (ну и так далее).

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

Для удобства разработчиков сценариев были созданы группы объектов.
Например. Существуют объекты тополя.
poplar1-05.obj;
poplar1-07.obj;
poplar1-10.obj;
poplar1-18.obj;
poplar1-22.obj.
Если выбирать такой объект, то будет поставлен тополь строго заданной высоты.

Существует объект-группа.
poplar.obj
Если выбирать её, то один из тополей будет выбран случайным образом.

Уже созданы такие группы по видам:
bush.obj — кусты;
spruce.obj — ели;
pine.obj — сосны;
thuya.obj — туи;
birch.obj — берёзы;
oak.obj — дубы;
poplar.obj — тополя;
cypress.obj — кипарисы;
palm.obj — пальмы;
tree.obj — прочие лиственные деревья.

Созданы такие группы как:
forest-w-eu.obj — смешанный лес (ели, сосны, берёзы, прочие лиственные деревья);
forest-city.obj — городские деревья (туи и тополя);
forest-s-eu.obj — лес южной европы (кипарисы, дубы, туи, тополя, прочие лиственные деревья);
forest-curort.obj — деревья курортных городов (кипарисы, пальмы, туи, тополя);
forest-conif.obj — хвойный лес (ели и сосны);
forest-green.obj — лиственный лес (берёзы, дубы, тополя, прочие лиственные деревья).

Эти группы реализованы с помощью описаний в файле library.txt Например описание группы «дубы»:
EXPORT_EXTEND ruscenery/forest/oak.obj forest/oak1-07.obj
EXPORT_EXTEND ruscenery/forest/oak.obj forest/oak1-09.obj
EXPORT_EXTEND ruscenery/forest/oak.obj forest/oak1-17.obj
В левой части выражения — название группы, а в правой — пути к реальным объектам.

Точно таким же образом можно набрать из существующих объектов свою собственную группу. Только файл library.txt должен быть размещен в папке со сценарием.