Трехмерное моделирование с использованием SketchUp и Eclipse: Часть 1. Создание моста между SketchUp и Eclipse

Одна из последних популярных инструментальных программ Google, SketchUp, предназначена для трехмерного моделирования. Она не только облегчает создание проектов вручную, но и позволяет автоматизировать процесс проектирования при помощи Ruby-сценариев. В связи с важностью обслуживания и редактирования этих сценариев полезно иметь полнофункциональную среду разработки, например Eclipse. Узнайте, как настроить SketchUp и Eclipse так, чтобы можно было редактировать сценарии в Eclipse и автоматически выполнять их в SketchUp.

Мэттью Скарпино, Java-разработчик, Eclipse Engineering, LLC

Мэттью Скарпино (Matthew Scarpino) - менеджер проектов и Java-разработчик Eclipse Engineering LLC. Ведущий автор SWT/JFace in Action. Принимал небольшое, но важное участие в разработке Standard Widget Toolkit (SWT). Увлекается ирландской народной музыкой, бегом на марафонские дистанции, поэзией Уильяма Блэйка и интегрированной средой Graphical Editing Framework (GEF).



29.10.2010

Трехмерное моделирование занимает важное место в моих последних проектах, и в попытках найти подходящее средство проектирования я попробовал ознакомительные версии AutoCAD, Blender, Maya и SketchUp. Программа SketchUp оказалась намного более простой в изучении и наиболее приятной в использовании. Я постоянно говорил себе: "Это не может быть так просто". Но благодаря самоучителям Google и видеодемонстрациям на YouTube я не только быстро прошел курс обучения, но и получил удовольствие, работая над проектом.

Часто используемые сокращения

  • API: Application programming interface (прикладной интерфейс программирования)
  • CVS: Concurrent Versions System
  • SVN: Subversion
  • UI: User interface (пользовательский интерфейс)

Еще больше удовольствие мне принесло (я программист, а не дизайнер графики) обнаружение того, что SketchUp выполняет командные сценарии. Это означает, что я могу автоматизировать такие задачи, как добавление подписей к рисункам, назначение материалов поверхностям и вычерчивание геометрических фигур, например парабол и эллипсов. SketchUp API основан на языке программирования Ruby и, как и SketchUp, его нетрудно изучить. Для ускорения процесса кодирования я разработал специализированный плагин, взаимодействующий с SketchUp через мост SketchUp Bridge.

В данной статье дается краткое введение в SketchUp, объясняется, как работает SketchUp Bridge, и демонстрируется, как установить плагин, подключающий Eclipse к SketchUp. В следующей части данной серии статей Трехмерное моделирование с использованием SketchUp и Eclipse (EN) будут более подробно рассмотрены SketchUp API и виды проектов, которые можно создать с его помощью.

Инструментальная программа моделирования SketchUp

Как и сам сайт Google, Google SketchUp предоставляет много возможностей, скрывающихся за простым интерфейсом. Назначение SketchUp – предоставить доступ к возможностям трехмерной графики широкой аудитории пользователей, и она добивается своей цели - за пять минут вы можете научиться рисовать основные двумерные фигуры и вытягивать их в трехмерные. За полчаса, просто играя с программой, вы можете освоить все элементы инструментальной панели. На рисунке 1 изображен пользовательский интерфейс SketchUp. Хотя SketchUp выглядит программой моделирования, она ведет себя как игрушка.

Рисунок 1. Пользовательский интерфейс SketchUp
Рисунок 1. Пользовательский интерфейс SketchUp

