アセットライブラリの構築

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。


アセットライブラリの構築は、あなたの経験の中に中央の場所でアセットのコレクションをインポートして設定するプロセスであり、容易なアクセスと再利用を可能にします。このプロセスは、環境を構築する準備をする際に大幅な時間を節約でき、特に各アセットの値を設定してパフォーマンスを向上させ、中低スペックデバイスでのメモリ使用を最適化する場合に役立ちます。

環境アート - アセットライブラリ構築 .rbxlファイルを参照し、この環境アートカリキュラムのセクションでは、あなたの洗練されたアセットからアセットライブラリを構築する方法を示し、以下のステップバイステップの指示が含まれています。

  • タイル可能なテクスチャから地形用のカスタム素材を作成する方法。
  • トリムシート用のSurfaceAppearanceオブジェクトを作成し、アセットライブラリ内のアンラップされたメッシュに適用する方法。
  • すべてのデバイスで最適なパフォーマンスを確保するためにアセットのレンダリングパラメータを設定する方法。
  • アセットをパッケージに変換し、すべてのプロジェクトで更新・再利用できるようにする方法。

このセクションを完了すると、アセットライブラリをクリエイティブな方法で活用して、グレーボックス環境を置き換えたり変換したりして、全体の3D空間を向上させるための最終的なタッチを追加する方法を学びます。

サンプルレーザータグ体験のモジュラーおよび小道具キット。

カスタム素材の作成

Studioはカスタム素材を MaterialVariant オブジェクトとして MaterialService 内で表します。これらの MaterialVariant オブジェクトには、4つのプロパティがあり、4つのタイル可能なテクスチャマップを組み合わせて物理的特性を持つ高品質のカスタム素材を作成します。

テクスチャマップをこれらのプロパティに供給した後、新しいカスタム素材をパーツ、メッシュ、地形の両方に適用することができます。サンプルテクスチャマップの .png ファイルを使用または変更して、最終サンプルレーザータグ環境内のLumpy Moss、Flowering Lumpy Moss、Lumpy Moss with Stones、Stonesカスタム素材を作成することができます。また、前のセクションでデザインした独自の素材を使用することも可能です。

タイル可能なテクスチャ用の MaterialVariant オブジェクトを作成する方法:

  1. ウィンドウ3D メニューから マテリアル を選択して マテリアルマネージャー を開きます。

  2. マテリアル リストで、タイル可能なテクスチャに最も一致する基本素材を選択します。たとえば、Lumpy Mossのタイル可能テクスチャ用の MaterialVariant オブジェクトを作成する場合、物理特性を受け継ぐためにデフォルトの地面素材を選択します。

  3. 上部ツールバーで アイコンをクリックします。新しい MaterialVariant がパレットに表示され、右下隅にカスタム素材を示すアイコンが表示されます。

    カスタム素材を示すアイコンを持つマテリアルマネージャーの新しいMaterialVariantタイル
  4. インスペクターで、一般セクションに移動し、素材の名前をタイル可能なテクスチャの名前に合わせて変更します。

    素材の名前が強調表示されたインスペクタービュー。
  5. テクスチャマップ セクションで、Color の右側にある インポート ボタンをクリックします。ファイルブラウザが表示されます。

    インスポートボタンが強調表示されたインスペクタービューのテクスチャマップセクション。
  6. ファイルブラウザで、対応するタイル可能なテクスチャの アルベド テクスチャマップ .png ファイルを選択し、開く ボタンをクリックします。ファイルブラウザが閉じ、新しいカラー マップがアセット ID とともに表示されます。

  7. メタルネスノーマル、および ラフネス テクスチャマップについてもこのプロセスを繰り返します。カスタム素材がテクスチャマップを反映するように更新されます。

    Moss_Lumpy_A素材のすべてのテクスチャマップ。
    Moss_Lumpy_A素材が適用された球の部分。
  8. オーバーライド セクションで、オーバーライドとして設定 トグルを有効にして、地面を地形に適用したときにStudioがこのカスタム素材を使用するようにします。

    オーバーライドとして設定トグルが有効になっている。
  9. (オプショナル) 有機素材を表すカスタム素材を作成する場合、

    1. タイル設定 セクションで パターン ドロップダウンをクリックします。
    2. 有機を選択して出力をランダム化し、視認可能なタイルを減らします。
    インスペクタービューのタイル設定セクションとその設定。
  10. 経験に含めたいそれぞれのタイル可能なテクスチャについてこのプロセスを繰り返します。

