JST投稿者:ゲストユーザ第8回ではGDLプログラミングマニュアルの8章で紹介している「他言語からGDLを使う」方法を学習しました。GDLもプログラミング言語ですので、人の手では描きにくい曲面、あるいはそれに円柱を適応させた立体トラスなどをプログラミングできますが、C言語やPythonなどの汎用プログラミング言語により複雑な処理を任せ、計算結果をGDLスクリプトとして出力させるといった分業が効果的なシーンもあります。ここでは、こういった分業の例として、パーリンノイズを用いた地形と、再帰によるシェルピンスキーのギャスケットを紹介します。下図左の地形はMESHに単純な乱数を高さに与えることで生成したものです。これはC言語からの書き出しで行いましたが、GDLには乱数を発生させるRNDコマンドが用意されていますので、パラメータバッファを用いてMESHコマンドに渡してあげれば同様のモデルを作成することができます。ここに単純な乱数ではなく、パーリンノイズのようなアルゴリズムを適用することを考えます。パーリンノイズとはCGの世界で地形や雲、炎などを自然に表現するために用いられるアルゴリズムです。パーリンノイズでgoogle検索などして頂けるとC#などでの実装を紹介するウェブサイトがありますが、ちょっとGDLへの移植はしたくありませんね...。このように、GDLでは実装しにくいアルゴリズムや、他言語ですでに実装したものがある場合、その言語によるプログラミングからGDLの書式に合わせたテキストを書き出すという方法が思いつきます。下図右はパーリンノイズをC言語で実装したプログラミングからGDLスクリプト(のテキスト)を出力し、それをGDLの3Dスクリプト欄にコピペしています。シェルピンスキーのギャスケット次はシェルピンスキーのギャスケット(の三次元版)です。1の「DivideTetra」関数で四面体を四つの四面体に分割し、それぞれが「DivideTetra」関数を呼び出すことで再帰しています。今回の講習会的にポイントなのは2の「WriteGDL」関数ですね。ここで計算結果としてもとめた頂点情報をもとにGDL形式のテキスト形式で書き出しています。再帰図形をGDLで実装できなくはないですが、関数やクラスなど便利な機能が用意されている言語を用いて分業したほうが合理的な場合もあるかと思います。他言語で得意なものをお持ちの場合もテクニックやアルゴリズムが使いまわせて効果的でしょうか。今回紹介した分業には、デメリットとしてGDLのパラメトリックな性質が活かしにくいという点があります。このシェルピンスキーのギャスケットでは、計算処理をC言語に依っているため、GDLとしては再帰数を変えるなどのパラメトリックな操作ができない点には注意が必要です。HLAB本ページのすべての商標と著作権はそれぞれの所有者に帰属します。