В отличие от программы Blender, SketchUp не является программой с открытыми исходными кодами. Лицензия Google позволяет вам использовать программу для любых законных целей, и вы можете расширять SketchUp плагинами, но исходный код недоступен. SketchUp работает только на компьютерах с операционной системой Windows® или Apple Mac OS X. Доступны две версии: бесплатная и версия SketchUp Pro по цене 495 долларов США. SketchUp Pro предоставляет профессиональные схемы и стили, расширенные операции с файлами и техническую поддержку. Однако и бесплатная версия предоставляет огромное количество функциональных возможностей, поэтому перед продолжением чтения я настоятельно рекомендую вам посетить сайт SketchUp (см. раздел Ресурсы) и загрузить ее копию.

Запуск SketchUp

При первом запуске SketchUp отобразится запрос о том, какой шаблон (template) вы предпочитаете использовать. Шаблон определяет единицы измерения и внешний вид окна проектирования. Доступно двенадцать вариантов:

  • Simple Template (feet and inches) (простой шаблон (футы и дюймы)). Закрашивает плоскость x-y зеленым цветом, область положительных z - голубым.
  • Simple Template (meters) (простой шаблон (метры)). Закрашивает плоскость x-y зеленым цветом, положительную z-область - голубым.
  • Architectural Design (feet and inches) (архитектурное проектирование (футы и дюймы)). Закрашивает плоскость x-y темно-серым цветом, область положительных z - светло-серым.
  • Architectural Design (millimeters) (архитектурное проектирование (миллиметры)). Закрашивает плоскость x-y темно-серым цветом, область положительных z - светло-серым.
  • Google Earth Modeling (feet and inches) (моделирование Google Earth (футы и дюймы)). Закрашивает плоскость x-y зеленым цветом, область положительных z - голубым.
  • Google Earth Modeling (meters) (моделирование Google Earth (метры)). Закрашивает плоскость x-y зеленым цветом, область положительных z - голубым.
  • Engineering (feet) (техническое конструирование (футы)). Закрашивает всю область проекта белым цветом.
  • Engineering (meters) (техническое конструирование (метры)). Закрашивает всю область проекта белым цветом.
  • Product Design and Woodworking (inches) (проектирование изделий и деревообработка (дюймы)). Закрашивает плоскость x-y темно-серым цветом, область положительных z - светло-серым.
  • Product Design and Woodworking (millimeters) (проектирование изделий и деревообработка (миллиметры)). Закрашивает плоскость x-y темно-серым цветом, область положительных z - светло-серым.
  • Plan View (feet and inches) (вид на плоскости (футы и дюймы)). Закрашивает всю область проекта белым цветом (начинает работу с двумерного окна).
  • Plan View (millimeters) (вид на плоскости (миллиметры)). Закрашивает всю область проекта белым цветом (начинает работу с двумерного окна).

За исключением единиц измерения, между шаблонами нет значительных отличий. Я инженер, поэтому предпочитаю шаблон Engineering (meters).

После выбора шаблона появится окно проектирования, и вы увидите последовательность линий, пересекающихся в точке, называемой началом координат (origin). Эти линии определяют define систему координат (x,y,z). На рисунке 1 показано, как они выглядят. Сплошная красная линия - это положительная ось x, пунктирная красная линия - отрицательная ось x. Сплошная зеленая линия - положительная ось y, пунктирная зеленая линия - отрицательная ось y. Сплошная синяя линия - положительная ось z, пунктирная синяя линия - отрицательная ось z (xyz = RGB, помните?).

Рисование в SketchUp

В данной статье рассматривается автоматизация SketchUp, но прежде вам нужно получить представление о том, как все делается вручную. Давайте начнем с двух простых фигур. Как и в Adobe® Photoshop® или Microsoft® Paint, процесс рисования в SketchUp включает в себя выбор инструмента в панели инструментов и щелчок левой кнопкой мыши в окне проекта. На рисунке 2 показана базовая панель инструментов SketchUp.

Рисунок 2. Базовая панель инструментов SketchUp
Рисунок 2. Базовая панель инструментов SketchUp