SurfaceAppearanceパッケージの作成

Studioは、UVデータを含む MeshParts に親コンポーネントとして親子関係を持つ SurfaceAppearance オブジェクト内でトリムシートを利用します。カスタム素材と同様に、SurfaceAppearance オブジェクトには、4つのトリムシートテクスチャマップを組み合わせて高品質の3D視覚表面処理を作成する4つのプロパティがあります。

SurfaceAppearance.ColorMap – アルベドテクスチャマップを表します。 SurfaceAppearance.MetalnessMap – メタルネステクスチャマップを表します。 SurfaceAppearance.NormalMap – ノーマルテクスチャマップを表します。 SurfaceAppearance.RoughnessMap – 粗さテクスチャマップを表します。

テクスチャマップをこれらのプロパティに供給した後、SurfaceAppearance オブジェクトをトリムシートにマッピングされているUVデータを持つ MeshPart の子にすることができ、UVデータが親メッシュに自動的に適用されます。このため、SurfaceAppearance オブジェクトをパッケージとして作成し、すべてのモジュラーアセットや小道具で同じ SurfaceAppearance オブジェクトを再利用するのが便利です。たとえば、以下のメッシュはすべて同じトリムシートレイアウトにマッピングされたUVデータを持ち、単一の SurfaceAppearance オブジェクトパッケージで表されます。

サンプルモジュラーアセットおよび小道具のUVデータを尊重する SurfaceAppearance オブジェクトをサンプルレーザータグ環境内で作成するために、サンプルテクスチャマップの .png ファイルを使用または変更することができます。また、自分でデザインしたものを使用することも可能です。

モジュラーキットと小道具に子要素として追加できる SurfaceAppearance パッケージを作成する方法:

  1. SurfaceAppearance オブジェクトを Workspace に挿入します。

  2. SurfaceAppearance オブジェクトを選択し、プロパティウィンドウでColorMapプロパティを選択します。ポップアップが表示されます。

  3. **画像を追加...**ボタンをクリックします。ファイルブラウザが表示されます。

    画像追加ボタンが強調表示されたColorMapポップアップ。
  4. 対応するタイル可能なテクスチャの アルベド テクスチャマップを選択し、開く ボタンをクリックします。ファイルブラウザが閉じ、ColorMap プロパティが新しいアセット ID で更新されます。

  5. MetalnessMapNormalMap、および RoughnessMap プロパティについてもこのプロセスを繰り返し、それぞれのテクスチャマップをファイルブラウザから選択します。

  6. エクスプローラーウィンドウで、SurfaceAppearanceオブジェクトを右クリックし、コンテキストメニューから パッケージに変換 を選択します。パッケージに変換ダイアログが表示されます。

  7. タイトル説明フィールドに記入し、自分自身またはグループに所有権を設定してから、提出 ボタンをクリックします。完了すると、パッケージとして識別するためにSurfaceAppearanceオブジェクトのアイコンの上に鎖リンクシンボルが表示されます。

    鎖リンクシンボルを持つSurface Appearanceアイコン。
  8. (オプショナル) SurfaceAppearanceオブジェクトの子のPackageLinkオブジェクトを選択し、プロパティウィンドウで自動更新を有効にすると、SurfaceAppearanceオブジェクトに変更を加えた場合に自動的にパッケージが更新されます。

