Небольшая инструкция по созданию 3D объекта и размещению его в карте для Garmin.
Для создания 3D объекта нам понадобятся следующие программы:
- SketchUp Pro
- PhotoShop
Для начала берем фотоаппарат в руки и идем фотографировать интересующий нас объект. Фотографировать нужно так, чтобы искажений было как можно меньше. А лучше, чтобы их совсем не было. Если сторона здания прямоугольная, то и на фото в итоге она должна быть прямоугольной, а не трапецивидной.
После этого из полученных фото вырезаем нужные нам участки и делаем объединённую текстуру.
Текстура должна быть размерами 512х512 пикселей в формате png. Размеры сторон здания не обязательно должны быть пропорциональны друг другу. Но их стороны должны соотноситься со сторонами полигонов нашего объекта, который мы будем создавать чуть позже. Фон объединенной текстуры лучше сделать непрозрачным. Например сделаем его белым. Если у нашего строения несколько сторон выглядят одинаково, то в нашей текстуре достаточно разместить картинку только одной стороны. Другими словами, не обязательно размещать свою текстуру для каждого полигона объекта. Создавать общую текстуру можно в FotoShop. Но если кому-то удобней в других графических программах, то это не возбраняется. Главное, в результате получить картинку в формате png размерами 512х512 пикселей.
Вот, что в итоге у нас должно получиться:
Как будет дальше видно, количество частей текстур меньше, чем количество полигонов в нашем объекте.
Ну а теперь приступим непосредственно к созданию нашего 3D объекта. Для начала рекомендую создать самый простой объект - куб.
Размеры объекта должны соответствовать реальным размерам дома, который мы собираемся создавать. Если сторона дома в реальности 50 метров, то и у нашего объекта соответствующая сторона (грань) должна быть тоже 50 метров.
И так, нам нужна гуглевская программа SketchUp Pro. На просторах интернета можно найти версию Pro (именно Pro) без проблем.
Создаем новый объект - File->New
Человечка в нулевых координатах можно удалить. Нам он не нужен.
Если есть спутниковый снимки участка, где расположен Ваш объект, то Вы можете разместить эту фото: File->Geo-location->Add Location. После выбираем нужный нам участок, масштаб и жмем Select Region. После центруем на нужном нам объекте (крестик - это нулевые координаты). Рекомендую сцентровать на каком-нибудь углу нашего строения.
После жмем Grab и выбранный участок появится в окне моделирования.
Теперь необходимо нарисовать саму модель. Я думаю не стоит тут описывать функционал программы SketchUp. Каждый сам разберется, как и что делать.
В результате мы получаем вот такой домик:
Теперь нам необходимо разместить на нашем объекте текстуру, которую мы подготовили чуть раньше.
Делается это следующим образом.
Выбираем Paint Bucket (ведро с выливающейся желтой краской). У нас откроется окошко Materials. Нам нужно создать новый материал, который будет содержать нашу текстуру. Для этого в этом окошке нажимаем Create Material... (ящик с плюсиком в кругляшке). Откроется еще одно окошко. Выписываем там название нашего материала. Лучше латинскими буквами и с маленькой буквы. Выбираем файл нашей текстуры. Ниже выставляем размеры текстуры (тут можете поэксперементировать, потому что от этих размеров будет зависеть размер, который изначально нанесется на полигон). Жмем ОК. В окне Materials появится наша текстура.
После этого курсором (ведро с желтой краской) выбираем полигон, на который хотим нанести текстуру. Получим вот такое:
Теперь нам необходимо растянуть нужный участок текстуры (на котором расположена часть, которая должна покрыть выбранный полигон).
Нажимаем правой кнопкой мыши на нужный полигон. В выпавшем окне выбираем Texture->Position. В результате видимо следующую картину:
Тут мы видим 4 метки (красная, желтая, зеленая и синяя). Нам интересный красная и зеленая. Красная - это метка нулевых координат текстуры. При однократном нажатии на нее левой кнопкой мыши, появляется возможность перетаскивать эту метку (так же, как и другие). Перетаскиваем ее в один из углов нужного нам участка текстуры. Двигаем всю текстуру так, чтобы красная метка совпала с соответствующей частью полигона. Например, у нас квадратный полигон, и соответственно квадратная часть текстуры. Переносим красную метку в левый нижний угол нужного нам участка текстуры (например, это часть, которая покрывает торец здания). После этого двигаем всю текстура так, чтобы эта красная метка оказалась тоже в левом нижнем углу полигона торца здания.
Теперь таким же образом переносим зеленую в другую часть нужного участка текстуры. После этого начинаем растягивать текстуру, потянув в нужном направлении за зеленую метку, удерживая ее левой кнопкой мыши.
В итоге получаем следующее:
По аналогии заполняем текстурой все остальные полигоны.
В итоге у нас готов объект, полностью заполненный текстурой.
Все, объект готов.
Но тут возникает один нюанс. Если Вы попытаетесь вставить его в карту в таком виде, то он будет расположен перпендикулярно, относительно поверхности карты. Поэтому нам необходимо его повернуть на 90 градусов относительно красной оси координат.
Расскажу о том, какие оси куда направлены.
Красная - в сторону востока.
Зеленая - в сторону севера.
Синяя - в небо.
В карте же для Гармин эти линии меняют ориентацию:
Красная - в сторону востока.
Зеленая - в сторону земли.
Синяя - в сторону севера.
В итоге, наше строение должно быть расположено следующим образом:
Делается это следующим образом. Сперва выделяем всю модель: Edit->Select All. После выбираем кнопку Rotate (две красные полукруглые стрелки). Подводим к нулевым координатам так, чтобы появившаяся шкала стала красной (поворачивать будем относительно красной оси). После поворачиваем строение на 90 градусов.
Теперь нашу модель необходимо конвертировать в подходящий для Garmin формат. А это файлы формата obj и mtl.
Делаем: File->Export->3D Model.
Выбираем папку, куда сохранять. В итоге мы получим 2 файла *.obj и *.mtl. Там же будет папка, в которой расположена наша текстура.
После конвертации увидим следующее окошко, в котором необходимо обратить внимание на выделенные строки. Обязательно должны быть 1 материал и 1 текстура.
Текстуру из полученной папке можете разместить рядом с фалами *.obj и *.mtl. Однако в таком случае необходимо будет внести изменения в файл *.mtl. Он открывается обычным редактором Блокнот. Нас интересует строка "map_Kd 2/chgaa.png". Заменяем ее на "map_Kd chgaa.png". Это ссылка на путь до нашей текстуры.
Если захотите переименовать файл текстур, так же необходимо внести изменения в файл *.mtl. Главное помнить, что название файла текстуры должно содержать только латинские буквы и цифры, и только маленькие буквы.
Если решите переименовать файл *.mtl, то необходимо внести изменения в файл *.obj (который тоже можно открыть Блокнтом). Нас интересует строка "mtllib 2.mtl". Это путь до файла *.mtl.
И так, все файлы упорядочили, все подготовили. Осталось сделать shape-файл, который мы будет подсовывать при компиляции карты.
Shape должен содержать следующие атрибуты:
NAME=chgaa (тут название вашего объекта, произвольное)
GRMN_TYPE=GENERIC_MANMADE (тут тип полигона из тех, что могут поддерживать высотность)
LINK_ID=1 (тут уникальный id объекта)
HGT_DP=0 (тут высота, которая, как я понял, должна быть равна нулю)
HGT_DP_FMT=M (в чем измеряется - метры)
MODEL=C:\mp2shp_1.09\3D\model001 (тут путь до папки, в которой будут размещаться *.obj, *.mtl и текстура)
MODEL_ORIG=lat=55.159348,lon=61.379063 (тут координаты объекта, которые соответствуют нулевым координатам в 3D редакторе)
Если нет опыта работы в в специализированных программах (MapInfo, например), то можно все эти данные вписать в дополнительные атрибуты полигона, который сделаете в GPSMapEdit. После с помощью Global Mapper сконвертируете в shape.
Все, теперь гарминовском конвертере указываете путь до этого shape-файла и в итоге получите созданный 3D объект в Вашей карте.
В заключении хочу сказать, что сперва лучше попробовать все это на самом элементарном объекте. Нарисуйте куб, прикрепите его к карте. Тогда сможете понять, что нужно доработать и подправить.
Проект Челябинск © Гусев Николай (gukol)