UDN
Search public documentation:

UsingBspBrushesJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > レベルデザイナー > BSP ブラシを使用する

BSP ブラシを使用する


概要


このドキュメントでは、レベル作成時における BSP の使用方法について、その概要を説明します。レベル作成の詳細については、 レベルの作成 のページを参照してください。

BSP ブラシは、「Unreal」におけるブロック作成のうちで最も基本的なものです。考え方としては、レベル内の空間に配置されているボリュームを削ったり、満たしたりするものが BSP だと捉えるべきでしょう。BSP はかつて、レベルを設計する際の主要なブロック作成として使用されていましたが、現在はもっと効率的でさまざまに特化されたジオメトリ タイプが導入されています。しかし、製品の初期の段階、すなわちレベルとオブジェクトのプロトタイプを迅速に作成する段階においては、依然として BSP が役に立つのです。このドキュメントでは、BSP の用途とその使用方法について説明していきます。

BSP (Binary Space Partitioning 、バイナリ空間分割) とは、専門的には、空間内でオブジェクトを構成するために使用されるデータ構造のことです。したがって、この語から想定される一般的な意味とは異なる意味をもちます。この種のジオメトリをもっと正確に意味する用語としては、CSG (Constructive Solid Geometry 、構成的ソリッド ジオメトリ) が考えられます。もっとも、BSP と CSG は同じように使用されるので、これらの用語が他のドキュメントやちょっとした会話の中で出てきた場合には、そのことを念頭に置いて理解する必要があります。

また、現在の BSP の機能は、古いバージョンの「Unreal Engine」における機能とは若干異なることも留意する必要があります。以前は、空のレベルはソリッド空間でした。つまり実質的に加算的な空間でした。現在は、レベルが減算された空間として始まります。つまり、レベルを作成するときは、最初にもう減算しなくても良いということになります。

BSP ブラシの用途


現在、ジオメトリをレベルに配置する場合、主に静的メッシュが使用されていますが、BSP ブラシもまだ有用です。以下に、BSP ブラシの代表的な用途をいくつかあげてみます。

レベルの区分け

レベルを開発するための標準的なワークフローは、次のようになるでしょう。

  • レベルをブロックに分け、パスをつける
  • フローとゲームプレイをプレイテストする
  • レイアウトを修正し、テストを繰り返す
  • メッシュ化パスを開始する
  • 光源処理パスを開始する
  • コリジョンとパフォーマンスの問題についてプレイテストする
  • パスを調整する

最初のステップは、レベルをまず区分けすることによって、レイアウトとフローを固定することです。これは、静的メッシュや他の完成されたアート アセットでレベルを満たすために時間を費やす前に行われます。このためには通常、BSP を使用してレベルにシェルを作成します。その後、テストとイタレーションを通じて最終的なレイアウトを決定します。BSP はこのようなレベル設計プロセスには申し分のないものです。アートチームに時間を割いて参加してもらう必要がまったくありません。レベル設計者は、「UnrealEd」に備わっているツールを利用するだけで、レイアウトとレベルの出来映えに満足いくまで、BSP を作成および修正することができます。

ボリューム

ボリュームは、一定の空間を定義する目に見えないジオメトリです。通常、ボリュームによって指定された領域内にプレイヤーが位置するとき、何らかの特別な機能が有効になります。ボリュームの領域は BSP ブラシによって定義されます。これによって設計者は、マップ内の指定した部分に限定させたエフェクトを簡単に作成することができるようになります。たとえば、泳ぐことができる領域やコリジョン、トリガーの領域などがそれに該当します。さらにはポストプロセス エフェクトを改変した領域も作成可能となります。

ボリュームの詳細については、 ボリュームの使用 のページを参照してください。

簡易フィラー (filler) ジオメトリ

レベル設計者はレベル作成の際によく、隙間やスペースを埋める (fill) ための、かなり単純なジオメトリが必要となることがあります。 既存の静的メッシュでスペースを埋められない場合は、BSP を使用すれば、アートチームにわざわざカスタムのメッシュを作ってもらわなくてもスペースを埋めることができます。パフォーマンス上は静的メッシュの方が優れていますが、ジオメトリが単純であるならば、時として BSP であっても深刻な影響なしに使用できます。

ブラシのタイプ


BSP にはさまざまな種類があり、レベル作成のあらゆるプロセスで使用できます。各タイプは特定の状況に特に適しています。