モジュラーアセットと小道具のインポート

Studioにインポートしたモジュラーアセットと小道具は、アセットの各コンポーネントのための子 MeshParts を持つ Model オブジェクトとして表されます。たとえば、トップトリム、ボトムトリム、および壁コンポーネントを持つ壁セクションをインポートすると、Studioは .fbx または .obj ファイルを Wall_Section Model として表し、個別の子 Top_TrimBottom_TrimWall MeshParts があります。

インポータを使用して、サンプルモジュラーキットと小道具をStudioにインポートしてアセットライブラリで使用することができます。また、前のセクションでデザインした任意のアセットをインポートすることも可能です。このツールの機能についての詳細は、インポータを参照してください。

経験にモジュラーアセットと小道具をインポートする方法:

  1. ファイル メニューから インポート を選択します。ファイルブラウザが表示されます。

  2. モジュラーアセットまたは小道具用の .fbx ファイルを選択します。

  3. オブジェクトプレビューを確認し、インポート設定がオブジェクトに正しいかを確認します。

  4. 警告やエラーメッセージを確認します。

  5. インポート をクリックします。アセットが エクスプローラー ウィンドウおよびビューポートに表示されます。

  6. 各モジュラーアセットおよび小道具についてこのプロセスを繰り返します。

  7. すべてのアセットを経験のグレーボックスジオメトリの近くの1つの領域に移動します。このゾーンがあなたのアセットライブラリになります。

SurfaceAppearanceデータの適用

サードパーティのモデリングソフトウェアでメッシュのUVをアンラップするプロセスを経ると、ソフトウェアはUVデータをメッシュの .fbx または .obj ファイル内に保存します。そのメッシュをStudioにインポートすると、結果として得られる MeshPart オブジェクトはそのデータを保持しますが、そのアセットにトリムテクスチャを表示するには、トリムシートからのテクスチャマッププロパティを持つ SurfaceAppearance オブジェクトを適用する必要があります。

アセットライブラリのアンラップされたメッシュに SurfaceAppearance テクスチャマップデータを適用する方法:

  1. エクスプローラー ウィンドウで、SurfaceAppearance パッケージをクリックし、CtrlD (D)を押してそれを複製します。
  2. 複製した SurfaceAppearance パッケージをモジュラーアセットまたは小道具に子要素として追加します。アセットはそのUVデータをテクスチャマップに適用し、視覚的な処理を表示します。
  3. 各モジュラーアセットと小道具についてこのプロセスを繰り返します。

物理およびレンダリングパラメータの設定

アセットがStudio内にあるので、すべてのデバイスで視覚品質を最大限に維持できるように、物理およびレンダリングパラメータを設定することが重要です。一般的に、このセクションのガイダンスに従うほど、あなたの経験をパフォーマンス向上につながります。しかし、各アセットを全体の環境の中でどこに配置するかを慎重に考慮し、あなたの美的目標やゲームプレイの要件を維持することが重要です。

固定

BasePart.Anchored プロパティは、Robloxエンジンの物理システムがオブジェクトの位置に影響を与えるかどうかを決定します。このプロパティを Part または MeshPart に対して有効にすると、動的シミュレーションの物理計算からオブジェクトが除外され、重力や他のオブジェクトからの衝突によって位置が変わることはありません。

物理応答をシミュレートしないオブジェクトは、物理計算に必要なGPUを占有しないため、描画コストが低くなります。GPUを解放すると、特に高速なゲームプレイのためにGPUを節約する必要がある低スペックデバイスでのパフォーマンスが向上します。このため、最終サンプルのレーザータグ環境では、ドアを除くすべてのアセットが固定されています。

CanCollide

