城制作ブロックの作成
ここまでは、基本的な制作オプションの操作方法を見てきました。これにより、以下の作業ができるようになりました。
- プリムタイプの作成
- プリムまたはオブジェクトの移動
- プリムまたはオブジェクトのサイズの変更
- テクスチャの適用
- 各面への異なるテクスチャの適用
図1に示したような城を短時間で築くためには、城制作ブロックを使用するのが有効です。この節では、城制作ブロックを作成する方法について説明します。Second Life世界のテクスチャと城制作ブロックは、すべてSecond Lifeの下記URL(SLURL)から入手できます。
- http://slurl.com/secondlife/Encogia/211/181/63(Second Lifeにログインする必要があります)
城は「Castle in a Box Tutorial」と呼ばれる大きなボックスにパッケージされています。このチュートリアルボックスには、この城に必要なテクスチャと制作ブロックがすべて含まれています。さらに、ユーザーにはこれらのオブジェクトに対してフルアクセス権が付与されているので、その制作過程を調べて正確に理解することができます。
Second Lifeでは、こうしたテクニックを使うことで自分オリジナルの建築物を作成することができます。まず、プリムを作成し、作成したプリムを組み合わせてより大きなオブジェクトを構築します。これらのより大きなオブジェクトが自分の構造物の制作ブロックになります。例えば、城を構成する制作ブロックは次のとおりです。図10に、これらの制作ブロックのレイアウトの一部を示します。
| 制作ブロック | 用途 |
| 3X3 Cement | 3×3コンクリート |
| 3X3 Cement Grass | 3×3コンクリート用芝生 |
| Battlement | 銃眼付き胸壁 |
| Corner Wall | コーナー壁 |
| Corner Tower | コーナータワー |
| Door Section | ドア部 |
| Floor | 床 |
| Front Door | 玄関ドア |
| Roof | 屋根 |
| Short Wall | 壁(低) |
| Small Corner Tower | コーナータワー(小) |
| Stairs | 階段 |
| Wall | 壁 |
| Window Wall | 窓壁 |
これらの制作ブロックは、この章で既に説明したテクニックを使って作成したものです。例えば、標準サイズのシリンダを数本積み上げてその上に青色の円錐を乗せれば、塔ができあがります。また、表面に壁/窓のテクスチャを配置してその裏面にインテリアのテクスチャを配置すれば、壁ができあがります。各ブロックのプリムはグループ化されています。ドア以外は、この記事で説明したテクニックだけを使って作成してあります。ドアに関しては、開閉機能の部分に簡単なLinden Scripting Language(LSL)プログラム(私の以前の記事を参照)を使用しています。
リスト1に、ドアを操作するためのLinden Scripting Language(LSL)コードを示します。
// ********** USER SETTINGS HERE ********** // automatically close the door after this // many seconds, set to 0 to disable float TIMER_CLOSE = 5.0; // direction door opens in. Either 1 // (outwards) or -1 (inwards); integer DIRECTION = -1; // ********** END OF USER SETTINGS ********** integer DOOR_OPEN = 1; integer DOOR_CLOSE = 2; vector mypos; // starting pos of the door door(integer what) { rotation rot; rotation delta; llSetTimerEvent(0); // kill any running timers if ( what == DOOR_OPEN ) { llTriggerSound("Door open", 0.8); rot = llGetRot(); delta = llEuler2Rot(<0, 0, -DIRECTION * PI_BY_TWO>); rot = delta * rot; // rotate by -45 degree llSetRot(rot); } else if ( what == DOOR_CLOSE) { rot = llGetRot(); delta = llEuler2Rot(<0, 0, DIRECTION * PI_BY_TWO>); // rotate by 45 degree rot = delta * rot; llSetRot(rot); llTriggerSound("Door close", 0.8); } } default // closed { on_rez(integer start_param) { // reset, so we store the new position llResetScript(); } state_entry() { // remember where we're supposed to be mypos = llGetPos(); } touch_start(integer total_number) { door(DOOR_OPEN); state is_open; } // done moving me around, store new position moving_end() { mypos = llGetPos(); } } state is_open { state_entry() { llSetTimerEvent(TIMER_CLOSE); } touch_start(integer num) { door(DOOR_CLOSE); llSetPos(mypos); state default; } timer() { // time to close the door door(DOOR_CLOSE); llSetPos(mypos); state default; } moving_start() { // close door when door is being moved door(DOOR_CLOSE); state default; } }
リスト1のスクリプトでは、ドアの2つの状態(オープンとクローズ)を定義しています。ユーザーがドアに触れると、ドアが現在の状態からもう一方の状態に変更されます。ドアには単純な長方形のプリムを使用する必要があります。touch関数はドアを45度回転させるdoor関数を呼び出し、これによってドアが開き、オープン状態に設定されます。オープン状態では、事前に設定された時間(リスト1のユーザー設定値では5.0秒)だけ待機し、その後、ドアを45度戻して閉じます。
この城には数多くのテクスチャを使用しています(テクスチャ作成の説明だけで1本分の記事が書けるぐらいです)。テクスチャを入手する最も簡単な方法は、インターネットでフリーのテクスチャを見つけることです。インターネットでテクスチャを見つけたら、そのテクスチャをSecond Lifeにアップロードします。例えば花崗岩テクスチャを探すには、Googleの「イメージ検索」で検索ワードに「花崗岩 テクスチャ」や「granite texture」と入力して実行すると、かなり多くのテクスチャが見つかります。
環境整備、プリム、グループ、テクスチャを使うことで、自分のアイディアを具現化することができます。この記事では、まず、建物を建築するために土地を整備する方法を説明し、建物を築くための再利用可能な制作ブロックを作成する方法を示しました。また、城制作ブロックの入手場所も説明しました。
制作は非常に時間のかかるプロセスです。しかし、ビルダーとしての経験が増えるにつれて、以前作成したオブジェクトが共有ライブラリに蓄積されるので、新しいオブジェクトを既存のオブジェクトをベースにしてすばやく構築することができるようになります。
次のステップ
この記事では、オブジェクトで利用可能な基本オプションを説明したにすぎません。しかし、これらの基本オプションだけでも城を築くことはできます。基本オプションを習得したら、hollow(中空)やtaper(テーパー)などの他のオプションも試してみることをお勧めします。これらのオプションを使用すると、プリムを変形して、今まで見たことのないおもしろい形を作成することができます。例えば、立方体に穴を開けて内側にも面のあるボックスを作ったり、球にカットパスを適用して半球を作ったりできます。このような追加オプションを理解するには、実際にプリムを作成し、選択可能な各オプションをあれこれ試してみるのが最も効果的です。どんどん挑戦してみてください。