次は、ワイヤーフレーム ビュー モードの場合に、ブラシの各タイプがエディタ内でどのように表示されるかということを示しています。(ボックスの組み合わせのうち、それぞれ左側のボックスが選択時に表示されるものです)。

brush_types.jpg

ビルダーブラシ

本質的にビルダーブラシはテンプレートです。改変して他のブラシ タイプを作成するために使用することができます。このブラシを改変するには、ジオメトリ モードで変形ツールを使用するか、 メイン エディタ ツールボックス で Primitives (プリミティブ) を使用します。ビルダーブラシは、他の既存のブラシの形態をとることもできます。それには、コンテクスト メニューから、 Polygons (ポリゴン) > To Brush (ブラシへ) オプションを選択します。

加算 (Additive)

加算ブラシは、ソリッド (空ではない) で、中身が詰まっている空間のようなものです。このタイプのブラシを使用することによって、どのような BSP ジオメトリもレベルに追加することができます。加算ブラシを目で見える形で説明するならば、部屋を構成している 4 つの壁や床、天井といったものを想像してみるのが良いでしょう。これらの構成物それぞれ 1 つずつが、マップ内では 1 つの独立した箱状の加算ブラシとなります。これら構成物のコーナーが合わされて 1 つの閉ざされた空間を形成するのです。

減算 (Subtractive)

減算ブラシは、中身がない空洞の空間です。このタイプのブラシは、先に作成してある加算ブラシからソリッドな (中身が詰まった) 空間を取り除いて、ドアや窓を作る場合などに使用されます。プレイヤーが自由に動き回れるのは、減算ブラシの中に限られます。

BSP を使用する


加算 対 減算

加算ブラシと減算ブラシの考え方は上記の説明どおりです。これらの考え方はそっくりレベルにまで拡張することができます。空の空間で作業を開始するとき、デフォルトのワールド空間は巨大な減算された空間です。言い換えると、空虚な空間となっています。これにジオメトリを追加して自分のワールドを作成していくわけです。混乱を招きかねないことには、この「減算」された空間は、「加算」レベルと呼ばれています。さらに、旧バージョンの「Unreal Engine」では、デフォルトのワールドがソリッドな空間で、ここから空間を減じる必要があったということにも注意してください。現在では、それは異なります。

なお、ワールドを加算 (すなわちソリッドな) 空間として着手することは可能です。これは、「減算」レベルと呼ばれ、そこから空間を削り取ってレベルを作ることになります。ただし、このやり方にはある種の注意事項が伴い、また、本質的には空の世界を大きな加算ブラシで満たしているにすぎません。通常は加算レベルから始めのが最善です。

ドラッグ グリッド

ワールドの中でオブジェクトをスナップするために使用されるドラッグ グリッドは、BSP を使用する際非常に重要となります。ブラシのエッジやコーナーがグリッド上に置かれていないと、エラーが生じてレンダリング アーティファクトやその他の問題を引き起こします。ブラシを使用する場合は、常に、ドラッグ グリッドが有効になっていて、なおかつ、ブラシの頂点がグリッド上に置かれているようにする必要があります。

ブラシの順序

ブラシの順序は極めて重要です。加算操作と減算操作がこの順序にしたがって実行されるからです。減算ブラシを先にして加算ブラシを後にするのと、加算ブラシを先にして減算ブラシを後にするのとでは、まったく同じ位置であっても効果は異なります。空の空間から減算した後でその上に加算するならば、何もないところから減算はできないので減算ブラシは基本的に無視されます。ところが、それらと同じブラシを逆の順序にすると、空の空間に加算した後に、加算したものから減算することになり、そのため、加算したものから空間が切り取られることになります。

時として、ブラシの順序が乱れていたり、追加すべき新しいブラシを既存のブラシの前に計算しなければならないこともあります。幸いなことに、ブラシの順序を変更することはできます。この後の Brush Properties (ブラシのプロパティ) を参照してください。

ブラシの 硬さ (solidity)


ブラシは、solid、semi-solid、non-solid のいずれかです。ブラシの硬さ (solidity) は次の 2 つのことに関係します。すなわち、ワールド内でブラシがオブジェクトと衝突するか否かということと、ジオメトリが作成される際にブラシによって BSP カットがまわりのブラシの中に作られるか否かということです。

ブラシを作成する際にその硬さを指定するには、 ツールボックス の中にある AddSpecialButton.gif ボタンを使用します。そのボタンをクリックすると、次のようなダイアログ ボックスが現れます。