BasePart.CanCollide プロパティは、オブジェクトが他のオブジェクトと物理的に相互作用できるかどうかを決定します。このプロパティを Part または MeshPart に対して有効にすると、オブジェクトは侵入不可能となり、Robloxエンジンは物理計算でそれを考慮します。これにより、エンジンが考慮しなければならないオブジェクトが多い場合、経験のパフォーマンスに影響を与える可能性があります。

パフォーマンスへの影響を軽減するために、ユーザーが絶対に相互作用しないオブジェクトのこのプロパティを無効にします。たとえば、最終サンプルのレーザータグ環境では、すべての葉に対してこのプロパティが無効化されています。

CanTouch

BasePart.CanTouch プロパティは、Touched および TouchEnded イベントがオブジェクトで発生するかどうかを判断します。このプロパティを Part または MeshPart に対して有効にすると、Robloxエンジンはオブジェクトの触れ合いイベントの状態をチェックし、イベントをトリガーする必要があるかどうかを判断します。

このプロセスは毎フレームで発生するため、エンジンが一度に多くのオブジェクトに触れ合いイベントの状態をチェックする必要があれば、大量のメモリを消費する可能性があります。この影響を軽減するために、イベントをトリガーする必要があるオブジェクトのみにこのプロパティを有効にします。

CanQuery

BasePart.CanQuery プロパティは、Robloxエンジンが空間クエリ操作(レイキャストなど)中にオブジェクトを考慮するかどうかを決定します。Studioはデフォルトで、すべての Part または MeshPart に対してこのプロパティを有効にしているため、エンジンは各オブジェクトが空間クエリ操作を呼び出す必要があるかどうかをチェックします。このプロセスは毎フレームで発生し、一度に多くのオブジェクトに対してこれらのチェックを行う必要がある場合、大量のメモリを消費する可能性があります。

このため、Robloxエンジンが空間クエリ操作に考慮する必要がないオブジェクトに対して、このプロパティを無効にすることが推奨されます。このプロパティを無効にする場所についての判断を行う際には、各アセットがゲームプレイにどのように影響するかを考慮してください。たとえば、最終サンプルのレーザータグ環境では、ユーザーがレーザーを発射する際にエンジンがこれらの表面を考慮する必要があるため、建物内のすべての壁に対してこのプロパティが有効にされています。エンジンがこれらのアセットを考慮しない場合、レーザーは建物を貫通してしまいます。

CastShadow

BasePart.CastShadow プロパティは、オブジェクトが影を落とすかどうかを決定します。このプロパティを Part または MeshPart に対して有効にすると、Robloxエンジンは実行時にオブジェクトの各頂点位置を計算し、太陽からその隣接オブジェクトまでレイキャストを描画します。このプロセスは、他のオブジェクトとの衝突があるまで続けられ、影を生成します。

これらの計算はパフォーマンスコストを伴う可能性があり、特に幾何学的複雑性のある多くのオブジェクトがある場合に影響が大きくなります。幾何学的複雑性のあるオブジェクトは、幾何学的にシンプルなオブジェクトよりも多くのポリゴンを持っており、影の計算のためにエンジンが処理しなければならない頂点が増えます。オブジェクト内のポリゴンが少ないほど、操作は迅速で、影も安価に生成されます。

ポリゴンが少なく、白い壁に影を落とす植物。

影は3Dジオメトリの深みを持つオブジェクトに現実感を提供するため、プロパティを無効にする場所を決定するときは、オブジェクトが環境に大きな視覚的改善をもたらす場所や、ユーザーが影の欠如に気付く場所を考慮してください。たとえば、外部空間においてフィリッジの複雑な影は、ユーザーがそれを目撃する可能性が高いため、高い没入感を提供することができますが、ユーザーが絶対に相互作用しない天井の隙間を通るフィリッジでは同じ没入感は必要ありません。

DoubleSided