Для начала выберите инструмент Rectangle (прямоугольник), который чертит сплошную прямоугольную область. Создайте прямоугольник, щелкнув в двух местах окна проекта. Вы увидите, что первая фигура проекта всегда помещается в плоскости x-y. Результат должен выглядеть примерно так, как показано на рисунке 3a.

Рисунок 3. Пример фигур SketchUp
Рисунок 3. Пример фигур SketchUp

Инструмент Push/Pull добавляет третье измерение и используется для превращения прямоугольника в параллелепипед. Выберите этот инструмент, щелкните на прямоугольнике и переместите мышь вверх. В окне SketchUp появится параллелепипед, его высота меняется в соответствии с позицией курсора мыши. Щелкните левой кнопкой мыши еще раз, чтобы создать параллелепипед, аналогичный изображенному на рисунке 3b. В терминах SketchUp создание трехмерной фигуры из двумерной называется вытягиванием (extrusion).

Затем сверху параллелепипеда нарисуйте цилиндр. Выберите инструмент Circle (круг) и щелкните левой кнопкой мыши в центре верхней поверхности параллелепипеда. Переместите курсор от центра и щелкните левой кнопкой еще раз для формирования круга, аналогичного изображенному на рисунке 3c. Наконец, выберите инструмент Push/Pull еще раз, переместите курсор вверх и создайте цилиндр, показанный на рисунке 3d. Если переместить курсор вниз, можно создать цилиндрическое отверстие в параллелепипеде.

Этот базовый пример очень прост, но возможности SketchUp намного больше. Более полные уроки приведены на учебном сайте SketchUp (см. раздел Ресурсы). Поработайте с ними самостоятельно. После завершения работы просмотрите видеоматериалы по темам среднего и повышенного уровня сложности, чтобы лучше узнать и богатых возможностях SketchUp.

SketchUp Ruby Console

Хотя рисование в SketchUp является увлекательным занятием, я предпочитаю создавать дизайн в коде. Чтобы увидеть, как это делается в SketchUp, выберите Window > Ruby Console для отображения окна с интерфейсом командной строки в нижней части и окном вывода результатов в верхней. Вводя код в командной строке, можно создавать и изменять фигуры в окне проекта. Перед началом работы удалите все существующие фигуры, выбрав инструмент Selection и нажав комбинацию клавиш Ctrl+a, а затем Delete. Затем в командной строке Ruby Console введите две следующие команды:

face = Sketchup.active_model.entities.add_face [0,0,0], [9,0,0], [9,9,0], [0,9,0]

face.pushpull –9

Эти команды написаны на Ruby, единственном языке программирования, который понимает SketchUp. Ruby является объектно-ориентированным языком, и первая команда создает объект face, который представляет прямоугольник в текущем проекте. Вторая строка создает параллелепипед, активизируя метод pushpull() класса Face. На рисунке 4 показаны результаты, отображаемые в консоли после ввода обеих команд.

Рисунок 4. Окно SketchUp Ruby Console
Рисунок 4. Окно SketchUp Ruby Console

Теперь, посмотрев в окно проекта SketchUp, вы увидите куб (9x9x9), касающийся начала координат. Для приближения изображения выберите инструмент Zoom Extents. При помощи инструментов SketchUp можно перемещать, масштабировать и вращать эту фигуру.

Командная строка - это хорошо, но серьезные программисты помещают этот код в файлы, для того чтобы не нужно было повторно вводить все наши команды. Доступ к файлу осуществляется командой load, которая считывает сценарий Ruby (*.rb) и указывает интерпретатору Ruby SketchUp выполнить все команды. Я создал пример сценария lathe.rb (см. раздел Загрузка). Этот сценарий создает гладкую фигуру, используя метод вытягивания, отличный от механизма Push/Pull, описанного выше. После загрузки данный сценарий можно выполнить при помощи следующей команды (предполагается, что сценарий находится в папке C:\test):

load "C:/test/lathe.rb"

Теперь SketchUp выполняет команды в lathe.rb и отображает гладкую фигуру, как показано на рисунке 5.

