※本記事は、旧サイト「How to use Archicad」より、kotetsuさん の2021年3月4日の記事を転載しています。
複雑な形状や、移動ホットスポットなどでグラフィカルかつパラメトリックに形状が変わるオブジェクトは気をつけて作成しないとすぐに重くなってしまいます。
そこで、軽いGDLオブジェクトをつくるための4つのコツをご紹介します。
1.PROJECT2を(なるべく)使わない
PROJECT2コマンドは3Dスクリプトの形状をそのまま2D表示出来るので便利ですが、3Dを2Dに投影している関係上、2D表示時の動作はかなり重くなってしまいます。
そのため、平面表現は、出来る限り2Dスクリプトで別途記述することをオススメします。
PROJECT2で投影しつつ、重なるように2Dスクリプトを記述していき、最後にPROJECT2をコメントアウトする書き方が良いと思います。
また、複雑な部分一部分だけをPROJECT2で表示して、他の部分を2Dスクリプトで記述することも可能です。
<2Dスクリプト>
PROJECT2 3,270,3
<3Dスクリプト>
IF GLOB_VIEW_TYPE # 2 THEN !平面図表示を除く
SPHERE 1
ENDIF
ADDX 1
BRICK 1,1,1
<平面図>
<3D>
このようにすると、2Dスクリプトには立方体(正方形)だけが表示され、球が表示されないので、別途CIRCLE2などで円を2Dスクリプトに記述します。
2.RESOLで角数を減らす
球や円柱など曲線が多いオブジェクトではRESOLコマンドで角数を減らすと劇的に軽くなります。
円柱の側面からの見た目は角数を減らしても変わりませんが、小口が角数に応じた形状になってしまいます。
<RESOL = 4>
<RESOL = 32>
編集中は角数を減らし、BIMxなどで出力する際は角数を上げられるように、パラメータスクリプトで変更出来るようにしておくと良いでしょう。
<パラメータスクリプト>
VALUES "res" 4,8,16,32
<3Dスクリプト>
RESOL res
さらに、MASTER GDLスクリプトを利用するとMVO(モデル表示オプション)を利用して複数のオブジェクトの角数をまとめて変更出来るようにするとより使い勝手が良いです。
MASTER GDLスクリプトに関しては下記のページや動画が参考になるかと思います。
http://gdl.graphisoft.com/tips-and-tricks/custom-made-model-view-options-object (英語)
https://www.youtube.com/watch?v=S7nGqKg7iQM (日本語)
3.移動ホットスポット時にMODEL WIRE表示にする
移動ホットスポットを動かしている時、かなり動作が重くなります。
下記の記述で、移動ホットスポットを動かしている時だけワイヤーフレーム表示になるので、移動中の表示負荷が減り、軽くなります。
(ただし、移動確定したときに少し処理がもたつきます)
<3Dスクリプト>
IF GLOB_FEEDBACK_MODE = 1 THEN !移動ホットスポットを動かしているとき
MODEL WIRE
ENDIF
4.作り込みすぎない
身も蓋もないですが、細かい作りこみをせずにポリゴン数を減らせば動作が軽くなります。
[ウィンドウ] > [パレット] > [ポリゴンパレット]でポリゴン数を表示して、重くなりすぎないようにします。
こだわりたい気持ちをぐっと抑えて、検討に必要な最低限のLOD(Level of Detail)で作ることを心掛けましょう。
紹介した以外にも、事足りる場合は実数値よりも整数値を使うなどのGDLリファレンスガイドに載っています。
GDLリファレンスガイドで「速度の問題」で検索してみましょう。
せっかく作ったのに「重くて使えないよ!」と言われないよう、軽く高機能なオブジェクトを作りましょう。