MeshPart.DoubleSided プロパティは、メッシュの両面またはポリゴンをレンダリングするかどうかを決定します。このプロパティを平面 MeshPart で有効にすると(例えば、葉、髪、または布カード)、Robloxエンジンはユーザーがオブジェクトを見る角度に関係なくオブジェクトの満足感を見えるようにするために、メッシュ内の両面またはポリゴンをレンダリングします。たとえば、以下の木の葉は単面平面メッシュであり、このプロパティを有効にすると、カメラから離れた葉もユーザーに見えるようになります。

このプロパティは環境にリアリズムを加えるのに役立ちますが、オブジェクトのポリゴンを2回レンダリングする必要があるためパフォーマンスコストが伴います - 1回はユーザーのカメラに向かって、もう1回はユーザーのカメラから背を向けたメッシュのためです。このため、最終サンプルのレーザータグ環境では、このプロパティはフィリッジにのみ有効にされています。なぜなら、それは3D空間におけるリアリズムの視覚的影響が強いからです。

CollisionFidelity

MeshPart.CollisionFidelity プロパティは、メッシュやユニオンの物理ヒットボックスがその視覚表現とどれだけ密接に一致するかを決定します。デフォルトでは、この設定はメッシュのポリゴナル形状とほぼ同じヒットボックスを描画します。つまり、ユーザーがオブジェクトに衝突する際の位置はメッシュの実際のジオメトリに似ています。たとえば、以下の画像の城メッシュにはデフォルトのヒットボックスがあり、そのジオメトリのシェイプにほぼ一致します。

灰色の城メッシュ。
オリジナルメッシュ
ユーザーが城に衝突できる場所を示すカラフルなヒットボックスを持つ同じ城メッシュ。
デフォルト

このプロパティを異なる値に設定してメッシュのヒットボックスの精度を低下させることができます。たとえば、このプロパティをHullに設定すると、Robloxエンジンはメッシュのヒットボックスの頂点を大幅に減らし、このプロパティをBoxに設定すると、エンジンはメッシュを囲むキューブにヒットボックスを減らします。また、メッシュのヒットボックスの精度を向上させたければ、このプロパティをPreciseConvexDecompositionに設定して、ヒットボックスの頂点数を増加させることができます。

ユーザーが城に衝突できる場所を示すカラフルなヒットボックスを持つ同じ城メッシュ。
Box
ユーザーが城に衝突できる場所を示すカラフルなヒットボックスを持つ同じ城メッシュ。
Hull
ユーザーが城に衝突できる場所を示すカラフルなヒットボックスを持つ同じ城メッシュ。デフォルトのヒットボックスよりも多くのカラフルな面を示しています。
PreciseConvexDecomposition

BasePart.CastShadow と同様に、Robloxエンジンがレンダリングする必要のある頂点数が多いほど、パフォーマンスコストが高くなります。このため、ユーザーが各メッシュとどのように相互作用することを望んでいるかを考え、メッシュのヒットボックスのレンダリングに必要な頂点数を減らすことができるかを検討することが重要です。ヒットボックスが正確である必要がない場合は、このプロパティをBoxまたはHullに設定してください。

この概念を示すために、最終サンプルレーザータグ環境の1階と2階の間に高低差を提供する壁モデルの各メッシュのヒットボックスを示す以下の画像を参照してください。メインウォールのデフォルトのヒットボックスには不要なジオメトリが多く、実際にはユーザーがその方向に移動できない面を提供するだけの必要性しかありません。このため、このメッシュのプロパティをBoxに設定すると、冗長なジオメトリを取り除き、ヒットボックスの目的を維持しつつその形状を保持できます。

高低差を提供する壁モデル。
オリジナルメッシュ
ユーザーが壁と衝突できる場所を示すカラフルなヒットボックスを持つ同じ壁モデル。
デフォルト
トリム用のカラフルなヒットボックスを持つ同じ壁モデルですが、壁メッシュにはボックスヒットボックスのみが設定されています。
Box

