>   >  スクリプト兵法書 〜MAX Script編〜:Vol.3:スクリプトの具体的な作り方(前編)
Vol.3:スクリプトの具体的な作り方(前編)

Vol.3:スクリプトの具体的な作り方(前編)

大分ご無沙汰になってしまいましたが、お待たせしました。今回から2回にわけて、実際にプログラムを書く際の考え方と参考資料の調べ方、そして構文の書き方について、MAXScriptの具体例を下に解説していきます。

プログラムの書き方自体が分からない

前回は、MAXScript の簡単な文法の解説をしました。でも、文法を覚えても実際に作りたいプログラムが書けるかと言ったらそんなことはありません。大抵の人はエディタを目の前にして「はて、どこから手をつけよう......?」と、途方に暮れてしまうことでしょう。そして1時間ほどボーッとした挙句、作業の自動化を諦めて手作業で全てを行うという、いつも通りの仕事に戻ってしまいます。

この原因は何でしょう? それはズバり、"プログラムの書き方を知らない"からです。私たちは普段から日本語を使ってコミュニケーションを図っていますが、いざ誰かを感動させる素晴らしい小説を書こうとしてもどうやってお話を作ればいいのか、その方法を知らないために形にすることができません。プログラミングにも同じことが言えるのです。

いくら本職のプログラマーでも、プログラムを書くときに何の資料もなくプログラムを書くことはできません。スクリプトリファレンスと首っぴきになり、CGソフトを触って挙動を調べながら、あーでもない、こーでもないと試行錯誤して何とか形にするのは誰でも同じでしょう。プログラマーとそうでない人の違いは、これまでの経験から希望の機能を実現するためには何をすれば良いのかを知っていたり、そのための調べ方/ドキュメントの読み方を知っているというところにあります。そこで、今回と次回の2回をかけて、プログラムを書く時に私がどのように考え、ドキュメントを調べ、1つの形にしているのかという流れを紹介していきましょう。

疑似言語でプログラムを書く

プログラミングに慣れていない人はここからどうしたらいいのか迷ってしまうと思います。まず最初に必要なのは、自分がどんなプログラムを書きたいのか、そのためにはどのような機能が必要なのかをまとめることです。そこで、まずは疑似言語として日本語とプログラミング言語を混ぜた状態でコードを書いていきます。
前回の最後に書いたBoxジオメトリを生成するプログラムをコードにするとこのようになります;



	Boxを10×10個配置する

「え!?」と思われるかもしれませんが、これもコードなのです。この疑似コードを実際のプログラムにしていきますね。MAXScript で実行できる機能に分解したのが以下の疑似コードです。どうでしょう? これならプログラムに慣れていなくても理解できるのではないでしょうか。



	Boxを10×10個配置する (
		Y方向に10回繰り返す (
			X方向に10回繰り返す (
				Boxを作る
				Boxの位置を(x*10, y*10)にする
				名前を "Box_x*10_y*10" にする
			)
		)
	)

.そして、MAXScript に翻訳したものは以下の通りでした;



	for i=0 to 9 do (
		for j=0 to 9 do (
			x = i * 10
			y = j * 10
			b = Box pos:[x, y, 0] length:1 width:1 height:1
			b.Name = "Box_" + (i as String) + "_" + (j as String)
		)
	)

翻訳前と翻訳後を見比べてみてください。完全とは言いませんが、各行がほぼ一対一で対応しているのが判りますね。プログラムを書くというのは、このように作りたい機能を細かい要素ごとに分解して、それをプログラミング言語で表現できる形に変換する作業なのです。

その他の連載