addspecialbrush.jpg

以下に、3 種類の硬さについて説明します。

Solid

Solid ブラシは、デフォルトのブラシです。加算ブラシまたは減算ブラシを新たに作成すると得られるブラシです。次のような特性があります。

  • ゲーム内でプレイヤーと発射物をブロックします。
  • 加算または減算のいずれかになります。
  • 周りのブラシの中に BSP カットを作ります。

Semi-Solid

Semi-Solid ブラシは、衝突するブラシであり、レベルに配置しても周りのワールド ジオメトリに対して BSP カットを作ることはありません。Semi-Solid ブラシは、柱や支持梁などを作成するのに使います。ただし、これらのオブジェクトは通常であれば静的メッシュを使って作成されます。次のような特性があります。

  • Solid ブラシとまったく同じようにプレイヤーと発射物をブロックします。
  • 加算だけになります。減算にはなりません。
  • 周りのブラシの中に BSP カットを作りません。

Non-Solid

Non-Solid ブラシは衝突のないブラシです。これも、周りのワールド ジオメトリに BSP カットを作ることはありません。このブラシは視覚化することができますが、相互作用はまったくできません。次のような特性があります。

  • プレイヤーまたは発射物をブロックしません。
  • 加算だけになります。減算にはなりません。
  • 周りのブラシの中に BSP カットを作りません。

ブラシの操作


非交差 (DeIntersect)

非交差ツールは、現在ソリッドなジオメトリの内部にあるビルダーブラシ (すなわち加算ブラシ) のあらゆる部分を除去します。残されるのは、ソリッドな空間の外側にあるブラシの部分だけです。既存のジオメトリはどれも影響を受けません。これは単に、加算ブラシの作成準備のためにビルダーブラシ上で実行される操作に過ぎません。

交差 (Intersect)

交差ツールは、現在ソリッドなジオメトリの内部にはないビルダーブラシ (すなわち減算ブラシ) のあらゆる部分を除去します。残されるのは、ソリッドな空間の内側にあるブラシの部分だけです。既存のジオメトリはどれも影響を受けません。これは単に、減算ブラシの作成準備のためにビルダーブラシ上で実行される操作に過ぎません。

BSP ブラシの作成


Primitives.jpg

BSP ブラシを作成するには、プリミティブを選択してサイズを設定します。サイズを設定するには、プリミティブのアイコンを右クリックすると表示されるウィンドウに数値を入力します。

次に、CSG ボタンを使用して、ブラシを加算 AddButton.gif または減算 SubtractButton.gif します。既存の BSP ジオメトリについて減算および加算する場合は注意してください。万全を期すために、常に、減算の前には 交差 (Intersect) を行い、加算の前には 非交差 (Deintersect) を行うようにしてください。これによって、BSP のオーバーラップを防ぐことができるので、エンジンに混乱が生じることはありません。

operations.jpg

CSGspecial.jpg

なお、ブラシの機能の多くは、ブラシのファイル メニューからアクセスすることができます。

BrushMenu.jpg

BSP ブラシの修正


BSP ブラシを修正するにはメソッドを使います。メソッドはそれぞれ、特定の状況や編集方法に適したものになっています。

Geometry Mode (ジオメトリ モード)

ブラシの実際の形を変更するには、Geometry Mode を使用するのが一番です。このエディタ モードによって、ブラシの頂点、辺、面を直接操作できるようになります。ごく単純な 3D モデリング ソフトを使用する場合によく似ています。

Geometry Mode の詳細およびそれを使用してブラシを編集する方法については、 ジオメトリ モード入門 のページを参照してください。

Transform Widgets (変形ウィジェット)

ブラシの編集は、各種のエディタ変形ウィジェットによっても実行できます。インタラクティブな平行移動、回転、スケーリングが可能になります。メインのツールバーにあるウィジェット ボタンからアクセスできます。

widgets.jpg

変形ウィジェットの詳細および使用方法については、 アクタの変形 を参照してください。

Primitives (プリミティブ)

プリミティブはビルダーブラシの形を調整するために使用されます。これには、立方体や円柱、円錐などといった、事前に定義されていながらも調整可能で原初的な (primitive) 立体図形を使います。利用可能なプリミティブの詳細およびその使用方法については、 メイン エディタのツールボックス のページを参照してください。

Brush Properties (ブラシのプロパティ)