これらの決定を行う際には、ユーザーが環境内でナビゲートする際に、デフォルト値を変更することがユーザーに負の影響を不必要に与える可能性があることを考慮することが重要です。たとえば、壁モデルのトリムメッシュにプロパティをBoxに設定すると、ユーザーが壁の近くでジャンプしようとした際にヒットボックスに衝突します。そのため、これらのメッシュはHullに設定して、頂点数を減らしつつ、ヒットボックスをメッシュの形状に近づけて保持することができます。

上部トリム用のボックスヒットボックスを持つ壁モデル。このボックスが突き出しているため、ユーザーは上部トリムに意図せず衝突する可能性があります。
Box
上部トリム用の艦ヒットボックスを持つ同じ壁モデル。艦ヒットボックスはモデルの上部に非常に近いので、ユーザーがトリムに衝突するのを回避できます。
Hull

メッシュの形状に正確に適合するヒットボックスを持つことは、特にユーザーがその形状とどのように衝突するかを正確に制御する必要がある場合に重要であることに注意してください。たとえば、最終サンプルのレーザータグ環境では、ユーザーがドアの端のみと衝突し、ドア本体とは衝突しないようにすることが重要です。そうでないと、戦闘ポケットに出入りすることは決してできません。

最適化されたヒットボックスメッシュを持つドアモデリング。

RenderFidelity

MeshPart.RenderFidelity プロパティは、ユーザーに表示されるメッシュの詳細レベルを決定します。このプロパティを Enum.RenderFidelity.Automatic に設定すると、ユーザーがメッシュから遠くにいるほど、Robloxエンジンはメッシュの精度を減少させます。逆にこのプロパティを Enum.RenderFidelity.Precise に設定した場合、メッシュの全ての頂点が、距離に関係なく、意図したとおりにレンダリングされます。

エンジンが、特に高い頂点数を持つオブジェクトを、あらゆる距離からユーザーに正確にレンダリングする必要がある場合、そのパフォーマンスコストは高くなります。このため、このプロパティを幾何学的複雑性のあるオブジェクト、通常はサンプルアセットライブラリ内のフィリッジなどに設定すると、ゲームプレイ要件から遠く離れた距離から全体を表示する必要はなくなります。これにより、全体のビジュアル品質を下げることなく経験のポリゴン数が減少します。

アセットをパッケージに変換する

アセットがStudio内にあり、すべてのユーザーのために高い視覚品質を維持するためのレンダリングパラメータが設定されているので、これらをパッケージに変換する時が来ました。アセットをパッケージに変換することは、現在の経験や他のプロジェクト全体で繰り返し再利用できるから重要です。また、パッケージに変更を加えると、自動的にすべてのインスタンスにそれが反映されるため、反復プロセスの時間を大幅に節約できます。

SurfaceAppearance オブジェクトがすでにパッケージであるため、Model オブジェクトをパッケージに変換すると、それらは入れ子型のパッケージになります。入れ子型のパッケージは、Model オブジェクトパッケージから独立して修正できる子オブジェクトの複雑な階層を維持できます。これにより、アセットの個別コンポーネントに対するより大きな制御が可能になります。

モジュラーアセットと小道具をパッケージに変換する方法:

  1. エクスプローラーウィンドウで、モジュラーアセットまたは小道具を右クリックし、コンテキストメニューから パッケージに変換 を選択します。パッケージに変換ダイアログが表示されます。

  2. タイトルおよび説明フィールドに入力し、所有権を自分自身またはグループに設定してから、提出ボタンをクリックします。完了すると、モデルのアイコンの上に鎖リンクシンボルが表示され、パッケージとして識別されます。

    鎖リンクシンボルを持つモデルアイコン。
  3. 各モジュラーアセットおよび小道具に対してこのプロセスを繰り返します。

アセットライブラリの全体的なレイアウトに満足したら、磨き上げた新しいアセットで環境を装飾し、3D空間の追加要素を設定して、あなたの世界に命を吹き込むことができます。

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。