はじめに
「制作」(building)と「スクリプト作成」(scripting)は、MMOG Second Lifeにおいて非常に重要なスキルです。制作とは、複雑な3Dオブジェクトを作成するプロセスで、スクリプト作成とは、スクリプト言語を使って、制作した3Dオブジェクトにゲーム内で何らかの動作を行わせるプロセスです。私の以前の記事では、スクリプト作成について説明しました。この記事では、制作について説明します。まず制作の基本を説明し、次に城を築くための3Dオブジェクトセットの作成方法を示します(図1の例を参照)。
図1 完成した城。この城はSecond Lifeでゼロから作成したもの。
プリミティブの概要
制作を始める前に、プリミティブ(略してプリム)を作成する必要があります。プリムとは、非常に単純な立体構造を持つオブジェクトです。Second Lifeでは13種類のプリムを作成できますが、実はこれらのプリムはわずか7つの基本図形で構成されています。例えば球に対して「パスカット」の始点と終点を設定することで半球ができます。パスカットを使えば、プリムの一部を取り除き、別の形を作ることができます。図2に、7つの基本図形を示します。
図2 Second Lifeの7つの基本図形。Second Lifeのあらゆるものは、この7つの基本図形から作成される。
図2では、私のアバターである「Encog Dod」の前に7つの基本図形が並んでいます。一番左から、ボックス(box)、プリズム(prism)、シリンダ(cylinder)、球(sphere)、トーラス(torus)、リング(ring)、チューブ(tube)です。
これらのプリムのいずれかを作成するには、画面の下にある[build]オプションを選択します。
著者注
[build]が使用できない場合は、制作が行える土地ではありません。通常、自分の土地でなければ制作は行えません。ただし、サンドボックスであれば自分の土地でなくても制作できます。サンドボックスを探すには、検索機能を使ってサンドボックスを検索します。サンドボックスはだれもが制作できる領域です。ただし、サンドボックスに他のビルダーがいる場合は、話が少し複雑になるかもしれません。また、ほとんどのサンドボックスは毎日クリアされます。作成したものを保存しておきたい場合は、必ずコピーしておいてください。
[build]を選択すると、制作ウィンドウが表示されます(図3を参照)。プリムを作成するには、「魔法の杖」アイコンを選択します。デフォルトではボックスが作成されます。自分のアバターの近くをクリックすると、作成したボックスが表示されます(図3を参照)。
図3 ボックスの作成。デフォルトの「ボックス」プリムを作成するには、制作ウィンドウの上部にある「魔法の杖」アイコンを選択する。
図3で、小さな木目調のボックスが選択されていることに注目してください。ボックスを作成すると、このように選択状態になります。ボックスの表面に赤、緑、青の矢印が表示されているときは、選択状態を意味します。これらの矢印を使って、3次元のいずれかの方向に移動できます。画面には、ボックスプリムの関連オプションを示すウィンドウが表示されます。これらのオプションについては、この記事の後半で説明します。
また、オブジェクトを移動するのと同じ方法で、プリムを回転したりサイズ変更したりすることもできます。マウスを使ってプリムをドラッグすることで、回転やサイズ変更を行うことができます。プリムを回転する場合は[Ctrl]キーを押し、プリムのサイズを変更する場合は[Ctrl]キーと[Shift]キーを同時に押します。
プリムのグループ化
プリムを組み合わせることで、複雑なオブジェクトを作成できます。2つのプリムを組み合わせるには、それらを接触(隣接)させる必要があります。まず、普通に1つのオブジェクトを選択し、次に、[Shift]キーを押したまま、追加するプリムを選択します。これで、複数のプリムを選択できます。グループ化したいプリムをすべて選択したら、ツールメニューの[Link]を選択します。プリムのグループ化を解除する場合は、グループを選択してツールメニューの[Unlink]を選択します。
図4では、3つの白い球を組み合わせて雪だるまプリムを作成しています。
図4 3つの球を組み合わせて作成した雪だるまプリム。
球を白くするには、プリムのオプションウィンドウの[Texture]タブを使用します。色は[Texture]タブで選択します。球に対しては、この他にサイズ変更と移動のみを行うことができです。
Second Lifeユーザーであれば誰しもまず家を制作したいと思うでしょう。土地を手に入れたら、自分の生活の場を作成できます。Second Lifeの世界にはさまざまな種類の家があります。今回の記事では、基本的な城制作ブロックを使って簡単な城を築く方法を紹介します。城はあなたの好みに合わせて大きくも小さくもできます。また、どの制作タイプでも使える便利な環境整備(テラフォーム)テクニックも紹介します。
土地の整備
Second Lifeの土地は必ずしも平坦ではありません。しかし、建物を一番建てやすいのは平坦な土地です。図5のように、Second Lifeの世界には平坦で建物を建てやすい土地もあります。
図5 Second Life世界の平坦な土地。平坦な土地には建物が建てやすい。
ユーザーが購入するほとんどの土地には、傾斜地が含まれています。小さい土地の一画を整地するのは比較的簡単です。しかし現時点では、土地を隆起させたり沈下させたりすることしかできません。そのため、広い土地を平坦にするのは非常に大変です。例えば今回の記事では、図6のような傾斜地に城を築きます。
図6 Second Life世界の傾斜地。今回城を築く傾斜地の初期状態。
図6を見ると分かるように、土地のテクスチャはその土地の高度によって異なります。海に近くなればなるほど、砂に近い模様のテクスチャになります。これは土地にあらかじめ設定されたものであり、通常は変更できません。土地のテクスチャを変更できるのは、Second Lifeの島を所有している場合のみです。島の所有権に関する詳細は、こちらを参照してください。
また、この形式のテクスチャは、土地にのみ適用されることに注意してください。土地以外のテクスチャは、高度によって変化することはありません。
今回は、事前にできる限り土地を整地しておいたので、すぐに城の基礎部分の制作にとりかかります。基本的に、基礎部分は、岩やコンクリートのようなテクスチャが適用された大きなボックスを並べて作成します。基礎を制作するには、まず、最大1000立方メートルの立方体を作成します(図7を参照)。この大きさの立方体を作成するには、プリムオプションを選択して、x、y、zのサイズを10に設定するのが一番簡単です。次に、[Texture]タブを選択し、花崗岩(Granite)テクスチャを選択します(このテクスチャはユーザーの[Inventory]内の標準オブジェクトライブラリに含まれています)。見つからない場合は、[Inventory]の上部にあるテキストボックスを使って検索してください。[Texture]タブを表示している状態で、[Repeats per Face]オプションの[horizontal]と[vertical]を両方とも「1」に変更します。
図7 城の基礎の一部になる巨大な花崗岩のブロック。
自分の城を築く場合は、自分の土地の大きさに合わせて城を制作することをお勧めします。今回の例で使用する土地の大きさは4,096平方メートルです。このサイズの場合、基礎には前のステップで作成した花崗岩ブロックが36個(6×6)必要になります。作成した花崗岩ブロック(または任意のプリム)をクリックして[Take Copy]を選択すると、すばやくコピーすることができます。ブロックをコピーすると、自分の[Inventory]に新しいブロックが追加されます。ブロックを[Inventory]から土地にドラッグすれば、より多くのコピーをすばやく作成できます。必要な数だけブロックをドラッグすることで、制作する城の大きさに合わせて基礎を築くことができます。
ドラッグ操作で36個のブロックをすべて正確な位置に配置することもできますが、プリムのオプションウィンドウでx、y、z座標を設定すると、より簡単かつ正確にブロックを配置できます。例えば、最初に土地に配置したブロックのz座標値を36メートルと設定した場合、基礎ブロックはどれも同じ高さなので、すべての基礎ブロックのz座標の値に36を入力すれば設定できます。同様に、各ブロックのxおよびy座標を直前のブロックとの差が10メートルになるように設定します。これは各ブロックの大きさが10立方メートルだからです。
z座標の値をすべてのブロックで等しくなるように設定すると、各ブロックが同じ高さ(z座標)になるため、平坦な基礎が作成されます。z座標の基点はゼロです(ゼロ地点は地下の深いところにあります)。従って、高さ(z座標)がすべて同じブロックであれば、どれも同じ高さに表示されます。基礎の一部は多少地下に埋まりますが、それは現実世界の家の基礎と変わりありません。図8に、完成した基礎を示します。
図8 完成した基礎。ブロックを隙間なく積み上げることで安定した基礎を作成できる。
次のステップは、基礎の上面に芝生を貼り付ける作業です。城の外を散歩したくなることもあるかもしれないので、基礎に芝生を貼り付けて見た目を整えておきます。芝生を貼り付けるには、芝生テクスチャを立方体の上面にドラッグして、各立方体の上面のテクスチャのみを変更します(プリムの各面にはそれぞれ異なるテクスチャを設定できます)。
まず、自分の[Inventory]から芝生テクスチャを選択します(私は標準ライブラリの「Islands-Grass」が好きです)。このテクスチャを、基礎となるすべての立方体の上面にドラッグします。これによって、城の建築場所となる整備された芝生面が完成します(図9を参照)。
図9 芝生テクスチャを基礎となる立方体の上面に貼り付けると、城を築くのに適した芝生面ができあがる。
城制作ブロックの作成
ここまでは、基本的な制作オプションの操作方法を見てきました。これにより、以下の作業ができるようになりました。
- プリムタイプの作成
- プリムまたはオブジェクトの移動
- プリムまたはオブジェクトのサイズの変更
- テクスチャの適用
- 各面への異なるテクスチャの適用
図1に示したような城を短時間で築くためには、城制作ブロックを使用するのが有効です。この節では、城制作ブロックを作成する方法について説明します。Second Life世界のテクスチャと城制作ブロックは、すべてSecond Lifeの下記URL(SLURL)から入手できます。
城は「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 | 窓壁 |
図10 城制作ブロック。図中のグループ化されたプリムセットは、築城建築用の制作ブロックの基本単位になる。
これらの制作ブロックは、この章で既に説明したテクニックを使って作成したものです。例えば、標準サイズのシリンダを数本積み上げてその上に青色の円錐を乗せれば、塔ができあがります。また、表面に壁/窓のテクスチャを配置してその裏面にインテリアのテクスチャを配置すれば、壁ができあがります。各ブロックのプリムはグループ化されています。ドア以外は、この記事で説明したテクニックだけを使って作成してあります。ドアに関しては、開閉機能の部分に簡単なLinden Scripting Language(LSL)プログラム(私の以前の記事を参照)を使用しています。
リスト1に、ドアを操作するためのLinden Scripting Language(LSL)コードを示します。
リスト1 ドアに関する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」と入力して実行すると、かなり多くのテクスチャが見つかります。
著者注
テクスチャを使用する前に、そのテクスチャがフリーであることを確認してください。テクスチャを掲載しているほとんどのWebサイトには、そのテクスチャの使用ライセンスが記述されています。Second Lifeでは、ユーザーが有効なライセンスを取得したテクスチャであればどんなテクスチャでも使用可能であり、
コミュニティ基準に違反しません。自分オリジナルのテクスチャを作成したい場合は、Adobe PhotoshopやAdobe Illustratorなどのソフトウェアで作成してみてください。
環境整備、プリム、グループ、テクスチャを使うことで、自分のアイディアを具現化することができます。この記事では、まず、建物を建築するために土地を整備する方法を説明し、建物を築くための再利用可能な制作ブロックを作成する方法を示しました。また、城制作ブロックの入手場所も説明しました。
制作は非常に時間のかかるプロセスです。しかし、ビルダーとしての経験が増えるにつれて、以前作成したオブジェクトが共有ライブラリに蓄積されるので、新しいオブジェクトを既存のオブジェクトをベースにしてすばやく構築することができるようになります。
次のステップ
この記事では、オブジェクトで利用可能な基本オプションを説明したにすぎません。しかし、これらの基本オプションだけでも城を築くことはできます。基本オプションを習得したら、hollow(中空)やtaper(テーパー)などの他のオプションも試してみることをお勧めします。これらのオプションを使用すると、プリムを変形して、今まで見たことのないおもしろい形を作成することができます。例えば、立方体に穴を開けて内側にも面のあるボックスを作ったり、球にカットパスを適用して半球を作ったりできます。このような追加オプションを理解するには、実際にプリムを作成し、選択可能な各オプションをあれこれ試してみるのが最も効果的です。どんどん挑戦してみてください。