28 февр. 2010 г.

Ссылки по SketchUp

Выкладываю интересные ссылки, которые мне пригодились в изучении SketchUp. В продолжение постов
Часть 1
Часть 2

Ролики на youtube на англ. языке, но все довольно наглядно и ясно:
  1. Основы использования SketchUp
  2. Геопривязка существующей модели SketchUp
  3. Использование функции Match Photo

Использование 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.

    27 февр. 2010 г.

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

    На днях столкнулся с задачей моделирования фотореалистичной модели городской территории в среде ArcGIS.

    Необходимо было найти быстрый способ с минимальными трудозатратами. А так же, не было серьезного опыта работы с пакетами для 3D проектирования и где то внутри было чувство, что тут можно найти более простой путь.

    В результате поиска в интернете, чтения форумов и попытками “поиграться” с различными моделями и примерами был найден оптимальный для моих задач способ - использовать для создания моделей зданий и текстурирования Google SketchUp. Эта программа оказалась довольно простой для освоения и не перегружена излишней функциональностью.

    Основную идею можно прочитать в презентации SketchUp and ArcGIS (англ.).
    В этих нескольких постах я попытаюсь описать свой опыт реализации и решение мелких проблем возникших в процессе.

    Итак, нам понадобятся:

    1. ArcGIS 9.2 / 9.3 (я использовал 9.3)
    2. Google SketchUp Pro 6
    3. ArcGIS for SketchUp 6 - плагин экспорта/импорта данных между ArcGIS и SketchUp

    SketchUp распространяется бесплатно. К сожалению, для экспорта/импорта в ArcGIS нам понадобится функциональность Pro версии, которая стоит денег.

    После окончания установки плагина, необходимо зайти в ArcMap и добавить его. Для этого выбираем в меню “Tools\Customize\Add From File” и указываем путь к нему - “C:\Program Files\ArcGIS\SketchUp6\FeaturesToSkp.dll”. Не забываем поставить галочку на “SketchUp 6 Tools” в списке тулбаров, если она отключена.
    На этом установка закончена и мы должны увидеть кнопку плагина на панели ArcMap.

    Подробнее про установку плагина можно прочитать здесь (англ.)

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

    Перечислю данные, которые использовались мной:

    1. Векторный слой зданий с атрибутами Height (высота здания в метрах) и Z_bottom (отметка низа).
    2. Рельеф в формате GRID - для получения отметки Z_bottom с помощью Spatial Analyst.
    3. Фотография здания для создания текстуры - была получена мной с помощью 10mpx камеры. Фотографировал так, чтоб захватить сразу две грани - две текстуры за раз.

    На этом подготовительные работы закончены.

    В следующем посте я опишу непосредственно создание модели здания, текстурирование и экспорт результата в ArcGIS с геопривязкой.

    Часть 2