スクリプティングについての第二回はじめに今回は、ポリゴンスクリプトを使って、子オブジェクトをコピーするクリエータオブジェクトを作成してみます。この関数内でオブジェクトのプロパティを定義します。この関数は、オブジェクトがシーンに追加された時に、呼ばれます。ビューでの描画を定義します。オブジェクトの描画アップデートが必要な時に、その都度呼ばれます。エディタで新規ファイルを作成し、以下のコードをコピペして下さい。以下のコードでは、とりあえず空の関数を定義しています。{}2つの関数とも、引数として自身のオブジェクトの参照が渡されます。関数内で、実際の描画コードを記述していきます。関数は、自身のパラメータが変更されるタイミング意外にも、親オブジェクトの更新といったシーングラフの更新時にも毎回呼ばれます。関数内では、自身のプロパティを定義します。いう名前の整数のパラメータを追加しています。呼び出してシーングラフを更新するかどうか)になります。ここで、一度ファイルを保存しシーンに呼び出してみます。フォルダに保存します。一度スクリプトメニューから、シーンに呼び出してみましょう。ビューには何も描画はされませんが、オブジェクトリストビューには、スクリプトオブジェクトが登場していると思います。パラメータが、ポリゴンスクリプトのプロパティパネルに表示されていることを確認して下さい。その他、プロパティにパラメータを追加する関数は以下のようなものがあります。これらの関数は、プロパティを定義できる他のタイプのスクリプト(スプライン/ツール)でも共通です。build)論理値を追加します。functionname)ボタンを追加します。第3引数で指定した関数が、自身のオブジェクトの参照を引数として呼ばれます。build)浮動小数点数を追加します。build)整数を追加します。paraname)プロパティパネルにタイトル付きのセパレータを追加します。options)選択リストを追加します。第2引数には、選択リストのラベル文字列の配列を設定します。型のインデックスです。(この関数はヘルプファイルに記載されていません。buildObjectそれでは、実際の描画コードを書いていきましょう。オブジェクトに対して描画関数を実行していきます。3角形を描くコードは下記のようになります。);}ここスクリプトメニューから、シーンに追加してみましょう。3角形が表示されていると思います。オブジェクトにポリゴンを追加する関数には2種類あります。)追加済み頂点(ポイント)のインデックス番号を使用して、ポリゴンを生成します。戻り値は生成したポリゴンのインデックス番号。)戻り値は生成したポリゴンのインデックス番号。した場合、既存の頂点データを捜査してすでに同じ位置に頂点が追加されている場合には、それを使用してポリゴンを生成します。vert)戻り値は、頂点のインデックス番号です。した場合、既存の頂点データを捜査して既に同じ位置に頂点が追加されている場合には、頂点を追加せず、既存の頂点のインデックス番号を返します。既存の頂点を捜査して頂点を追加する場合、頂点数が多くなった場合に捜査に時間がかかり動作が遅くなります。ツリーを生成すると、頂点の捜査が速くなります。ツリーを破棄してメモリを解放することdestroyVertexBSP();今回は、子オブジェクトのデータをそのままコピーするので、頂点追加時に既存の頂点(ポイント)を捜査する必要はありません。次に子オブジェクトの情報からポリゴンを生成してみます。}}ここまでを、再度シーンに呼び出してみます。子オブジェクトを追加して、子オブジェクトのモードタグで不可視に設定します。等のパラメータを変更して、強制的にオブジェクトをアップデートしてみて下さい。子オブジェクトと同じ形状が表示されました?いちいち描画更新のために、パラメータをいじるのが面倒なので、このオブジェクトをクリエータオブジェクトに設定しておきます。);}これで、子オブジェクトは自動的に非表示になり、子オブジェクトの変更で自身がアップデートされるクリエータオブジェクトとして振る舞うよう設定されました。パラメータを使ってここまでだと、単に子オブジェクトをコピーするだけなので、全くスクリプトを使う意味がありませんよね。分だけランダムにコピーするように変更してみます。子オブジェクトからのコピーなので、頂点は捜査しない。設定した数だけランダムな位置にコピーするスクリプトオブジェクトが出来ました。して公開していますので、興味のある方は是非チェックしてみて下さい。)ちょっと長過ぎたかも。読んでいただいた皆様ありがとうございます。Array'なんという素晴らしいエントリー!いやー、Cheetah3D、安価な3Dプログラミング環境として、すごい面白いんじゃないかという気がしてきました。僕もこのエントリーを参考にやってみますー。ありがとうございますー。Array'コメントどうもありがとうございます。用語の使い方が若干あやしいのですが、ご容赦ください。的な使い方をちょっと考えてみようかなぁと思ってます。Array'いやー、ポリゴンスクリプト、面白いですね!非常に単純なものから、試してみてます。Arrayでたくさん増やしてみて、カラフルにしたいのですができずに困っています。教えて君で申し訳ありませんが、教えていただければ幸いです。