レベル: 中級 Matthew Scarpino, Java Developer, Eclipse Engineering, LLC
2009年 04月 14日 Google の最近のツールでとりわけ人気を集めている SketchUp は、3D モデリング作業の苦労を取り除いてくれるツールです。しかも SketchUp は手動でモデルを作成する作業を容易にするだけでなく、設計プロセスを Ruby スクリプトによって自動化することもできます。これらの Ruby スクリプトを管理および編集する作業は非常に重要なことから、Eclipse のような完全な機能を備えた開発環境があると役に立ちます。この記事を読んで、Eclipse でスクリプトを編集し、そのスクリプトを SketchUp で自動的に実行できるように SketchUp と Eclipse を構成する方法を学んでください。
最近のプロジェクトで 3D モデリングが不可欠なタスクになってきたことから設計ツールを必死になって探していた私は、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 Bridgeを介して SketchUp と通信するカスタム Eclipse プラグインを作成しました。
今回の記事では SketchUp について簡単に紹介した後、SketchUp Bridge がどのように機能するか、そして Eclipse を SketchUp に接続するプラグインのインストール手順を説明します。SketchUp API の詳細、そして作成可能なモデルのタイプについては、この連載「SketchUp と Eclipse による 3D モデリング」の次回の記事で説明します。
SketchUp モデリング・ツール
Google のサイト自体と同じく、Google SketchUp では単純なインターフェースの下に大量の機能が用意されています。SketchUp の狙いは「誰でも使える 3D」を提供することです。この目標は見事に達成されていて、基本的な 2D の形状を描画してそこから 3D の形状を作成する方法は 5 分で覚えられます。そしてあれこれ操作しているうちに、30 分もすればツールバーのすべてのツールを使いこなせるようになるはずです。図 1 に、SketchUp の UI を示します。モデリング・ツールのように見えますが、SketchUp はおもちゃのような感覚で操作できます。
図 1. SketchUp の UI
Blender とは違って、SketchUp はオープンソースではありません。このツールは Google の独自ライセンスにより、あらゆる (法的に分類された) 用途での使用が許可されます。また、プラグインで SketchUp を拡張することもできますが、ソース・コードは入手できません。SketchUp は Windows® または Apple Mac OS X が稼働するコンピューター上で動作し、2 つのバージョンが用意されています。1 つは無料バージョン、そしてもう 1 つは 495 米ドルで購入する SketchUp Pro という名前の有料バージョンです。SketchUp Pro にはプロ並みのレイアウトとスタイル、高度なファイル操作、そしてテクニカル・サポートが用意されています。その一方、無料バージョンにも豊富な機能が備わっているので、この記事を読み進める前に、SketchUp サイト (「参考文献」を参照) にアクセスして、SketchUp をダウンロードすることを是非ともお勧めします。
SketchUp の開始方法
SketchUp を初めて起動すると、どのテンプレートを使用するかを指定するように求められます。テンプレートによって、測定単位と全体的な設計ウィドウの外観が定義されます。テンプレートは、以下の 12 種類の選択肢のなかから選択することができます。
- 単純なテンプレート (フィートとインチ) — x-y 面を緑色、正方向の z 領域を明るい青色で表示します。
- 単純なテンプレート (メートル) — x-y 面を緑色、正方向の z 領域を明るい青色で表示します。
- 建築設計 (フィートとインチ) — x-y 面を暗い灰色、正方向の z 領域を明るい灰色で表示します。
- 建築設計 (ミリメートル) — x-y 面を暗い灰色、正方向の z 領域を明るい灰色で表示します。
- Google Earth モデリング (フィートとインチ) — x-y 面を緑色、正方向の z 領域を明るい青色で表示します。
- Google Earth モデリング (メートル) — x-y 面を緑色、正方向の z 領域を明るい青色で表示します。
- エンジニアリング (フィート) — 設計領域全体を白で表示します。
- エンジニアリング (メートル) — 設計領域全体を白で表示します。
- 製品設計および木工細工 (インチ) — x-y 面を暗い灰色、正方向の z 領域を明るい灰色で表示します。
- 製品設計および木工細工 (ミリメートル) — x-y 面を暗い灰色、正方向の z 領域を明るい灰色で表示します。
- 平面図 (フィートおよびインチ) — 設計領域全体を白で表示します (2D ビューから開始)。
- 平面図 (ミリメートル) — 設計領域全体を白で表示します (2D ビューから開始)。
測定単位の異なる 2 つのテンプレート間では、測定単位の他には大きな差はありません。私が作成するモデルはエンジニアリング・タイプなので、「エンジニアリング (メートル)」テンプレートを使用しています。
テンプレートを選択すると SketchUp 設計ウィンドウが現れます。このウィンドウに表示されているのは、原点と呼ばれる一点から始まる一連の線です。これらの線は座標系 (x,y,z) を定義します (図 1 を参照)。赤い実線は x 軸の正方向を、赤い点線は x 軸の負方向を表しています。緑の実線は y 軸の正方向を、緑の点線は y 軸の負方向を表し、青の実線は z 軸の正方向を、青の点線は z 軸の負方向を表しています。
SketchUp での描画方法
この記事で焦点とするのは SketchUp の自動化ですが、それよりも先に、まずは手動での操作方法を把握しておくべきです。そこで、2 つの単純な形状を作成してみます。Adobe® Photoshop® と Microsoft® Paint と同じく、SketchUp の描画プロセスに必要となるのもツールバーからツールを選択し、設計ウィンドウ内をクリックするという操作です。図 2 に、SketchUp の基本ツールバーを示します。
図 2. SketchUp の基本ツールバー
まず始めに、「長方形ツール (Rectangle Tool)」をクリックしてください。これは、長方形の平面を立体的に描画する際に使用するツールです。長方形を作成するには、設計ウィンドウで 2 点をクリックします。作成されるモデルの最初の形状は常に x-y 面に配置されるので、図 3 の (a) のような結果が表示されます。
図 3. SketchUp の単純な形状
続いて平面を 3 次元の図形にする「プッシュ/プル・ツール (Push/Pull Tool)」を使用して、長方形をボックスにします。「プッシュ/プル・ツール (Push/Pull Tool)」をクリックしてから長方形をクリックし、マウスを上方向に動かすと、SketchUp ウィンドウにボックスが現れます。マウスを上方向に動かすと、マウスの位置によってボックスの高さが変わります。マウスをもう一度クリックすると、図 3 の (b) のようなボックスが出来上がります。2D の形状から 3 D の形状を作成することを、SketchUp の用語では押し出し (extrusion) と呼びます。
次に、ボックスの上に円柱を描画します。「円ツール (Circle Tool)」をクリックし、次にボックス上面の中央をクリックします。マウスを中央から外側に向かって動かし、もう一度クリックして図 3 の (c) のような円の形にします。最後に、ここでも「プッシュ/プル・ツール (Push/Pull Tool)」をクリックし、マウスを上方向に動かして図 3 の (d) のような円柱を作成します。マウスを下方向に動かした場合には、ボックスに円柱形の穴を作成することができます。
以上は非常に簡単な基本的なレッスンですが、SketchUp で可能な操作はこれ以外にも山ほどあります。すべてを網羅したレッスンを受けるには、SketchUp トレーニング・サイト (「参考文献」を参照) にアクセスして、自習式チュートリアルを順に進めていってください。すべてのチュートリアルを完了したら、今度は中級から上級のトピックを取り上げたビデオを観てください。これで、SketchUp が持つ広範な機能を十分に理解できるようになるはずです。
SketchUp Ruby コンソール
SketchUp で描画するのは面白いものの、私はコードでモデルを作成するほうを選びます。コードでモデルを作成する方法がどのようなものかを見るには、SketchUp で「ウィンドウ」 > 「Ruby コンソール」の順にクリックしてください。この操作によって表示されるウィンドウには、下部にコマンドライン・インターフェース (CLI)、上部に出力ウィンドウがあります。CLI にコードを入力することで、設計ウィンドウ内で形状を作成および変更することができます。作業を始める前に、「選択ツール (Selection Tool)」をクリックし、それからCtrl+a に続いて Delete キーを押して、既存のすべての形状を消去してください。その上で、Ruby コンソールのコマンドラインに以下の 2 つのコマンドを入力します。
face = Sketchup.active_model.entities.add_face [0,0,0], [9,0,0], [9,9,0], [0,9,0]
face.pushpull -9
|
上記のコマンドは、SketchUp が認識する唯一のプログラミング言語、Ruby で作成されています。Ruby はオブジェクト指向なので、最初のコマンドで face という長方形を表すオブジェクトを現行の設計ウィンドウに作成します。2 番目の行では、Face クラスの pushpull() メソッドを呼び出すことによってボックスを作成します。図 4 は、両方のコマンドを実行した後にコンソールに表示される出力です。
図 4. SketchUp の Ruby コンソール・ウィンドウ
ここで、SketchUp 設計ウィンドウを見てみると、原点に頂点を持つ正方形のボックス (9x9x9) が作成されているはずです。このボックスにズームインしたビューを表示するには、「全体表示ツール (Zoom Extents Tool)」をクリックします。また通常の形状と同じように、SketchUp ツールを使用してボックスを移動、拡大縮小、回転することもできます。
CLI でもまったく問題ありませんが、きまじめなプログラマーである私たちとしては、コマンドを一から再入力しなくても済むようにファイルに配置します。ファイルにアクセスするには、load コマンドを使用します。このコマンドが Ruby スクリプト (*.rb) を読み取って、SketchUp の Ruby インタープリターにスクリプトの各コマンドを実行するように指示します。私はサンプル・スクリプトとして、lathe.rb というスクリプトを用意しておきました (「ダウンロード」セクションを参照)。このスクリプトは、上記で説明したプッシュ/プル・メカニズムとは別の押し出しメソッドを使って回転体を作成します。ダウンロードしたスクリプトを実行するには、以下のようなコマンドを使用します (このコマンドでは、スクリプトが C:\test フォルダーに置かれているという前提となっています)。
SketchUp が lathe.rb 内のコマンドを実行すると、図 5 の回転体が表示されます。
図 5. 回転体のサンプル
SketchUp Bridge
 |
