建築でコンピュータ、する?
2025年3月16日(日) 21:56 JST
GDLでは動画が作れない、そう思っていませんか?こちらの記事ではOpenSCADで組木が組みあがるアニメーションをお見せしました。今回はGDLでのアニメーションについて紹介します。もちろん、決して手軽ではありませんが、ArchiCAD本体とうまくやりとりすることで、GDLスクリプトで動画の作成も可能です。
このアニメーションはArchiCADのフライスルーを使って作っています。ArchiCADでシーンをレンダリングしているので、影やテクスチャなども綺麗に表現できます。詳しくは続きを読むからご覧ください。
ArchiCADではフライスルーを利用してアニメーションを作成します。図面上にカメラを配置すると、カメラ間にカメラパスが定義されます。フライスルーはそのカメラパスを指定されたフレームレートで分割した分だけ移動しながらシーンを作成していきます。それでは、カメラ設定やフライスルーの作成方法を簡単に紹介していきます。
フレイスルーを作成するための準備として、まずカメラの配置、カメラの設定、パスオプションの設定を行います。カメラ設定では位置や太陽光の当て方を、パスオプションではカメラの移動制御やフレームレートなどを設定できます。今回は、注視点が固定されているので"目標点"をポリゴンに、カメラを滑らかに動かしたいのでカメラ位置でのパスのスムージング及びパスをベジェ曲線に設定します。
カメラの設定が終わったら、スクリプトをフライスルー仕様に変えていきます。GDL講習会の記事で掲載したものと変わっている部分は赤く表記しています。組みあがるアニメーションのため、フレーム番号が格納されているグローバル変数のGLOB_FRAME_NRを用いてパーツを移動させていきます。この例では、1フレームごとの移動量とフレーム番号からパーツがどれだけ動いているかを算出し、IF文でそれを評価することで動かすパーツを区別しています。
d = 1 !! 部材厚み w = 2*d !! 部材高さ a = d/2 !! 部材に空く穴のオフセット(高さ) x = 2 ofset = x + w !!スタート位置 path = 11 !!カメラパスの数 frame = path*10 !!フレームの総数 delta = 2*ofset /frame !!1フレームでの移動量 IF (glob_frame_nr-1)*delta < ofset - 2*a THEN parts1Pos = ofset !!parts1のz座標 parts2Pos = ofset - (glob_frame_nr-1)*delta !!!!parts2のx座標 ELSE IF ofset - 2*a <= (glob_frame_nr-1)*delta AND (glob_frame_nr-1)*delta < 2*ofset - 2*a THEN parts1Pos = (2*ofset - 2*a) - (glob_frame_nr-1)*delta parts2Pos = 2*a ELSE IF 2*ofset - 2*a <= (glob_frame_nr-1)*delta AND (glob_frame_nr-1)*delta < 2*ofset THEN parts1Pos = 0 parts2Pos = 2*ofset - (glob_frame_nr-1)*delta ELSE parts1Pos = 0 parts2Pos = 0 ENDIF ENDIF ENDIF !!!穴が閉じている部材 ROTY 90 ADDZ -w/4 PRISM_ 10, d, -(x+w/2), -w/2,15, -(x+w/2), w/2,15, x+w/2, w/2, 15, x+w/2, -w/2, 15, -(x+w/2), -w/2,-1, -w/2, -d/2, 15, -w/2, d/2, 15, w/2, d/2, 15, w/2, -d/2, 15, -w/2, -d/2, -1 DEL 2 !!!コの字の部材(parts1) ROTZ 90 ADDZ - w/4 + parts1Pos PRISM 12, d, -(x+w/2), -w/2, -(x+w/2), w/2, -d/2, w/2, -d/2, d/2, -w/2, d/2, -w/2, -d/2, w/2, -d/2, w/2, d/2, d/2, d/2, d/2, w/2, x+w/2, w/2, x+w/2, -w/2 DEL 2 !!!L字の穴の部材(parts2) ROTX 90 ADDZ -w/4 ADDX parts2Pos PRISM 10, d, -(x+w/2), -w/2, -(x+w/2), w/2, -a, w/2, -a, -d/2, 2*a, -d/2, 2*a, d/2, 0, d/2, 0, w/2, x+w/2, w/2, x+w/2, -w/2 DEL TOP
準備が整ったら、[ドキュメント] ―> [レンダリング] ―> [フライスルーの作成]から作成します。このアニメーションでは、レンダリングウィンドウ、フレームごとにモデルを再構築、フレームレートを10に設定します。レンダリングウィンドウにすると、フライスルー作成に時間がかかりますが、今回は簡単な形状なのでこちらを選択します。また、フレームごとにモデルを再構築にチェックを入れ、フレーム番号をモデルの座標に反映させます。最後にファイル形式を指定したら保存を押すとレンダリングが開始されます。
以上でGDLでアニメーションが完成します。今回はカメラがモデルの周囲を回るようにしましたが、カメラ位置を一定にするとOpenSCADで見たようなアニメーションを作成することもできます。普段はモデルを作るだけで終わってしまいますが、このようなアニメーションを作って遊んでみたりするのも楽しいですね。