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