Ruby と Eclipse についての思索
SketchUp API がベースとしている Ruby は、比較的新しいプログラミング言語で、主にエンタープライズ・コンピューティングで使用されています (Ruby on Rails)。私は SketchUp を使うまで Ruby でプログラミングを行ったことは一度もありませんでしたが、同じような立場の人は少なくないはずです。Ruby を習得するのは難しくありません。しかもこの言語には、例えばイテレーターや単純な構文など、C、C++、そして Java™ プログラミング言語に勝る多くの利点があります。しかし勘違いしないでください。SketchUp の作成者たちが Ruby よりも一般に使われている言語を SketchUp API のベースにしていれば、私にとってはその方が楽だったと思います。
SketchUp を作成したのは、Google ではありません。Google は @Last Software を買収する際にこのアプリケーションを取得しました。Google には Java プログラマーが大勢いるため、その際に SketchUp API を Ruby から Java 技術に変更していたとすれば、学界での人気はもっと高くなり、3D 設計者たちは Java 技術によって提供されるあらゆるオープンソースのツールを使用できたはずです。そうなれば、SketchUp は単なる「誰でも使える 3D」というだけでなく、「誰でもコーディングできる 3D」になっていたでしょう。
さらに、SketchUp の機能が Eclipse プラグインとして実装されていればもっと良かったと思います。そうなれば、設計ウィンドウに加え、Eclipse が提供するあらゆるリソース・ナビゲーターや、デバッグ/概要/コンソールの各ビュー、そして CVS/SVN 統合なども利用することができました。また、SketchUp と同じく OpenGL をベースに Eclipse GEF (Graphical Editor Framework) を作成するのもそれほど難しい作業ではないので、SketchUp はまさに AutoCAD の競合となっていたはずです。Google の皆さん、ボランティアをお探しでしたら私に E メールを送ってください。
|
|
SketchUp はコマンド・スクリプトをロードすることはできても、スクリプト・エディターの類は一切提供していません。そのため、ほとんどのスクリプト開発者は別のアプリケーションでスクリプトをコーディングしてから、Ruby コンソール・ウィンドウにスクリプトをロードしています。しかし、それよりも賢い方法があります。それは、SketchUp Bridge によって SketchUp 外部で Ruby スクリプトを実行できるようにすることです。そうすれば、コンソール・ウィンドウにコマンドを入力する必要は一切ありません。Eclipse から SketchUp Bridge にアクセスする方法については後で説明するとして、とりあえず何よりも先に行わなければならない作業は、SketchUp Bridge ファイルをインストールして、このファイルがどのように機能するかを確認することです。
SketchUp Bridge を入手してインストールする方法
SketchUp Bridge は、plugins.ro のミステリアスな人々によってリリースされました。称賛に値する彼らのモットーは、「人を幸せにするツール」です。このソフトウェアは、非営利目的での使用は無料で許諾されます。営利目的で使用する場合には、TBD としてしか名前が公表されていない作成者から許可を受ける必要があります。このソフトウェアを入手するには、plugins.ro のサイト (「参考文献」を参照) にアクセスして、bridge.zip のリンクをクリックしてください。アーカイブをダウンロードして解凍すると、そこには以下の 3 つの重要なファイルが含まれているはずです。
- bridge_load.rb — SketchUp のプラグインとして機能する Ruby スクリプト
- Bridge.so — bridge_load プラグインがアクセスするルーチンを集めたライブラリー
- SUB.exe — SketchUp スクリプトを SketchUp 外部で実行する Windows アプリケーション
SketchUp Bridge をインストールするには、上記のうちの最初の 2 ファイルを、最上位の SketchUp インストール・フォルダー内にある Plugins フォルダーに配置します。私のシステムでは、このフォルダーは C:\Program Files\Google\Google SketchUp 7\Plugins です。bridge_load.rb は Plugins フォルダー内に置かれるため、SketchUp の起動時に自動的にロードされます。このフォルダー配置によって、通常のスクリプトと SketchUp プラグインが区別されます。
ブリッジのテスト
SketchUp Bridge と Eclipse を相互作用させる前に、以下の手順に従って、すべてが正しく機能することを確認する必要があります。
- lathe.rb スクリプト (「ダウンロード」を参照) をダウンロードし、SketchUp Bridge に付属の SUB.exe アプリケーションと同じフォルダーに配置します。このフォルダーは、SketchUp の Plugins フォルダー内でなくても、コンピューター上のどこかに存在していればそれで構いません。
- SketchUp を起動します。すでに実行中の場合は再起動してください。
- Windows コマンド・プロンプトを開き、SUB.exe と lathe.rb スクリプトが含まれるフォルダーに移動します。
- コマンド
SUB lathe.rb を入力します。
SUB アプリケーションが SketchUp に lathe.rb 内のコマンドを読み取るように指示します。すると SketchUp の Ruby インタープリターがこれらのコマンドを実行し、その結果が設計ウィンドウに表示されます (図 5 を参照)。この仕組みは、モニターが 2 台ある場合には特に重宝します。その場合、一方のモニターでスクリプトを編集しながら、もう一方のモニターで SketchUp モデルを表示することができます。
Eclipse と SketchUp Bridge
筋金入りの Eclipse ファンである私は、新しい言語でコードを作成する必要が出てくると、真っ先に Eclipse のフィーチャーを調べます。私の作業をとてつもなく生産的にするファイル・サポートと編集機能を提供する Eclipse フィーチャーがないかどうかを調べるわけです。以前は RDT (Ruby Development Toolset) を使用できましたが、このツールセットは Aptana の RadRails ツールに組み込まれ、今では Aptana Studio のアドオン・フィーチャーとなっています。Aptana Studio と RadRails をダウンロードすることはできますが、インストール・プロセスは複雑で時間がかかります。その上、Ruby エディターしか必要ないというのに、途方もなく大きな Aptana Studio の 30 日間評価版をダウンロードするだけの価値はありません。
既存の Ruby ツールに満足できなかった私は、独自の単純な Eclipse プラグインを作成しました。無謀にも、この自作のプラグインに付けた名前は SketchUp SDK (SketchUp Software Development Kit) です。このプラグインは「ダウンロード」セクションからダウンロードすることができます。SketchUp SDK プラグインが提供する主要な機能は、Ruby エディター、そして SketchUp Bridge アプリケーションを起動するツールバー・アイテムの 2 つです。このセクションでは SketchUp SDK プラグインのインストール方法と、スクリプトがどのように編集され、実行されるかを説明します。
注: このセクションの内容は混乱しやすいので、使用する用語を明確にしておきます。公式 Eclipse ドキュメントでアドオンを表す用語は、プラグイン (plug-in) です。一方、公式 SketchUp ドキュメントでは、プラグイン (ハイフンなしの plugin) という言葉を使用しています。SketchUp API は、Ruby クラス、モジュール、および SketchUp モデルにコードでアクセスするためのメソッドを集めたセットです。SketchUp SDK は Eclipse プラグインであり、SketchUp プラグインが含まれる SketchUp Bridge を介して SketchUp とやりとりします。SketchUp SDK と SketchUp Bridge はまったく別のものですが、SketchUp SDK は SketchUp Bridge を利用して、Eclipse から SketchUp の操作を行います。
SketchUp SDK のインストール方法
公開ドメインである SketchUp SDK は、SketchUp Bridge が Windows 専用であることから、Windows でのみ動作します。SketchUp SDK をダウンロードした後に実行しなければならないタスクには、以下の 4 つがあります。
- SketchUp Bridge アーカイブをダウンロードし、Bridge.so と bridge_load.rb を SketchUp の Plugins フォルダーに配置します。
- sketchup_sdk.zip を解凍し、SUB.exe (SketchUp Bridge ファイルのうちの 1 つ) を、最上位の org.dworks.susdk_1.0.0 フォルダーの下にある exe フォルダーに配置します。
- org.dworks.susdk_1.0.0 フォルダーを、最上位の Eclipse インストール・フォルダー内にある plugins フォルダーに移します。
- 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 でスクリプトを作成して実行する方法
SketchUp SDK プラグインと SketchUp Bridge ファイルを正しい場所に配置する作業が完了したら、早速コードの作成に取り掛かれます。Eclipse で SketchUp スクリプトを開発するプロセスには、以下の 3 段階があります。
- Eclipse で Ruby スクリプトを作成する
- スクリプトに SketchUp コマンドを追加する
- ツールバー上の SUB をクリックして、SketchUp 内部でスクリプトを実行する
図 6 に、編集環境を示します。
図 6. SketchUp SDK
Eclipse を使い慣れている方には、この後の作業手順についての説明は不要だと思いますが、念のため、以下のプロセスでこの手順を明確にしておきます。
- Eclipse で「ファイル」 > 「新規」 > 「プロジェクト」の順に選択します。
- 「一般」フォルダーを開き、「プロジェクト」を選択して「次へ」をクリックします。
- プロジェクトの名前として
my_project と入力し、「終了」をクリックします。
- Eclipse の「パッケージ・エクスプローラー」で my_project を右クリックし、「新規」 > 「ファイル」の順に選択します。
- SketchUp スクリプトの名前として
my_script.rb と入力し、「終了」をクリックします。
- lathe.rb のテキストを Eclipse エディターに貼り付け、スクリプトの内容を保存します。
- Eclipse ツールバーの SUB をクリックして SketchUp Bridge にアクセスし、現行のエディター内にあるスクリプトを SketchUp に送信します。または、ショートカット・キーの Ctrl+Shift+Space を使うという方法もあります。
- SketchUp を開いてズームインすると、図 5 と同じ回転体が表示されているはずです。
ここまでのところで、読者の皆さんは SketchUp-Eclipse 環境をセットアップし、SketchUp での描画に関する基本知識を学びました。次回の記事では、Ruby 言語、そして SketchUp スクリプト内のコードをさらに詳しく探っていきます。
まとめ
Google の SketchUp アプリケーションは操作するにも理解するにも単純かもしれませんが、だからといって機能に欠けるというわけではありません。SketchUp は、モデルをモジュール化し、その外観や形状のあらゆる側面を制御するための豊富な機能を提供します。SketchUp でとりわけ重要な機能の 1 つは、スクリプト・インタープリターです。このインタープリターが Ruby スクリプトを実行して、SketchUp モデルを作成したり、モデルの特徴を変更および削除したりします。しかし、SketchUp にはスクリプト・インタープリターが用意されているものの、エディターはありません。そこで活躍するのが Eclipse です。
Eclipse を使用して SketchUp の操作を行うためには、まず、SketchUp Bridge をダウンロードしなければなりません。このアプリケーションを構成する 3 つのファイルを正しく配置すれば、SketchUpのコンソール・ウィンドウ外部で SketchUp スクリプトを実行できるようになります。次に必要となるのは、SketchUp SDK プラグインをダウンロードして Eclipse 内部にインストールすることです。この単純な SDK が、スクリプトを編集し、ボタンをクリックするだけでスクリプトを SketchUp で実行することを可能にします。
ダウンロード | 内容 | ファイル名 | サイズ | ダウンロード形式 |
|---|
| Eclipse plug-in that interfaces with SketchUp | os-eclipse-sketchup1_sdk.zip | 29KB | HTTP |
|---|
| Ruby script to create a lathed shape | os-eclipse-sketchup1_lathe.zip | 1KB | HTTP |
|---|
参考文献 学ぶために
製品や技術を入手するために
議論するために
著者について  | |  | Matthew Scarpino は、Eclipse Engineering LLC のプロジェクト・マネージャーであり、Java 開発者です。彼は SWT/JFace in Action の主執筆者であり、また SWT (Standard Widget Toolkit) に対して、小さいながらも重要な貢献をしました。彼が好きなものはアイルランドの民族音楽やマラソン、William Blake の詩、そして GEF (Graphical Editing Framework) です。 |
記事の評価
|