既存のブラシを編集するには、ビューポート内でブラシを選択して右クリックし、コンテクスト メニューにアクセスします。なお、右クリックメニューには常にアクセスすることができます。状況依存型なので、現在エディタ内で選択しているものによって異なるオプションが表示されます。

rclick.jpg

Select (選択)

次のメニューから選ばれたオプションに基づいた選択を実行します。

menu_select.jpg

Transform (変形)

現在選択されているブラシをグリッド上またはサーフェス上にスナップするとともに、ミラーリングのオプションを提供します。

注意 : 多数の BSP から作成されているマップは、ブラシが可能な限り大きなグリッド上にある場合、一層効率的に実行されます。

Pivot (ピボット)

変形を実行する際に中心となるピボットを一時的に設定できるようにします。

Order (順序)

ブラシを描画する順序を変更します。何らかの理由で減算ブラシと加算ブラシの順序が間違っていた場合に有効です。たとえば、ある減算ブラシを、この減算ブラシよりも後に付け加えられた加算ブラシの中に移動させた場合等が該当します。その結果、減算は見えなくなります。そのような場合には、減算上で order (順序) → last (最後) を押します。これによって、その減算ブラシを最後に描画すべきブラシに変更することができるため、レベル内で減算が見えるようになります。

Polygons (ポリゴン)

  • To Brush (ブラシへ) - ビルダーブラシを、選択したブラシと同じ形状にします。
  • From Brush (ブラシから) - 選択したブラシを、ビルダーブラシと同じ形状にします。
  • Merge (結合) - ブラシの表面にある複数のポリゴンを結合して、ポリゴンの数を可能な限り少なくします。これが機能するには、ブラシの表面が同一平面上にあるとともに、同一のテクスチャをもち、揃っていなければなりません。
  • Separate (分離) - Merge (結合) の逆を行います。

CSG

  • Additive (加算) - ブラシを加算されたブラシに変えます。
  • Subtractive (減算) - ブラシを減算されたブラシに変えます。

ALERT! 注意: これらが機能するのは、加算または減算されたブラシに使用される場合のみです。

Solidity (硬さ)

ブラシの堅さを Solid から Semi-Solid または Non-Solid に変更します。Unreal Technology のゲームでは静的メッシュが広く使用されるようになったため、Semi-Solid は使われていません。ただし、プロジェクトの初期段階で、多数の BSP ブラシのジオメトリから作られたプロトタイプ マップから BSP ホールを取り除く場合にはまだ役に立ちます。

Add Volume (ボリュームを追加)

ビルダーブラシが選択されている場合に使用することができます。このメニューは、[Add Volume] (ボリュームを追加) ボタンの代わりにとして、現在のビルダーブラシを使用して新たなボリュームを追加することができます。

Convert (変換)

  • Convert To Static Mesh (静的メッシュへの変換) - 現在選択されているブラシ (複数可) を静的メッシュに変換します。変換するブラシをすべて選択して、その上で右クリックします (頂点で右クリックした場合は、メッシュの原点の位置が指定されます!!)。さらに、当該オプションを選択してから、新たなメッシュにパッケージおよびグループ (オプション) を割り当て、名前を付けます。後は、汎用ブラウザでそのパッケージを開き、新しいメッシュを選択すると、右クリック メニューでレベル内に配置できるようになります。
  • Convert To Blocking Volume (ブロック ボリュームに変換) - 選択されたブラシを、新しい BlockingVolume (ブロック ボリューム) に変換して、既存のブラシと交換します。
  • Convert To ProcBuilding (ProcBuildingに変換) - 選択されたブラシを、新たな ProcBuilding (プロシージャル建築物) ボリュームに変換します。既存の BSP の削除または保持のオプションがあります。
  • Convert To Volume (ボリュームに変換) - 選択されたブラシを、選択されたタイプのボリュームに変換して、既存のブラシと交換します。

注意 : 新たに作成された静的メッシュは、割り当てられない限り、コリジョン (衝突) をともないません。メッシュが単純な場合は、メッシュを作るために使用したブラシの真上のマップの中にメッシュを配置することができます。メッシュとブラシのすべてを選択してから、右クリック、Save as Collision (コリジョンとして保存) を選択します。これによって、ブラシのコリジョンがメッシュに割り当てられます。(汎用ブラウザでこのメッシュをダブルクリックしてピンクのボックスを押すと、コリジョンが見れます。)メッシュが複雑な場合は、フレームレートのためにもっと単純なコリジョンを作る必要があるでしょう。