Susanとペンローズタイル

当研究室ではグラフィソフト社のArchiCADをメインで使っていますが、某「異種CAD間での協調設計」研究を始めるに際し、ArchiCADとペアになるCADを検討しています。その関係でSketchUpを評価することになりました。

本研究に興味のある方はお問い合わせください。広く共同研究パートナーを募集します。

当研究室の研究ではなんらかの方法でCADをカスタマイズして使うことになるわけですが、ArchiCADのGDLのように、SketchUpにもスクリプト環境が備わっています。ただし、Ruby言語で、好みは分かれるでしょう。さらに。SketchUpのRubyにはデバッグ環境もなく、いわゆるPRINTデバッグになります。ちょっと他人にはお勧めしにくい環境ではあります。

とはいうものの、使っているうちに馴れてくるもので、冒頭の絵のようにSusanの足下にペンローズタイルの模様を描くぐらいはできるようになりました。

ただ、ちょっと変わったクセがSketchUpにはありまして、それは 以下の図に示すような振る舞いです。この振る舞いがあるので、タイルのモデリングが画期的に楽になりました。

普通に線分を描き(①)、それにクロスするように線分を描く(②)と、それらの線分を交点で勝手に分割して(③)しまうのです。なぜこんな機能が実装されているのかと考えましたが、おそらく、線分で囲まれた最小の領域をその都度検出して処理対象にしたいからだと思われます。SketchUpのGUIは全く使わないでいきなりRubyスクリプトを書き始めましたので、こんなクセがあることになかなか気づかず、ずいぶん苦労させられました。

しかしまあ、クセがわかれば対策もうてますので、目的のプログラムそのものは完成しましたが、苦労させられたせいか、このクセを逆に利用できないのか、検討してみました。それが冒頭の図のペンローズタイルです。

上の図の左側で、L-Systemで描いたペンローズタイルの図柄の各タイルの4辺が選択されているのがわかります。この段階ではまだ面(Face)を生成していません。元図がL-System由来ですから、タイル毎に対になる4辺を特定するのはものすごく大変でやる気がしない仕事なのですが、SketchUpが勝手にやってくれました。辺(Edge)が特定されれば、そこに面(Face)を張るのはとても簡単ですので、この後の作業はRubyスクリプトを書き足すだけです。面を引き延ばしてソリッドにし、タイルの体積で色(マテリアル)を変えています。タイルを少しだけ縮小して目地も作っています。これらを全てマウスを使わずRubyスクリプトだけで済ませられました。

イスラームタイルなどの方が、普通にマウスで製図してからRubyスクリプトで3Dモデルにまで持っていけるわけで、より効果的でありがたい手法かもしれません。タイルを並べる手続きを書くのは面倒ですから。

コメント (0件)


HLAB
http://www.hlab-arch.jp/article.php/20130619223400196