Рисунок 5. Пример гладкой фигуры
Рисунок 5. Пример гладкой фигуры

SketchUp Bridge

Соображения по Ruby и Eclipse

SketchUp API основан на Ruby, относительно новом языке программирования, первоначально использовавшемся для корпоративных вычислений (Ruby on Rails). Я никогда не программировал на Ruby до SketchUp и не сомневаюсь, что многие находятся в таком же положении. Этот язык несложен в изучении и по сравнению с языками программирования C, C++ и Java™ имеет много преимуществ, таких как итераторы и простой синтаксис. Но, без сомнения, мне было бы лучше, если бы создатели SketchUp основали свой API на более популярном языке.

Фирма Google не создавала SketchUp; она получила приложение, когда приобрела @Last Software. Но поскольку в Google работает много Java-программистов, было бы замечательно, если бы они изменили API с Ruby на технологию Java. Тогда он стал бы более популярным в образовательных учреждениях, а 3-D-дизайнеры смогли бы использовать все инструментальные средства с открытыми исходными кодами, предоставляемые технологией Java. Программа SketchUp была бы не только "3-D для всех", но и "3-D-кодированием для всех".

Было бы еще лучше, если бы возможности SketchUp были реализованы внутри плагина Eclipse. Тогда, кроме окна проекта, мы имели бы все навигаторы по ресурсам, окна debug/outline/console и интеграцию с CVS/SVN. И это не было бы очень сложной задачей: среда Eclipse Graphical Editor Framework (GEF) может базироваться на OpenGL точно так же, как и SketchUp. Тогда SketchUp могла бы составить реальную конкуренцию AutoCAD. Google, если вам нужны добровольцы, напишите мне.

SketchUp позволяет загружать командные сценарии, но не предоставляет какого-нибудь редактора сценариев. В результате большинство разработчиков сценариев кодируют сценарии в отдельном приложении и загружают их в окно консоли Ruby. Мы можем поступить лучше. Приложение SketchUp Bridge предоставляет возможность выполнять сценарии Ruby вне SketchUp. Это означает, что вам никогда не нужно будет вводить команды в окне консоли. Ниже я объясню, как обратиться к SketchUp Bridge из Eclipse. Но пока основным приоритетом является установка файлов SketchUp Bridge и проверка их работы.

Получение и установка SketchUp Bridge

SketchUp Bridge был разработан таинственными людьми с сайта plugins.ro, девизом которых являются слова "Инструменты, делающие вас счастливыми". Его лицензия разрешает свободный доступ к программному обеспечению для персонального использования. Для коммерческого использования требуется разрешение от автора, имя которого указано как TBD (Пока не установлено). Для получения программы посетите сайт plugins.ro (см. раздел Ресурсы) и нажмите ссылку bridge.zip. После загрузки и разархивирования вы найдете три важных файла:

  • bridge_load.rb - Ruby-сценарий, служащий в качестве плагина для SketchUp.
  • Bridge.so - библиотека подпрограмм, к которым обращается плагин bridge_load.
  • SUB.exe - Windows-приложение, выполняющее сценарии SketchUp вне SketchUp.

Для установки SketchUp Bridge поместите первые два файла в подкаталог Plugins каталога установки SketchUp. На моей системе таким каталогом является C:\Program Files\Google\Google SketchUp 7\Plugins. Поскольку bridge_load.rb - это Ruby-сценарий в каталоге Plugins, он будет автоматически загружаться при запуске SketchUp. Размещение в этом каталоге отличает плагин SketchUp от обычного сценария.

Тестирование моста

