以下のスクリプトでその方法を紹介します。これは「球の雲」の別バージョンで、今回だけは球に異なる色を配しています。
r = new Random(0); texture = new Texture [3]; texture[0] = new UniformTexture(); texture[1] = new UniformTexture(); texture[2] = new UniformTexture(); texture[0].diffuseColor.setRGB(1.0, 0.0, 0.0); texture[1].diffuseColor.setRGB(0.0, 0.0, 1.0); texture[2].diffuseColor.setRGB(1.0, 1.0, 1.0); for (i = 0; i < 100; i++) { sphere = new Sphere(0.05, 0.05, 0.05); sphere.setTexture(texture[i%3], texture[i%3].getDefaultMapping(sphere)); pos = new Vec3(r.nextDouble(), r.nextDouble(), r.nextDouble()); script.addObject(sphere, new CoordinateSystem(pos, 0, 0, 0)); }
このスクリプトでは木の一様なテクスチャの配列を作成して、それぞれが異なる拡散反射色を持つようにしています。球が作られるとテクスチャのリストを一巡して、球それぞれについて色を選択します。
この場合、スクリプトは必要なテクスチャを単に作成しました。一様なテクスチャでは充分に簡単なことですが、樹皮に複雑な手続きテクスチャを使う場合はどうでしょう。手続きテクスチャをスクリプトで作るのは確かに可能ですが、普通は手作業のほうが簡単です。このようなときは以下のようにしましょう。(訳注: 以下の数式の "bark" は「樹皮」の意味)
barkTexture = script.getScene().getTexture("bark");
getScene() メソッドは、このスクリプト形状が構成の一部となるシーン(artofillusion.Scene)を表すオブジェクトを返します。これで、テクスチャ、材質、画像、シーン内の他のオブジェクトを探すのにこれを使えます。