28 февр. 2010 г.

Использование SketchUp 6 и ArcGIS 9.3 для создания 3D модели города с геопривязкой, Часть 2

Начало читайте в Части 1.

В этом примере мы создадим модель из 3х типовых зданий - нередкая ситуация для типичных спальных районов в городах. т.е. модель здания на самом деле будет одна, но в конце мы её размножим...

Экспорт будем делать дважды:

 1. Полигоны домов для привязки к ним моделей и импорта назад в ArcGIS.
 2. Один полигон для моделирования.



    Откроем в ArcMap слой домов и выделим объекты для экспорта.

    Нажимаем кнопку "Export selected items to SketchUp 6".

    Если в слое зданий есть атрибут с отметкой основания, то в появившемся окне ставим галочку на "Elevate by field" и выбираем этот атрибут.
    Выбираем куда сохранять и жмем "OK". Это для привязки.

    Для модели выбираем одно из наших типовых зданий и аналогично делаем экспорт, только теперь ставим галочку на "Extrude by field" и выбираем атрибут, в котором хранится высота здания в метрах (например, Height). Выбираем куда сохранять и жмем "OK".

    Приступим к модели здания. Открываем файл с сохраненной моделью в SketchUp и видим дом выдавленный по высоте (как в начале поста).
    Теперь используем фотографию нашего дома для текстурирования. Фото, которое использовал я, Вы можете посмотреть в первой части поста.

    Нажимаем правой кнопкой на здании и выбираем "Edit group". Выбираем грань, на которую будем накладывать текстуру. Импортируем фото здания - меню "File->Import". Не забываем поставить тип файла "*.jpg" и выбрать "Use as Texture" (это важно!). После этого приблизительно размещаем текстуру на грани.

    Для подгонки изображения нужно разместить четыре точки по углам изображения этой грани на фото и после этого "притянуть" их к углам самой грани.
    Выбираем еще раз грань с текстурой, нажимаем правую кнопку и "Texture->Position".


    Для первой операции используем однократное нажатие мышью на точке и её перемещение. Для второй - нажатие и удержание кнопки мыши во время перемещения к нужному углу грани. Причем удобнее всего "притягивание" точек выполнять в последовательности: красная, зеленая, синяя, потом желтая.



    После завершения позиционирования текстуры, нажимаем правой кнопкой и выбираем "Done".
    Всё, текстура для грани готова!

    Проделываем то же самое для оставшихся граней и получаем грубую модель здания.

    Дальше конечно есть возможность по уже текстурированной модели дорисовать прямо в SketchUp некоторые дополнительные элементы: выступы на крыше, мачты, арки и т.п. Это можно сделать довольно несложно и быстро, потратив небольшое время на изучение основ SketchUp. Я приведу ссылки на некоторые интересные ресурсы в следующем посте.

    Так же советую обратить внимание на функцию "Photo Match", которая позволяет делать текстурирования гораздо быстрее, если на фото есть сразу 2 грани здания (или больше).

    Сохраняем готовую модель и открываем файл, в который мы делали экспорт вектора зданий для привязки.

    Выбираем меню "File->Import", тип файла "*.skp" и чертеж нашей модели. Размещаем приблизительно. Используя функцию "Move" тащим 3D модель за один из углов и размещаем на соответствующем векторе здания. При необходимости поворачиваем модель, что бы она полностью совпала с основанием.

    Теперь можно размножить модель и разместить её на следующих местах, где расположены такие же по типу здания.
    Мы готовы к экспорту назад в ArcGIS!

    Выделяем объекты для экспорта - модели зданий без оснований, к которым мы их "приклеивали".

    По идее, мы должны выполнить обычный экспорт в "*.mdb" и все готово, если верить презентации от Google, но у меня почему-то так просто все не получилось. Возможно из-за того, что плагин для ArcGIS 9.2, а я использую 9.3.

    Теперь немного "шаманства" :)

    Создаем геобазуданных MDB, которую сможет прочитать SketchUp: выбираем "File->Export->3D model...", тип "*.mdb". Вводим имя файла. После этого появится окошко, где можно будет выбрать существующий multipatch feature class или создать новый в этой геобазеданных. Если у вас выйдет создать новый, то вам повезло - все работает без шаманства. В моем случае этого не вышло. И пришлось нажать отмену. Но файл MDB создан, хоть и пустой!

    Заходим в него в ArcCatalog'е и создаем новый feature class типа multipatch. Выбираем для него нужную систему координат, в которой у нас находится вектор домов.
    Возвращаемся в SketchUp и теперь повторяя экспорт в этот же MDB файл, мы можем выбрать только что созданный нами multipatch feature class. Всё готово!

    Можно открыть модель в ArcScene или ArcGlobe, добавить существующую модель рельефа и остальные данные.

    Я столкнулся ещё с одной проблемой во время экспорта: текстуры некорректно распознавались в ArcGIS. Перепробовал разные варианты привязки и экспорта, пока не нашел один вариант.
    Предварительно делаем экспорт в формат COLLADA (*.dae). Текстуры в этом формате хранятся отдельно в jpg в папке под таким же названием, как и имя файла dae. Они будут разрезаны отдельно под каждую грань. Если выполнить наложение текстур ещё раз, но уже используя эти новые порезанные файлы, то в дальнейшем проблем с текстурами не возникнет. Лучше всего это делать сразу после того, как наложили все текстуры на нашу модель здания.
    Возможно эта проблема связана с большим разрешение исходной фотографии здания, а у вас все заработает без этого...

    В следующем посте подготовлю ссылки на ресурсы и ролики youtube, которые могут пригодиться для обучения работы в SketchUp.

    Некоторые замечания:

    • Конечно можно делать экспорт из ArcGIS сразу всех зданий с выдавливанием их по высоте и работать сразу с геопривязанными моделями. Но это не всегда удобно. А также способом, показанным здесь, можно привязывать модели зданий полученные из других источников, а так же смоделированные вручную с нуля.
    • Для SketchUp можно скачать готовые библиотеки объектов (деревья, трубы, скамейки, фонари, знаки и т.п.) и использовать их в своих моделях.
    • Лучше всего моделировать по кусочкам - например, по кварталам. Иначе можно столкнуться с невысокой производительностью SketchUp.

    7 комментариев:

    1. Добрый день
      Подскажите, а при экспорте этих трёх домов у Вас получает три малтипатч объекта или один. У меня при экспорте нескольких объектов скетчАр (три дома в Вашем случае), аркгис воспринимает все как один малтипатч, что не очень хорошо, если нужно будет корректировать положение объектов. Нашел выход только такой - экспортировать каждый объект отдельно указывая один и тот же фиче класс.
      Есть идеи по этому поводу?
      jimkoteni

      ОтветитьУдалить
    2. Большое спасибо за создание этой статьи. Пишу диплом по 3D моделированию городской среды. Столкнулся с проблемой экспорта моделей из Sketch Up в Arc Gis. Ещё раз спасибо очень помогло.

      ОтветитьУдалить
    3. Существует ли АДДон для Скетча осуществляющий экспорт модельки в mdb ???? если да, то где его найти и как установить в Скетч? Для Арка получилось установить и делать экспорт в Скетч, но обратно, нет... мне уже кажется что это сказки(((

      ОтветитьУдалить
    4. Спасибо за полезные статьи, но... я также столкнулась с проблемой обратного импорта из Скетча в АркГис... нету фукнции Файл-Импорт...если сможете, помогите, спасибо :)

      ОтветитьУдалить
    5. Подскажите пожалуйста как мне экспортировать из Google SketchUp в ArcScane... файл-экспорт-3D модель-/тип файла Esrimultipatch-а нет!!!!

      ОтветитьУдалить
    6. Значит так, даю ответ на неясный вопрос: Где же взять ESRI Multipatch (.mdb).
      Качнул и установил официальную версию СкетчАпа 6 --- http://sketchup.google.com/gsu8/download.html
      Походу экспорт в ESRI Multipatch (.mdb) работает только в этой версии...
      Далее качнул SketchUp6ESRI --- http://dl.google.com/sketchup/gsu6/plugins/SketchUp6ESRI.exe

      После перечисленных выше манипуляций появился экспорт из Скетча в .mdb. Но выдает ошибку при экспорте.. ех.. буду дальше разбираться... а еще верней использовать ArcGis 10 и экспорт в COLLADA и обратно --- http://www.youtube.com/watch?v=NPkY1n_J_ik

      Удачи.

      ОтветитьУдалить
    7. Дополняю предыдущий комментарий.
      Все заработало по методике автора статьи - применить шаманство.

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

      кому не понятно, пишите -- maxworkmailmax@gmail.com

      ОтветитьУдалить