До начала совместной работы SketchUp Bridge с Eclipse вам следует убедиться в том, что все работает правильно:

  1. Загрузите сценарий lathe.rb (см.раздел Загрузка) и поместите его в ту же папку, в которой находится приложение SUB.exe, полученное с SketchUp Bridge. Эта папка может быть где угодно, не обязательно в каталоге SketchUp Plugins.
  2. Запустите SketchUp или перезапустите ее, если она уже работает.
  3. Откройте окно командной строки Windows и перейдите в каталог, содержащий SUB.exe и сценарий lathe.rb.
  4. Введите команду SUB lathe.rb.

Приложение SUB указывает SketchUp прочитать команды из lathe.rb. Интерпретатор Ruby SketchUp выполняет команды, а результаты работы (показанные на рисунке 5) отображаются в окне проекта. Такое размещение особенно удобно при наличии двух мониторов. В этом случае вы можете редактировать сценарий на одном мониторе и просматривать проект SketchUp на другом.


Eclipse и SketchUp Bridge

Я страстный поклонник Eclipse, и когда мне нужно написать код на новом языке, первое, что я ищу, - функциональность Eclipse, предоставляющую поддержку файлов и возможность редактирования, которые делают мою работу максимально продуктивной. Раньше был доступен Ruby Development Toolset (RDT), но он стал частью программы Aptana RadRails, которая сейчас является подключаемой функциональностью для Aptana Studio. Вы можете загрузить Aptana Studio и RadRails, но процесс установки длителен и запутан. Кроме того, если вам нужен только редактор Ruby, нет смысла загружать 30-дневную пробную версию гигантской системы Aptana Studio.

Поскольку имеющиеся инструментальные средства работы с Ruby меня не удовлетворяли, я написал собственный простой плагин Eclipse, который опрометчиво назвал SketchUp Software Development Kit, или SketchUp SDK. Ссылки для его загрузки приведены в разделе "Загрузка". Плагин предоставляет две основные функциональные возможности: редактор Ruby и элемент панели инструментов, загружающий приложение SketchUp Bridge. В данном разделе объясняется, как установить плагин, и демонстрируется, как редактируются и выполняются сценарии.

Примечание. Данная тема, может быть, несколько запутана, поэтому позвольте мне уточнить терминологию. В официальной документации по Eclipse для дополнений (add-on) используется термин plug-in (плагин). В официальной документации по SketchUp используется термин plugin (без дефиса). SketchUp API -это набор классов Ruby, модулей и методов, позволяющих обращаться в коде к проекту SketchUp. SketchUp SDK - это plug-in Eclipse, являющийся интерфейсом к SketchUp через SketchUp Bridge, содержащий plugin SketchUp. SketchUp SDK и SketchUp Bridge - совершенно различные системы, но первая использует вторую, реализуя интерфейс к SketchUp из Eclipse.

Установка SketchUp SDK

SketchUp SDK является общедоступным и, поскольку SketchUp Bridge работает только на Windows, SDK тоже работает только на Windows. После загрузки необходимо выполнить четыре следующих шага:

  1. Загрузите архив SketchUp Bridge и поместите файлы Bridge.so и bridge_load.rb в каталог Plugins SketchUp.
  2. Разархивируйте файл sketchup_sdk.zip и поместите SUB.exe (один из файлов SketchUp Bridge) в подкаталог exe главного каталога org.dworks.susdk_1.0.0.
  3. Переместите каталог org.dworks.susdk_1.0.0 в подкаталог plugins главного каталога вашей установки Eclipse.
  4. Запустите или перезапустите SketchUp и Eclipse.

Чтобы не запутаться в файлах и каталогах, позвольте мне описать структуру каталогов на моем компьютере. Я установил Eclipse в C:\eclipse, и моим главным каталогом SketchUp является C:\Program Files\Google\Google SketchUp 7. Следовательно, файлы SketchUp Bridge (Bridge.so, bridge_load.rb и SUB.exe) размещены в следующих местах:

  • C:\Program Files\Google\Google SketchUp 7\Plugins\Bridge.so
  • C:\Program Files\Google\Google SketchUp 7\Plugins\bridge_load.rb
  • C:\eclipse\plugins\org.dworks.susdk_1.0.0\exe\SUB.exe

