Nizkovoltnik 407 Posted January 25, 2013 (edited) Автоген – это очень простоПосле того, как в одном из постов в теме «Геленджик для десятки» я упомянул о возможности создавать целые города одним кликом мыши, ко мне стали приходить вопросы, а как, собственно, я это делаю? Самое удивительное то, что вопросы задают даже те люди, которые являются признанными специалистами в вопросах сценостроительства.Все мы знаем и любим программу ModelConverterX за авторством Арно Джеретсена (впрочем, знакомый голландец утверждает, что, таки Гэрритсена), но редко кто уделял внимание утилите ScenProс, находящейся в его же девелоперском пакете. Возможно, причиной тому являлся недружелюбный интерфейс программы, точнее, его отсутствие в привычном виде: она работала из командной строки, была 32-битной, и очень любила глючить и зависать. Но со времен первого релиза утекло много воды, утилитка похорошела, приобрела некий графический интерфейс, идеологически правильную 64-разрядность, и, конечно же функционал, который продолжает расширяться.Что делает эта программа? Считав данные из карт OpenStreetMap, которые мы ей подсунем, она автоматически расставит деревья нужных нам пород в нужных местах, построит дома там, где они должны находиться, придав им реальные размеры и заданный диапазон «этажности», затекстурит их дефолтными или кастомными текстурами, расставит вдоль улиц фонари и выплюнет пачку agn-файлов, которые вам нужно будет поместить в папку Texture своего сценария.Что нам понадобится? Прежде всего, сами карты. ScenProc научился работать со многими их разновидностями, но в данном мануале я буду использовать формат векторных шейпов *.shp. Я к нему привык еще с первых версий, когда это был единственный поддерживаемый утилитой формат, и синтаксис моего скрипта будет использовать функции и типы данных этих карт.Отправляемся на сайт http://download.geof.../openstreetmap/ и ищем файл с нужной нам территорией. Обратите внимание на комментарии: нам нужен ESRI Shapefile, на этом сайте они представлены в виде ZIP-архивов. Скачиваем нужный и распаковываем его куда-нибудь в отдельную папку. Напомню, что имя папки и путь к ней не должны содержать кириллицу. Список альтернативных источников карт: http://download.geofabrik.de/ http://downloads.cloudmade.com/asia/northern_asia/russia#downloads_breadcrumbs http://beryllium.gis-lab.info/project/osmshp/ http://osmdata.thinkgeo.com/openstreetmap-data/ Посмотрим на полученный список файлов. Как правило, уважающая себя карта содержит слои с дорогами, растительностью, типами земельных участков (жилые, индустриальные, военные), домами, реками, и другими видами данных, но чтобы сделать хороший, годный автоген, достаточно только некоторых.В принципе, мы на данном этапе можем уже написать скрипт для ScenProс, и он даже сработает. Но карты, как правило, охватывают целые области и даже страны, а размеры вашего фототерра наверняка значительно меньше. Будем вырезать нужную нам область и корректировать слои под наши нужды.Какой программой это сделать? Сам Арно рекомендует бесплатную Quantum GIS, и я не могу с ним не согласиться: она поддерживает все мыслимые форматы карт, она мультиязычна (русский в комплекте) и имеет все необходимые функции для просмотра и редактирования. Интерфейс слегка аляповат и местами нелогичен, но он легко настраивается под себя, а список плагинов, расширяющих функционал, внушает. Скачать программу можно на сайте http://www.qgis.org/Установка не преподносит сюрпризов, разве что добавляет в конце кучу ярлыков на рабочий стол. Нам нужен только Quantum GIS Desktop (1.8.0). Запускаем.Я уже настроил интерфейс под себя, у вас он будет немного другой: больше панелей с кнопками, журнал событий внизу. Настройкой займемся на досуге, а сейчас загрузим первый наш слой, нажав кнопку «Добавить векторный слой» или нажав комбинацию Ctrl+Shift+V.В открывшемся окне нажмем «Обзор» и выберем нужный файл из папки, в которую мы распаковали архив. Загрузим по очереди buildings.shp, landuse.shp, natural.shp и roads.shp. Процесс загрузки будет происходить тем медленнее, чем больше объектов в слое. Вам может показаться, что программа зависла – просто подождите.Слева мы видим имена наших слоев, а в основном окне – карту. Используя зажатую левую кнопку мыши и колесико, отцентруем и увеличим нужный нам фрагмент, ориентируясь на координаты в строке статуса.Замечу, что чем обширнее и подробнее карта, тем медленнее она будет перерисовываться при каждом движении или зуме. Чтобы ускорить процесс, зайдите в меню Вектор и выполните команду Создать пространственный индекс.В открывшемся окне попросим программу проиндексировать все слои (Выбрать все – ОК). Вот теперь можно перемещаться по карте с большим комфортом.Далее нам необходимо сохранить нужный фрагмент карты. Для этого выделяем в левом окне первый слой в списке и нажимаем кнопку «Выбрать объект прямоугольником». В выпадающем меню этой кнопки есть несколько способов выделить требуемую область, я выбрал самый простой, вы же можете поэкспериментировать. Зажав левую кнопку мыши, растягиваем рамку выделения на нужной области. Объекты, попавшие в рамку, поменяют цвет. Щелкнем правой кнопкой мыши на названии выделенного слоя и выберем пункт «Сохранить выделение как...»Сохраняем. Настойчиво рекомендую сделать это в другую папку, чтобы не испортить оригинал, а имя файла, во избежание путаницы, можно оставить прежнее. Повторяем наши действия на всех слоях. Все, проект можно закрыть без сохранения, большие карты нам в ближайшее время не потребуются.Давайте снова загрузим наши слои, но уже из папки, куда мы только что сохранили ее фрагменты. Поскольку объектов стало меньше, слои откроются значительно быстрее, навигация также ускорится, а когда мы снова создадим пространственные индексы, работать станет совсем комфортно.Теперь настроим вид нашей карты. Щелкнем правой кнопкой мыши по первому слою в списке и выберем пункт Свойства.В открывшемся окне выберем вкладку Стиль и изменим вид отображения слоя на Уникальные значения.В выпадающем списке Поле выберем typeОсталось нажать кнопку «Классифицировать» и «ОК». Повторим все наши действия, классифицировав данные по типу для остальных слоев.Наша карта существенно преобразилась. Дороги перестали быть просто кучей линий, теперь мы видим, что они разделились по назначению: шоссе, жилые улицы, лесные просеки и т. д. В слое natural можно разглядеть леса и парки, а в слое landuse появились типы земельных участков.Самое время сохранить проект: нам еще не раз придется осматривать и корректировать карту. В следующий раз не нужно будет открывать слои поодиночке, достаточно загрузить проект. Edited July 23, 2013 by Nizkovoltnik 19 Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 25, 2013 (edited) Настала пора запустить ScenProс. Если до сих пор по каким-то причинам у вас ее нет, отправляемся за свежайшей версией утилиты: http://www.scenerydesign.org/development-releases/ ВАЖНО! Для корректной работы утилиты необходимо установить библиотеки Microsoft Access Database Engine 2010: http://www.microsoft...s.aspx?id=13255При этом есть один нюанс. Если у вас 64-битная версия Windows и при этом установлен 32-битный MS Office, библиотека откажется устанавливаться. В этом случае запустите инсталлятор с параметром /passive:AccessDatabaseEngine_X64.exe /passive Если возникнут трудности с таким нестандартным запуском, прошу сюда: http://www.avsim.su/forum/topic/129027-avtogen-eto-ochen-prosto/page-3#entry2346180При первом запуске укажем утилите пути к установленной игре и к SDK.Можно также установить параметр CheckPathAtStartup в «False», тогда это окно не будет появляться при каждом запуске утилиты. Закончив, закроем окно настроек.Главное окно программы представляет собой текстовый редактор с проверкой синтаксиса, автозаполнением и встроенной справочной системой. Именно в нем мы и будем писать скрипт. В нижней части мы увидим отчеты о работе утилиты и предупреждения об ошибках и опечатках.Прежде всего нажмите кнопку New и укажите путь и имя файла, в котором будет храниться содержимое скрипта.Все готово. Давайте поставим себе следующую задачу: вдоль всех более-менее значимых улиц мы расставим столбы освещения. Вдоль скоростных шоссе столбы будут стоять с меньшим интервалом, метров в 50 друг от друга, вдоль обычных улиц увеличим его до 60 метров. Зададим отступ 5-6 метров от центра дороги, нам не нужно, чтобы машины ездили сквозь них. И, наконец, заставим модели стоять так, чтобы их светильники были направлены в сторону центра дороги, независимо от того, как она будет петлять.В моем примере будет моделироваться город Геленджик, в котором хватает как высотных зданий, так и частных домов и коттеджей, поэтому я не буду искусственно ограничивать диапазон этажности. Но условимся, что все дома, занимающие большую площадь, будут иметь плоские крыши, а маленькие – обычные, двускатные.Все леса, окружающие город, будут лиственными, в парковых зонах мы посадим хвойные деревья, а вокруг домов пусть будет смешанный лес.Приступим. Для начала запишем команду на импорт всех четырех наших слоев:IMPORTSHP|E:\Modeling\OSM\URKG\natural.shp|*|NOREPROJIMPORTSHP|E:\Modeling\OSM\URKG\landuse.shp|*|NOREPROJIMPORTSHP|E:\Modeling\OSM\URKG\roads.shp|*|NOREPROJIMPORTSHP|E:\Modeling\OSM\URKG\buildings.shp|*|NOREPROJНемного разберем синтаксис. Команда IMPORTSHP дает понять утилите о том, что мы импортируем шейп-файлы, а не *.osm или *.kml и имеет она следующий формат:IMPORTSHP|filename|lonmin;lonmax;latmin;latmax|projПрактически любая команда имеет один или несколько параметров, разделяемых вертикальной чертой(|). В нашем случае первым таким параметром является имя файла и путь к нему, вторым – координаты прямоугольной области на слое, внутри которого будет производиться импорт данных, третьим – вид проекции.С первым параметром все ясно. Но почему вместо координат мы используем звездочку (*)? А потому, что мы уже обрезали карту, помните? Мы будем использовать всю ее область, а значит координаты не нужны. Но параметр является обязательным, и в данном случае он описывается фильтром «все без исключения». Кто помнит команды DOS, тот поймет, о чем я.Почему в третьем параметре мы используем NOREPROJ? Дело в том, что карты в формате ESRI Shapefile используют проекцию WGS 84, которая является «родной» для игрового движка симулятора, а значит нам не потребуется ее преобразование.Напишем следующую важную строку:SPLITGRID|AGN|buildings=*Снова рассмотрим синтаксис команды:SPLITGRID|size|filterКак известно, в нашем игровом мире все разделено на ячейки-LOD-ы. Не является исключением и сетка автогена. Стандартным размером одной такой ячейки является 0.0146484375 х 0.010986328125 градусов. Скажите честно: оно вам надо – запоминать эти цифры? Вот Арно и упростил нам задачу – пишем AGN и переходим ко второму параметру.А параметр этот очень интересен. Представьте, что какой-нибудь объект из какого-нибудь слоя карты попадет на границу двух ячеек. Что сделает программа? Правильно, разобьет объект на две части вдоль этой границы. Если это, к примеру, полигон леса, то ничего страшного: будет два соприкасающихся полигона. А если домик? Ведь на карте он также представлен в виде полигона, но разбивать его части нет никакого резона. Таким образом, окончательное действие этой команды таково: разбить все объекты на стандартные LOD-ы, но если на границе раздела попадет любой объект из файла buildings, то этот объект не разбивать.В следующих строках мы анонсируем порядок расстановки столбов освещения вдоль дорог. Сперва рассмотрим синтаксис:PLACEPOINTSALONGLINE|filter|distance|offset|attribute|value|headingAttrИмя команды означает буквально: расставить точки вдоль линии. Точки – наши столбы, линия – дорога. Distance – расстояние между столбами, offset – смещение относительно центральной линии дороги. Остальные параметры разберем подробнее.Существует несколько типов атрибутов, используемых утилитой. В общем случае их формула такова: ИмяАтрибута1=Значение1;ИмяАтрибута2=Значение2. Кроме оператора «равно»(=) допустимо применять «не равно» (!), «больше» (>) и «меньше» (<). Таким образом можно задать необходимые условия для того или иного параметра, применяя один или несколько (через точку с запятой) атрибутов.Двумя наиболее часто используемыми из них являются FTYPE и FROMFILE. Первый назначает объекту его тип: точка, линия или полигон (сокращение от Feature Type), второй определяет, из какого файла берется объект.Еще не запутались? Давайте перейдем к конкретному примеру и разберем его действие:PLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=residential|60|5|type|light|hdgМы дали команду расставить точки вдоль линии. Первый ее параметр читается так: берем файл roads.shp, находим в нем объекты типа residential и присваиваем им значение «линия». Откуда взялся тип residential? Помните, мы классифицировали по типу все наши слои? Те дороги, которые образуют улицы вокруг жилых массивов, принято обозначать на картах именно таким типом.В Quantum GIS есть кнопка «Определить объекты» (Ctrl+Shift+I). Сделайте активным слой roads, нажмите эту кнопку и потыкайте курсором по дорогам. В появляющемся окне обращайте внимание на значения type. Вот она, одна из наших «резиденциальных» дорог:Вернемся к ScenProс. С первым параметром мы разобрались, второй и третий не вызывают трудностей – мы говорим утилите, что наши столбы будут стоять на расстоянии 60 метров друг от друга и расти не из «двойной сплошной», а в 5 метрах в стороне, на обочине.Последние три параметра являются своего рода переменными, которые пригодятся нам в дальнейшем,поэтому вернемся к ним позже. А пока давайте расставим фонари не только в жилых районах, но и вдоль остальных значимых дорог:PLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=tertiary|50|5|type|light|hdgPLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=living_street|50|5|type|light|hdgPLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=trunk|50|5|type|light|hdgPLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=primary|60|5|type|light|hdgPLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=residential|60|5|type|light|hdgСледующая строка задает коэффициенты этажности домов. Тем, кто пользовался Анотатором, она покажется знакомой:SETAGNBUILDINGHEIGHT|*|1.0;1.0;1.0;1.0До недавнего времени эта команда имела только один параметр. Позже Арно ввел второй, позволяющий использовать фильтры. Что это дает? Для каждой ячейки LOD теперь можно задать свои коэффициенты высот. Теоретически, это должно избавить от небоскребов в промзонах и от одноэтажек в центральной части городов, но на практике это не всегда хорошо работает. И действительно, редко какой город имеет «квадратно-гнездовую» структуру, и в одном LOD-е может одновременно поместиться сразу несколько районов разного типа. Поэтому оставим этот параметр до лучших времен, заменив его уже известной нам звездочкой.Несколько слов о втором параметре. Все здания подразделяются по своей высоте на 1-2-этажные, 3-5-этажные, 6-8-этажные и 9-12-этажные. Четыре коэффициента в параметре команды задают вероятность появления дома соответствующей высоты. Давайте разберем это на примерах:SETAGNBUILDINGHEIGHT|*|1.0;0.0;0.0;0.0 – все здания на карте будут 1-2-этажнымиSETAGNBUILDINGHEIGHT|*|0.0;0.0;0.0;1.0 – все здания на карте будут 9-12-этажнымиSETAGNBUILDINGHEIGHT|*|0.0;0.5;0.5;0.0 – 50% зданий на карте будут 3-5-этажными, другие 50% – 6-8-этажными.Мы условились выше, что в Геленджике нам не требуется искусственно регулировать высотность домов, поэтому запишем в атрибутах параметра коэффициенты 1.0 для всех этажей.Приступим к строительству! Давайте уделим внимание следующей строке (не вписываем ее пока, просто разберем ее работу):CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<15|{5ae04eb6-934c-4f63-bb48-5e7dee601212}|MAXRATIO=2Посмотрим на первый параметр. Мы познакомились с еще одним атрибутом: FWIDTH, означающим, как вы наверняка догадались, какую-то ширину, в данном случае – ширину здания. Для чего она нужна? Помните, мы договорились, что небольшие по размеру здания типа коттеджей будут иметь двускатную крышу? Этим атрибутом мы указываем утилите, чтО именно подразумевается под словом «небольшие»: здания, ширина которых менее 15 метров.Осталось пояснить атрибут type!hotel. В курортных городах редкий отель имеет скучную форму параллелепипеда. Я предпочитаю делать такие заметные здания моделями, и мне нужно, чтобы в месте ее дислокации не было автогенного «кубика». Сделать это можно, удалив все отели с карты вручную, но значительно проще и быстрее использовать фильтр. Вот теперь мы сможем без особого труда «расшифровать» первый параметр. Звучит он следующим образом: считываем данные из файла buildings.shp КРОМЕ тех, которые обозначены типом hotel И ТОЛЬКО те, чья ширина МЕНЬШЕ 15 метров, и присваиваем им значение «полигон».Следующий параметр представляет собой GUID крыши. В ранних версиях ScenProc нам предлагалось вручную лазить в XML-файлах, выискивая нужные типы крыш, но сейчас этого делать не нужно. Давайте познакомимся с функцией автозаполнения.Пишем с новой строки: CREATEAGNGENBUILD. Как только мы написали первые буквы, под курсором появится список команд:Выберем нужную стрелками на клавиатуре и нажмем Enter. Строка вставится автоматически:CREATEAGNGENBUILD|filter|roofGuid|optionsНаведя курсор мыши на нее, мы увидим всплывающую подсказку, в которой кратко описывается структура команды и ее параметры. Теперь можно стереть слово filter и вписать наш вариант. Пользуйтесь автозаполнением или просто скопируйте значение параметра из примера выше так, чтобы строка приобрела следующий вид:CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<15|roofGuid|optionsСтираем roofGuid во втором параметре. Я хочу выбрать GUID, в котором собраны все двускатные крыши. Забегая вперед, скажу: такая группа моделей называется Roofs Gabled _ALL_. Начав писать первые буквы, я вызову под курсором список моделей, выберу нужную и нажму Enter. Вместо названия модели автоматически подставится ее GUID:CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<15|{5ae04eb6-934c-4f63-bb48-5e7dee601212}|optionsОстается пояснить последний, третий параметр команды. В текущей версии он имеет только один атрибут: MAXRATIO. Что он дает? Представьте, что на карте нарисован таунхаус, то есть, достаточно узкое, но длинное здание, состоящее из одинаковых, соединенных между собой домов-близнецов. По умолчанию, ScenProc создаст дом, накрыв его одной узкой и длинной крышей. Смотрится довольно забавно, особенно когда длина такого дома значительно превышает его ширину. Разобьем нашу крышу, указав MAXRATIO=2. Смотрите, что получается: если ширина крыши 5 метров, то она разделится на участки по 10 метров длиной (соотношение 1 к 2). Эти 10-метровые фрагменты будут повторяться, пока не дойдут до противоположного края дома. Если мои объяснения непонятны, я вставлю здесь картинку, поясняющую работу данного параметра.В окончательном виде наша строка будет выглядеть так:CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<15|{5ae04eb6-934c-4f63-bb48-5e7dee601212}|MAXRATIO=2Давайте теперь построим большие дома с плоскими крышами. Команда та же, а параметры ее слегка другие:CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH>20|{b597ddc9-4aa1-4391-8383-231620161427}Ну, теперь-то вы без труда сможете ее описать: считываем полигоны из файла buildings.shp, кроме зданий типа hotel и только те, чья ширина превышает 20 метров. Накрываем их крышами, группа которых, снова подскажу, называется Grouping of all flat roofs (Рекомендуемый GUID изменен, см. дополнения в конце статьи). Тут уже нет нужды тайлить плоские крыши, поэтому третий параметр просто опускаем, он необязательный, и нет необходимости заменять его звездочкой.Те, кто внимательно следил за ходом моих мыслей, скажут: а что с домами, ширина которых больше 15, но меньше 20 метров? Для них я применю другой тип зданий: ROWHOUSES. Дело в том, что полигональные здания, которые мы рисовали, довольно однотипные. Да, они отличаются размерами и высотой, но вариативность их стен и крыш ограничена одним текстурным листом. Единственный известный мне способ обойти это – изменить тип зданий. Два текстурных листа придадут большее разнообразие курортному городку, да и архитектура его перестанет быть похожей на кубическую американскую урбанистику.Пишем следующую команду:CREATEAGNROWHOUSE|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<20;FWIDTH>15Тут все уже знакомо. Команда имеет только один параметр, никаких GUID-ов назначать не надо, тайлить крыши тоже ни к чему.Приступим к озеленению. Ничего нового тут нет – считываем данные типа forest из файла natural.shp, назначаем им свойства полигонов и применяем GUID лиственного леса:CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=natural.shp;type=forest|{db9149ee-bb9d-4da6-89c8-2c4900eed8fa}Считываем данные типа park из того же файла и применяем GUID хвойного леса:CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=natural.shp;type=park|{0053b63d-b2c0-4bd9-9853-d9d21c9ad1fa}Считываем данные типа residential из файла landuse.shp и применяем GUID смешанного леса:CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=landuse.shp;type=residential|{e8b937fd-a1f2-4bd5-8548-2c80d30102af}Готово! Осталось вернуться к столбам освещения и расставить их:CREATEAGNLIBOBJ|FTYPE=POINT;type=light|{0017a263-464f-14fd-f77f-2996fed44864}|hdg|0|6;6Обратите внимание: мы создаем не полигональные, а точечные объекты, о чем красноречиво говорит атрибут FTYPE=POINT. Считывать какие-либо данные из файлов уже не требуется, ведь ранее мы проанонсировали точки их расположения. С помощью атрибута hdg разворачиваем модели так, чтобы светильники были направлены в сторону дороги на ранее вычисленный угол. К этому углу можно добавить оффсет, дополнительно повернув модель на любую фиксированную величину, выраженную в градусах. Нам это делать не нужно, поэтому в четвертом атрибуте оставляем 0. Последний, пятый атрибут -- масштаб модели. Дефолтный Urban Street Light Single 8х8, GUID которого мы используем, неправдоподобно большой, поэтому, в целях повышения реализма, уменьшим его до 6х6 метров. Остался последний шаг: создать сами файлы *.agn, используя команду:WRITEAGNFILES|FSX|F:\Games\Microsoft Flight Simulator X\Addon Scenery\URKG_2013\TextureВсе просто, не так ли? Первый параметр команды – тип создаваемых файлов, второй – путь к папке, в которой они будут лежать.Полный текст нашего скрипта должен выглядеть приблизительно так:IMPORTSHP|E:\Modeling\OSM\URKG\natural.shp|*|NOREPROJIMPORTSHP|E:\Modeling\OSM\URKG\landuse.shp|*|NOREPROJIMPORTSHP|E:\Modeling\OSM\URKG\roads.shp|*|NOREPROJIMPORTSHP|E:\Modeling\OSM\URKG\buildings.shp|*|NOREPROJSPLITGRID|AGN|buildings=*PLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=tertiary|50|5|type|light|hdgPLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=living_street|50|5|type|light|hdgPLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=trunk|50|5|type|light|hdgPLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=primary|60|5|type|light|hdgPLACEPOINTSALONGLINE|FTYPE=LINE;FROMFILE=roads.shp;type=residential|60|5|type|light|hdgSETAGNBUILDINGHEIGHT|*|1.0;1.0;1.0;1.0CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<15|{5ae04eb6-934c-4f63-bb48-5e7dee601212}|MAXRATIO=2CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH>20|{b597ddc9-4aa1-4391-8383-231620161427}CREATEAGNROWHOUSE|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<20;FWIDTH>15CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=natural.shp;type=forest|{db9149ee-bb9d-4da6-89c8-2c4900eed8fa}CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=natural.shp;type=park|{0053b63d-b2c0-4bd9-9853-d9d21c9ad1fa}CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=landuse.shp;type=residential|{e8b937fd-a1f2-4bd5-8548-2c80d30102af}CREATEAGNLIBOBJ|FTYPE=POINT;type=light|{0017a263-464f-14fd-f77f-2996fed44864}|hdg|0|6;6 WRITEAGNFILES|FSX|F:\Games\Microsoft Flight Simulator X\Addon Scenery\URKG_2013\TextureУбедитесь, что в нижней части окна нет красных надписей, сообщающих об ошибках в коде. Сохраните скрипт, нажав кнопку Save. Обязательно закройте Quantum GIS: ScenProc не сможет считать карты, открытые в другой программе (В версии 450 исправлено). Нажмите кнопку Run.Время работы программы зависит от величины карты: чем она больше, тем дольше будет длиться процесс разбиения на LOD-ы. Следите за отчетами: если нет ошибок в логике, то в конце работы появится строка, сообщающая о количестве созданных AGN-файлов.Зайдя в папку Texture вашего сценария, убедитесь, что в ней появились файлы *.agn. Теперь можно запустить игру, загрузиться на нужном аэродроме и посмотреть результат:Вот и все! Конечно, результат потребует некоторой полировки. Например, нужно отфильтровать или удалить с исходной карты здания, находящиеся на территории аэропорта – наверняка у вас они будут свои. В местах, где среди деревьев стоят дома, нужно будет вырезать дырки в полигонах леса, чтобы деревья не росли сквозь крыши – это делается очень легко средствами Quantum GIS (http://www.avsim.su/forum/topic/129027-avtogen-eto-ochen-prosto/page-5#entry2417359). Но, согласитесь: построить целый город с десятками тысяч объектов (в Геленджике, например, их около 46 тысяч) за один вечер ничуть не сложно.Полный список команд и параметров можно найти на сайте:http://www.fsdeveloper.com/wiki/index.php?title=ScenProcВетка форума, посвященная программе:http://www.fsdeveloper.com/forum/forumdisplay.php?f=131В заключение хочу сказать следующее: ScenProс всего лишь инструмент, но инструмент многофункциональный и мощный. Арно отдал в ваши руки швейцарский нож, и только вам решать что с его помощью делать: открывать пиво и пилить колбасу или вырезать скульптуры. В данном мануале отражены лишь простейшие примеры того, что умеет эта программа, возьмите его за основу, изучайте документацию и создавайте свои неповторимые творения.ДОПОЛНЕНИЯ К СТАТЬЕ26.01.2013 Хочу обратить ваше внимание, что утилита очень чувствительна к регистру. Если какие-то объекты не генерируются, тщательно проверьте все строчные и заглавные буквы в своем скрипте. Вот яркий тому пример:http://www.avsim.su/...20#entry2344704 19.03.2013 Изменен рекомендуемый GUID плоских крыш. Как-то раньше не обращал внимания, что они все одинаковые. Рекомендуемый Арно: {6089A0BD-CED1-4c47-9A9E-64CDD0E16983}, рекомендуемый мной: {f5d3c9b7-59af-4df1-be66-b06933ebd3ba} 23.07.2013 Добавлен список серверов, где можно разжиться картами в форматах SHP и OSM, исправлены устаревшие ссылки. 24.10.2013 Формат команды CREATEAGNLIBOBJ скорректирован для совместимости с версией 463. 4.11.2013 Скорректирована ссылка на скачивание ScenProc. 24.12.2013 Снова скорректирована ссылка на скачивание ScenProc. Edited December 24, 2013 by Nizkovoltnik 19 Quote Share this post Link to post Share on other sites
Илья_777 6 Posted January 25, 2013 Очент интересно и доступно, спасибо за статью! =) Автор, вы как профессионал, не могли бы в два клика "сделать автоген" для города Омск ? 1 3 Quote Share this post Link to post Share on other sites
Layer 6 Posted January 25, 2013 Ухты.. как раз только вот автогеном и начал заниматься. Приду домой попробую. Вопрос: на фототеррайн становится? Так, на всякий ;) Спасибо! 1 Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 25, 2013 (edited) Автор, вы как профессионал, не могли бы в два клика "сделать автоген" для города Омск ? Конечно могу Но как "профессионал" хочу, чтобы Вы, прочитав мануал, сделали это сами. И когда Вы покажете скрины получившегося, это будет для меня лучшей благодарностью. Вопрос: на фототеррайн становится? ТОЛЬКО на фототерр. За его пределами никакого кастомного автогена Вы не увидите. Edited January 25, 2013 by Nizkovoltnik 5 Quote Share this post Link to post Share on other sites
Layer 6 Posted January 25, 2013 Спасибо) Вечерком по времени попробую и отпишусь! Quote Share this post Link to post Share on other sites
stinger1968 5 Posted January 25, 2013 (edited) SceneryProcessor Error Error while performing step IMPORTSHP SceneryProcessor Error Поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере. Что такое может быть??? Windows 7/64 Edited January 25, 2013 by stinger1968 Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 25, 2013 (edited) To be able to read shapefiles, you need to have the Microsoft Access Database Engine 2010 installed. Be aware to install the right version, if you are running a 64 bit OS, you need to have the 64 bit driver installed. If you get an error while installing that a 32 bit Microsoft Office is installed, you can run the installer in passive mode to still install the driver: AccessDatabaseEngine_X64.exe /passive Простите. Я совершенно упустил из виду этот момент, так как не пользуюсь MS Office. Завтра добавлю в мануал. Добавил в мануал. Edited January 26, 2013 by Nizkovoltnik Quote Share this post Link to post Share on other sites
rust197703 126 Posted January 25, 2013 (edited) Вот это ДА! Спасибо Вам огромное! Тема автоматом решает много проблем связанных с расстановкой автогена! Обязательно попробую по кускам слепить город! Очень нужная тема, ее надо закрепить в списке важных! Уже закреплена - опоздал с советом, закрепил у себя, в закладке!)) Edited January 25, 2013 by rust197703 Quote Share this post Link to post Share on other sites
tangeregvip 1948 Posted January 25, 2013 Спасибо!Очень актуальная тема. Quote Share this post Link to post Share on other sites
Layer 6 Posted January 25, 2013 Жаль.... моей зоны там нет должным образом.. возвращаюсь к аннотатору... Quote Share this post Link to post Share on other sites
AceFly 42 Posted January 25, 2013 Итить ее налево! А я пол-Киева месяц лепил! Quote Share this post Link to post Share on other sites
stinger1968 5 Posted January 26, 2013 To be able to read shapefiles, you need to have the Microsoft Access Database Engine 2010 installed. Be aware to install the right version, if you are running a 64 bit OS, you need to have the 64 bit driver installed. If you get an error while installing that a 32 bit Microsoft Office is installed, you can run the installer in passive mode to still install the driver: AccessDatabaseEngine_X64.exe /passive Простите. Я совершенно упустил из виду этот момент. Завтра добавлю в мануал. Привет! Спасибо! Сделал как написано и усё заработало!!! :D Quote Share this post Link to post Share on other sites
stinger1968 5 Posted January 26, 2013 (edited) Ещё вот такая бяка....шрифты???? Как победить?? Edited January 26, 2013 by stinger1968 Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 26, 2013 (edited) Жаль....моей зоны там нет должным образом.. возвращаюсь к аннотатору... Не отчаивайтесь, на GEOFABRIK свет клином не сошелся. Поищите в других источниках. Подсказать их я не смогу, но наверняка есть другие карты, более точные и подробные. Ещё вот такая бяка....шрифты???? Как победить?? А, да, есть такое дело Русским картографистам правила не писаны, они все равно назовут свои объекты кириллицей, да еще и в какой-нибудь хитрой кодировке. Не обращайте внимание, главное что значения в поле type написаны латинскими буквами. А правильность отображения кириллицы постепенно фиксится в новых версиях QGIS. Edited July 26, 2013 by Nizkovoltnik 1 Quote Share this post Link to post Share on other sites
stinger1968 5 Posted January 26, 2013 (edited) Cделал всё как написано, но на определённом этапе компилирования scenProc зависает, памяти до 98 процентов съедает....(((( На компе 8Гигов оперативки... Edited January 26, 2013 by stinger1968 Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 26, 2013 (edited) Зависает или вываливается с ошибкой? На больших картах этап разбиения на LOD-ы может занять значительное время. И, конечно же, большое количество данных может забить оперативку. Попробуйте вырезать меньший кусок и поэкспериментировать с ним. Edited January 26, 2013 by Nizkovoltnik Quote Share this post Link to post Share on other sites
stinger1968 5 Posted January 26, 2013 Нет, ошибку не показывает, но сверху пишет что прога не отвечает и комп начинает сильно тормозить, да и понятно память то тю-тю....... Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 26, 2013 Вы не могли случайно указать пути к исходным картам, не подвергшимся обрезке? И любопытно бы посмотреть скрин, на каком этапе это происходит. Quote Share this post Link to post Share on other sites
stinger1968 5 Posted January 26, 2013 (edited) Нет пути правильные...Почему память так кушает??? 13:22 PLACEPOINTSALONGLINE Information Placing point features along lines with filter FTYPE=LINE;FROMFILE=roads.shp;type=trunk... Вот тут Edited January 26, 2013 by stinger1968 Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 26, 2013 (edited) Так-так, похоже Вы вычислили забавный баг. Попробуйте закомментировать строки, связанные с расстановкой фонарей. Просто поставьте в начале строк знак # Если остальное (дома и деревья) расставятся успешно, сделайте следующее: удалите атрибуты fromfile из строк с фонарями, чтобы они выглядели так: PLACEPOINTSALONGLINE|FTYPE=LINE;type=trunk|50|5|type|light|hdg Edited January 26, 2013 by Nizkovoltnik Quote Share this post Link to post Share on other sites
stinger1968 5 Posted January 26, 2013 После добавления # компилит. После правки тоже, но в анотаторе нет ни домов, ни дорог, хотя на карте были и экспорт слоёв делал как писалось выше.... Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 26, 2013 (edited) Очень интересно. Действительно похоже на баг. Надо бы, чтобы еще кто-нибудь проделал на своем компьютере такие операции, и если ситуация повторится, я внесу поправки в статью. В моем рабочем компьютере 32 Гб оперативки, возможно поэтому я не замечал проблем с утечкой памяти. А в игре автоген есть? Edited January 26, 2013 by Nizkovoltnik Quote Share this post Link to post Share on other sites
stinger1968 5 Posted January 26, 2013 (edited) Ну чуть деревьев.....Они и в анотаторе видны...До правки, ( с аттрибутом #) больше было деревьев... IMPORTSHP|D:\Aeroport\natural.shp|*|NOREPROJ IMPORTSHP|D:\Aeroport\Landuse.shp|*|NOREPROJ IMPORTSHP|D:\Aeroport\roads.shp|*|NOREPROJ IMPORTSHP|D:\Aeroport\Buildings.shp|*|NOREPROJ SPLITGRID|AGN|buildings=* PLACEPOINTSALONGLINE|FTYPE=LINE;type=tertiary|50|5|type|light|hdg PLACEPOINTSALONGLINE|FTYPE=LINE;type=living_street|50|5|type|light|hdg PLACEPOINTSALONGLINE|FTYPE=LINE;type=trunk|50|5|type|light|hdg PLACEPOINTSALONGLINE|FTYPE=LINE;type=primary|60|5|type|light|hdg PLACEPOINTSALONGLINE|FTYPE=LINE;type=residential|60|5|type|light|hdg SETAGNBUILDINGHEIGHT|*|1.0;1.0;1.0;1.0 CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<15|{5ae04eb6-934c-4f63-bb48-5e7dee601212}|MAXRATIO=2 CREATEAGNGENBUILD|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH>20|{b597ddc9-4aa1-4391-8383-231620161427} CREATEAGNROWHOUSE|FTYPE=POLYGON;FROMFILE=buildings.shp;type!hotel;FWIDTH<20;FWIDTH>15 CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=natural.shp;type=forest|{db9149ee-bb9d-4da6-89c8-2c4900eed8fa} CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=natural.shp;type=park|{0053b63d-b2c0-4bd9-9853-d9d21c9ad1fa} CREATEAGNPOLYVEG|FTYPE=POLYGON;FROMFILE=landuse.shp;type=residential|{e8b937fd-a1f2-4bd5-8548-2c80d30102af} CREATEAGNLIBOBJ|FTYPE=POINT;type=light|{0017a263-464f-14fd-f77f-2996fed44864}|hdg|6;6 Вот код после правки, пути текстур опускаю... Вот на карте дома есть, после компилинга нету........ Edited January 26, 2013 by stinger1968 Quote Share this post Link to post Share on other sites
Nizkovoltnik 407 Posted January 26, 2013 (edited) Вот оно что! У Вас: IMPORTSHP|D:\Aeroport\Buildings.shp|*|NOREPROJ -- имя файла написано с заглавной буквы; SPLITGRID|AGN|buildings=* -- строчная буква и далее строчные. То же самое касается IMPORTSHP|D:\Aeroport\Landuse.shp|*|NOREPROJ -- вот почему уменьшилось количество деревьев. Измените везде на строчные. Утилита крайне чувствительна к регистру. Вот смотрите, я подчеркнул ошибки: Edited January 26, 2013 by Nizkovoltnik Quote Share this post Link to post Share on other sites