Создание и выполнение сценариев при помощи SketchUp SDK

Если вы поместили плагин SDK и файлы моста правильно, можете приступать к кодированию. Процесс разработки сценариев SketchUp в Eclipse состоит из трех этапов:

  • Создание сценария Ruby (*.rb) в Eclipse.
  • Добавление команд SketchUp в сценарий.
  • Нажатие SUB в панели инструментов для выполнения сценария внутри SketchUp.

На рисунке 6 показана среда редактирования.

Рисунок 6. SketchUp SDK
Рисунок 6. SketchUp SDK

Если вы знакомы с Eclipse, вам, вероятно, не нужны дальнейшие инструкции. Но на всякий случай просмотрите следующее описание для прояснения процедуры:

  1. Выберите в Eclipse File > New > Project.
  2. Откройте папку General, выберите Project и нажмите кнопку Next.
  3. Введите my_project в качестве названия проекта, затем нажмите кнопку Finish.
  4. В Eclipse Package Explorer щелкните правой кнопкой мыши на my_project, затем нажмите New > File.
  5. Введите my_script.rb в качестве названия сценария SketchUp, затем нажмите кнопку Finish.
  6. Скопируйте текст из lathe.rb в редактор Eclipse и сохраните содержимое сценария.
  7. В панели инструментов Eclipse выберите SUB для доступа к SketchUp Bridge и передачи сценария из редактора в SketchUp. Можно также использовать комбинацию клавиш Ctrl+Shift+Space.
  8. Откройте SketchUp, увеличьте масштаб отображения, и вы увидите некую гладкую фигуру, как показано на рисунке 5.

Теперь у вас должна быть настроена среда SketchUp-Eclipse и вы должны понимать основы рисования в SketchUp. В следующей статье мы более подробно рассмотрим язык Ruby и код сценария SketchUp.


Заключение

Несмотря на простоту приложения Google SketchUp в использовании и изучении, оно имеет очень широкие возможности. SketchUp предоставляет множество функциональных возможностей для моделирования вашего проекта и управления всеми аспектами его внешнего вида и геометрии. Одной из самых важных возможностей SketchUp является его интерпретатор сценариев, выполняющий сценарии Ruby, создающие, изменяющие и удаляющие аспекты проекта SketchUp. Но, хотя SketchUp и предоставляет интерпретатор сценариев, в нем нет редактора; здесь в игру вступает Eclipse.

Для подключения Eclipse к SketchUp необходимо сначала загрузить SketchUp Bridge. Это приложение состоит из трех файлов, которые при правильном размещении позволяют выполнять сценарии SketchUp вне окна консоли SketchUp. Затем необходимо загрузить и установить плагин SketchUp SDK в Eclipse. Этот простой SDK предоставляет возможность редактирования сценариев и выполнения их в SketchUp одним нажатием кнопки.


Загрузка

ОписаниеИмяРазмер
Плагин Eclipse - интерфейс к SketchUpos-eclipse-sketchup1_sdk.zip29 КБ
Ruby-сценарий для создания плоской фигурыos-eclipse-sketchup1_lathe.zip1 КБ

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

  • Новостные группы Eclipse Platform должны быть для вас первым источником ответов на вопросы, касающиеся платформы Eclipse. (Выбор данной ссылки загрузит ваше приложение по умолчанию, предназначенное для чтения новостей Usenet, и откроет eclipse.platform.(EN))
  • В новостных группах Eclipse размещено много ресурсов для людей, интересующихся использованием и расширением Eclipse.(EN)
  • Принимайте участие в блогах developerWorks и подключайтесь к сообществу developerWorks.(EN)

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source
ArticleID=559372
ArticleTitle=Трехмерное моделирование с использованием SketchUp и Eclipse: Часть 1. Создание моста между SketchUp и Eclipse
publish-date=10292010