火山は、地殻内のクレーターで、マグマや溶けたガスによる内部圧力のために溶岩や煙を噴出します。体験には、プレイヤーが溶岩や溶融岩の危険と貴重な資源、ボスバトルアリーナ、または火山が周期的に噴火することで動的に変化する環境における報酬のバランスを取らなければならない、困難なゲームプレイエリアの火山が含まれることがよくあります。
Volcano Island - Start .rbxlファイルを出発点として、Volcano Island - Completeを参照として、このチュートリアルでは、リアルワールドの物理挙動を表すカスタムライティングとVFXオブジェクトを使用して、環境を火山の噴火に変換する方法を示します。その内容には以下のガイダンスが含まれています:
- 参照資料を、明確な視覚的および行動的特性を持つ個々のコンポーネントに分解すること。
- 温かい流体が表面に上昇してカリデラの表面を乱す様子を模倣するために、表面の波紋を構成すること。
- 大気中に上昇する際に急速に冷却される溶融岩の断片を模倣するために、いくつかの微小な発火物を構成すること。
- カリデラから噴出し流れる溶岩を、さまざまな溶岩の粘度状態を模倣するために構成すること。
- プレイヤーの注意を引くために空に上昇する厳しい不純物を模倣する煙の立ち上りの構成。


参照の分解
信頼性のある火山を作成するためには、デザインプロセスで実際の火山噴火を参照することが重要です。そうすることで、対象を独自の視覚的および行動的特性を持つ個々のコンポーネントに分解できます。たとえば、サンプルのVolcano Island - Complete体験は、アイスランドの火山噴火を参照して、カリデラやその周囲の地形に関連するすべてのテクスチャとVFXデザインの決定を行います。

噴火している火山を個々のコンポーネントに分解することは有用であり、さまざまなVFXオブジェクトを利用して現実の対策を模倣する方法を計画できます。このチュートリアルでは、サンプル火山を5つの独自のコンポーネントに分解します:
- 表面の波紋 – カリデラの表面にある小さな溶岩の波。
- 発火物 – カリデラから空に上昇する小さくて軽い溶融岩の断片。
- 溶岩の跳ね返り – 火山内の内部圧力により、カリデラから飛び出す薄い溶融岩。
- 溶岩流 – カリデラから流れ出る粘り気のある溶融岩。
- 煙の立ち上り – カリデラから空に上昇する暖かく漂うガス。


以下のセクションでは、これらのコンポーネントを再現するために使用することができる異なるデザインの決定やテクニックに関して詳細な分析を提供します。これらの決定を見直し、さまざまなライティング、ParticleEmitter、およびBeamプロパティを試すことで、ライティングやVFXを利用して自身の体験のユニークな環境要件を解決する方法を学んでいきます。
ライティングの構成
環境の要素を体験の中で注目すべきポイントにするためには、全体の環境に対してコントラストを高めることが重要です。例えば、プレイヤーをカリデラに引き込むために、他の暗い環境の中で火山の溶岩が唯一の光源として輝いて見えるようにライティングソースを構成できます。
Studioは、次の2つの高レベルのライティングソースをこの手法で使用することができます:
- グローバルライティング - 屋外全体の環境に対してライティングを生成します。
- ローカルライティング - あなたが体験の中で配置した場所周辺のライティングを生成します。
このチュートリアルのこのセクションでは、火山の噴火をシーン内の最も重要なポイントにするために、両方のタイプのライティングソースを利用する方法と、環境ストーリーテリングに対してドラマティックな効果を作成する方法を教えます。たとえば、カスタムライティングなしでは同じ最終火山が、他の明るい環境内で目立たない危険であるように感じるのに対し、カスタムライティングがある火山は暗く憂鬱な環境の中で危険な存在のように感じさせます。


ローカルライティング
ローカルライティングは、体験内のローカル光源からの光です。SpotLight、SurfaceLight、およびPointLightオブジェクトなどのローカルライティングを火山に追加することは重要です。これにより、明るさをParticleEmitterやBeamのテクスチャに適用できますが、カリデラの環境をリアルにシミュレートするために十分な光を満たすことはできません。


このチュートリアルでは、最初にローカルライティングを構成することが役立ちます。ローカル光源がないと、VFXオブジェクトを構成できる3D空間を見ることができません。しかし、一般的なワークフローでは、VFXオブジェクトに対する変更の効果を確認するために、ローカルおよびグローバルライティングの両方を同時に反復処理する必要があるため、自身の体験のデザイン要件に柔軟であることが重要です。
サンプルVolcano Island - Completeプレースファイルでの火山のローカルライティングを再現するには:
Explorerウィンドウで、すべてのローカル光源オブジェクトを含むためにWorkspaceにFolderを作成し、フォルダーの名前をLocalLightingに変更します。
LocalLightingフォルダーに3つのblockパーツを挿入し、それぞれの名前をLightCaldera、LightMagma、LightOutflowに変更します。
パーツを火山の全体に光を当てる位置に移動します。
- LightCalderaをカリデラと崖の間の空間の中心に移動します。
- LightMagmaをカリデラとマグマ流出の間の割れ目の中心に移動します。
- LightOutflowを流出が2つの流れに分かれるところよりも少し上に移動します。

各部分にPointlightを挿入します。

LightCalderaのPointLightを選択し、Propertiesウィンドウで
- Brightnessを15に設定し、光源をかなり明るくします。
- Colorを255, 85, 0に設定し、光に暗いオレンジ色の色合いをつけます。
- Rangeを60に設定し、カリデラエリア全体を照亮します。

LightMagmaとLightOutflowのPointLightを選択し、Propertiesウィンドウで
- Brightnessを2に設定し、光源を少し明るくします。
- Colorを255, 81, 0に設定し、光にオレンジ色の色合いをつけます。
- Rangeを50に設定し、割れ目と流出エリアを照亮します。

Explorerウィンドウで、LocalLightingフォルダー内のすべてのブロックパーツを選択し、PropertiesウィンドウでTransparencyを1に設定して、ブロックを見えなくします。

グローバルライティング
グローバルライティングは、体験内で太陽または月からの明るさです。Lightingサービスとその子孫のポストプロセッシング効果オブジェクトでいくつかの重要なデフォルトプロパティを調整することにより、グローバルな光がプレイヤーにどのように表示されるか、ならびに体験内に配置した他の任意のオブジェクトとの相互作用に大きな変化を与えられます。ParticleEmitterやBeamテクスチャなど。
たとえば、後のチュートリアルで流れる溶岩効果を生成するBeamテクスチャが輝くことを確認するには、BloomEffectプロパティを構成して、明るい光を見るカメラのようにライティングを誇張する必要があります。同様に、夜間によりリアルな色を模倣するには、環境全体を脱色するように効果のプロパティを調整する必要があります。


サンプルVolcano Island - Completeプレースファイルにおけるグローバルライティングを再現するには:
Explorerウィンドウで、Lightingサービスを選択し、Propertiesウィンドウで
- Ambientを133, 152, 176に設定して、全体の屋外環境にライトグレーの色合いを設定します。
- Brightnessを2に設定して、グローバル光源を少し暗くします。
- ColorShift_Topを207, 178, 72に設定して、グローバル光源に向かう面から反射する光の黄色の色合いを設定します。
- LightingStyleをRealisticに設定して、Robloxの最も高度なライティング技術を利用します。
- ClockTimeを4.3に設定して、午前4時15分ごろの時間を設定します。
- GeographicLatitudeを199に設定して、月の位置を変更します。
- ExposureCompensationを-1に設定して、環境に月からの露出を半分にします。

Explorerウィンドウで、LightingサービスのBloom子を選択し、Propertiesウィンドウで
- Intensityを0.75に設定し、環境内のすべての色をわずかに暗くします。
- Sizeを80に設定し、より広いブルーム効果を作成します。
- Thresholdを0.85に設定し、環境内のより多くの色が輝くことを許可します。

Explorerウィンドウで、LightingサービスにColorCorrectionオブジェクトを挿入し、Propertiesウィンドウで
- Brightnessを0.017に設定し、ピクセルの色をわずかに変更します。
- Contrastを0.25に設定し、環境内の明るい色と暗い色の間にシャープなコントラストを作成します。
- Saturationを-0.15に設定し、環境内の色を脱色します。
- TintColorを255, 214, 143に設定し、ピクセルに明るい黄色の色合いを与えます。

(オプション) 空に雲を挿入して間接光を提供します。
- Explorerウィンドウで、TerrainサービスにCloudsオブジェクトを挿入します。
- Cloudsオブジェクトを選択し、Propertiesウィンドウで、
- Coverを1に設定して、空を完全に雲で覆います。
- Densityを0.08に設定し、雲の密度を少なくします。
- Colorを136, 143, 152に設定し、雲の覆いに明るいグレー色を設定します。

火山の構成
ローカルおよびグローバルライティングの構成が完了したので、実際の火山とその周囲の地形に関連するすべてのVFXオブジェクトを構成する時間です。サンプルのVolcano Island .rbxlファイル内で最終的な環境を正確に再現する手順に従いながら、各ステップが環境にキャラクター、動き、明るさを追加するためにどのように機能するかを観察してください。
表面の波紋
表面の波紋は、地下のマグマと圧力のかかったガスが上昇して表面を乱すことによって、カリデラの表面を流れる小さな溶岩の波です。この視覚現象は、浮力作用(温かい流体が表面に上昇する際の流体内の動き)を伝え、シーンのリアリズムを向上させます。
表面の波紋は、プレイヤーに火山の噴火の状態に関する貴重な洞察を提供します。たとえば、マグマとガスが上昇するのに十分な力でカリデラの溶岩の状態を乱し、渦を生じさせる場合、プレイヤーは火山が沸騰するマグマで活発に噴火していると推測し、このゲームプレイエリアの周囲に注意を払うべきであると認識します。

このプロセスを示すために、サンプルではカリデラの底部の少し下にParticleEmitterオブジェクトを使用して、暗い背景の上で徐々に拡大しては収縮する平らで明るい粒子を放出します。これにより、粒子は自然の中で要素が移動するリアルな方法に似た形で、滑らかで連続的に渦を巻く溶岩の挙動を模倣することができます。

サンプルVolcano Island - Completeプレースファイルでカリデラの上に表面の波紋を再現するには:
Explorerウィンドウで、すべてのカリデラオブジェクトを含むフォルダーをWorkspaceに作成し、フォルダーの名前をCalderaに変更します。
表面の波紋に対して高コントラストの背景を提供するバックドロップを作成します。
Calderaフォルダーにblockパーツを挿入し、その名前をBackdropに変更します。
Backdropをカリデラの全体にわたってわずかに超える位置に配置し、スケールを調整します。このパーツはカリデラのローカル光源の近くにあるため、光っているように見えます。

Backdropを選択し、Propertiesウィンドウで、
Colorを0, 0, 0に設定して、ブロックを黒にします。
MaterialをFoilに設定して、バックドロップにテクスチャを追加します。

波紋効果を作成します。
- Backdropを複製し、名前をMagmaRipplesに変更して、カリデラの表面のサイズにわずかに縮小します。
- MagmaRipplesを選択し、PropertiesウィンドウでTransparencyを1に設定してブロックを透明にします。
- MagmaRipplesにParticleEmitterを挿入し、エミッタにRipplesという名前を付けます。
- Ripplesを選択し、Propertiesウィンドウで
Textureをrbxassetid://16829556885に設定し、泡の波紋のように見える粒子を描画します。
OrientationをVelocityPerpendicularに設定し、粒子が移動する方向に対して垂直に発射します。
Colorを時間とともに粒子が茶色、明るい赤、マルーンに変わるカラーシーケンスに設定します。
- Colorプロパティをクリックし、**⋯**ボタンをクリックします。カラ―シーケンスのポップアップが表示されます。

カラーシーケンスの下軸の各三角形は、その点でのプロパティの色値を決定するキーポイントです。
- カラーシーケンスに沿った以下の時間と値プロパティを設定します:
- Time = 0, RGB Value = 130, 53, 2
- Time = 0.5, RGB Value = 224, 37, 0
- Time = 1, RGB Value = 147, 5, 0

Sizeを、粒子が寿命の中間でサイズを増加させ、その後、若干の変動を持ちながら元のサイズに戻るような数値シーケンスに設定します。
- Sizeプロパティをクリックし、**⋯**ボタンをクリックします。数値シーケンスのポップアップが表示されます。

各数値シーケンスの開始と終了の四角形は、左から右に向かうテクスチャのポイントでプロパティのサイズ値を決定するキーポイントです。
数値シーケンスに沿って以下の時間と値プロパティを設定します:
- Time = 0, Value = 4.81, Envelope = 0.438
- Time = 0.341, Value = 8.75, Envelope = 0.48
- Time = 0.497, Value = 9.38, Envelope = 0.5
- Time = 0.644, Value = 8.75, Envelope = 0.48
- Time = 1, Value = 4.81, Envelope = 0.438

Transparencyを、粒子が透明から始まり、寿命の中間でより不透明になり、最後には再び透明になるような数値シーケンスに設定します。
Transparencyプロパティをクリックし、**⋯**ボタンをクリックします。
数値シーケンスに沿って以下の時間と値プロパティを設定します:
- Time = 0, Value = 1, Envelope = 0
- Time = 0.3, Value = 0.387, Envelope = 0.0375
- Time = 0.5, Value = 0.269, Envelope = 0.0812
- Time = 0.7, Value = 0.381, Envelope = 0.05
- Time = 1, Value = 1, Envelope = 0

ZOffsetを-2に設定して、テクスチャをカリデラからわずかに外れた位置に配置します。
Lifetimeを5, 8に設定して、各粒子の寿命を5秒から8秒の間にランダムに設定します。
Rateを12に設定して、毎秒12粒子を放出します。
Rotationを-360, 360に設定して、各粒子を円形にランダムに回転させます。
Speedを0.01に設定して、各粒子を毎秒0.1スタッド放出します。
LightEmissionを1に設定して、粒子を大幅に明るくします。
LightInfluenceを0に設定して、環境光が粒子の色に影響を与えないようにします。
Brightnessを15に設定して、エミッタから放出される光をスケールします。
発火物
発火物は、カリデラから噴出し、上昇する際に熱を急速に放出する小さくて軽い溶融岩の断片です。表面の波紋と同様に、発火物は地下の内部圧力が上昇し、熱い元素が溶岩の表面張力を破って圧力を解放していることを示します。
サンプルは、このプロセスを再現するために、テクスチャに動きのぼかしを加えた粒子を放出するParticleEmitterオブジェクトを使用しています。粒子が上昇し、寿命の終わりに達したとき、エミッタは粒子を1:1比率に圧縮して円に再形成します。この技術により、粒子はカリデラから急速に移動するように見え、その後、空に消散するときに速度が落ちるように見えます。

さらに、粒子が上昇するにつれて、色、透明度、そしてサイズを変化させて温度の変化を反映します。例えば、粒子は大きな茶色の粒子から始まり、急速に小さなオレンジ色を経てマルーン色の粒子に変わります。この戦略は、峡谷全体のライティングを微妙に反映し、プレイヤーの環境への没入感を高めるという利点もあります。
サンプルVolcano Island - Completeプレースファイル内のカリデラの表面から発火物を再現するには:
Calderaフォルダーにcylinderパーツを挿入し、名前をGlowingEmbersに変更します。
GlowingEmbersを位置して、表面の波紋の上に配置し、カリデラの内部を満たすまでスケールします。このパーツはカリデラのローカル光源の近くにあるため、光っているように見えます。

GlowingEmbersを選択し、PropertiesウィンドウでTransparencyを1に設定して、シリンダーを透明にします。
GlowingEmbersにParticleEmitterを挿入し、エミッタにEmbersという名前を付けます。
Embersを選択し、Propertiesウィンドウで、
- Textureをrbxassetid://17581858560に設定し、水平および垂直に細長い粒子を描画します。
- OrientationをVelocityParallelに設定し、移動する方向に平行に粒子を放出します。
- Colorを、粒子が茶色、オレンジ色、そしてマルーン色になるカラーシーケンスに設定します。
- Time = 0, RGB Value = 130, 53, 2
- Time = 0.5, RGB Value = 224, 82, 0
- Time = 1, RGB Value = 147, 5, 0

- Sizeを、粒子が寿命を通じてゆっくり減少するような数値シーケンスに設定します。
- Time = 0, Value = 0.313, Envelope = 0.1
- Time = 1, Value = 0, Envelope = 0

- Squashを持つ数値シーケンスに設定し、粒子が寿命の中間あたりで少し伸びるように設定します。
- Time = 0, Value = -3, Envelope = 0
- Time = 0.323, Value = -0.188, Envelope = 0
- Time = 1, Value = -0.5, Envelope = 0

- Transparencyを持つ数値シーケンスに設定し、粒子が上昇する際にランダムに不透明度を変更します。実際の値は重要ではなく、粒子の寿命の間に多くの変化があればよいです。

- ZOffsetを1に設定して、テクスチャをカリデラからわずかに離れた位置に配置します。
- Lifetimeを1, 5に設定して、各粒子の寿命を1秒から5秒の間にランダムに設定します。
- Speedを5, 8に設定して、各粒子を毎秒5スタッドから8スタッドの間で放出します。
- SpreadAngleを180, 180に設定して、XおよびZ軸に沿って粒子を放出します。
- Accelerationを0, 10, 0に設定して、上向きの力をシミュレートし、粒子を空に引き上げます。
- Dragを0.8に設定して、粒子が指数的に速度を失うようにします。
- LightEmissionを1に設定して、粒子を大幅に明るくします。
- LightInfluenceを0に設定して、環境光が粒子の色に影響を与えないようにします。
- Brightnessを20に設定して、エミッタから放出される光をスケールします。
溶岩の跳ね返り
溶岩の跳ね返りは、内部マグマと圧力のかかったガスが、カリデラ上部の溶岩の表面張力を破るために困難の役割を果たす薄い溶融岩の噴出です。この火山のコアコンポーネントは、火山がもはや休止状態でなく、積極的に噴火していることを判断するための最も一般的な兆候の1つです。
サンプルは、このプロセスを、寿命を通じて各粒子のテクスチャをアニメートするためにフリップブックを利用する2つのParticleEmitterオブジェクトで表現しています。最初の粒子エミッタは、重くて濃いスプラッシュのように見える粒子を放出し、これにより遅く上昇して再び火山に落ちていきます。逆に、2つ目の粒子エミッタは、軽くて薄いウェビーなスプラッシュのように見える粒子を放出し、これにより速く上昇して再び落ちていきます。


各粒子エミッタは、64フレームにわたってテクスチャをアニメートし、滑らかでリアルな物理的振る舞いを模倣します。1つの粒子エミッタだけを使用することもできますが、アニメーションの繰り返しが明らかになって、プレイヤーの没入感が破壊されてしまいます。しかし、2つの粒子がわずかに異なるカスタムプロパティを持つフリップブックをアニメートする場合、繰り返しを見つけるのがはるかに困難です。
サンプルでは、エアレーション効果を生成するParticleEmitterオブジェクトを提供し、さらに軽いウェビーなスプラッシュを表現します。この技術により、空間は動的な動きで満たされ、フリップブックアニメーションの繰り返しがさらに隠されます。また、体験にCreating Waterfallsが含まれている場合は、異なるゲームプレイエリアで同じテクスチャを再利用でき、メモリを節約し、低性能デバイスでのパフォーマンスを向上させることができます。

サンプルVolcano Island - Completeプレースファイル内のカリデラの表面から跳ね返る溶岩を再現するには:
Calderaフォルダーにcylinderパーツを挿入し、名前をSplashingLavaに変更します。
SplashingLavaを表面の波紋の上に配置し、溶岩が弾ける中央となる場所をカバーするまでスケールを調整します。このパーツはカリデラのローカル光源に近いため光っているように見えます。

SplashingLavaを選択し、PropertiesウィンドウでTransparencyを1に設定し、シリンダーを透明にします。
SplashingLavaにParticleEmitterを挿入し、エミッタにWebbySplashesという名前を付けます。
WebbySplashesを選択し、Propertiesウィンドウで、
- Textureをrbxassetid://17363668312に設定し、ウェビーなスプラッシュのように見える粒子を描画します。
- OrientationをFacingCameraWorldUpに設定し、カメラに向かう粒子ですが、垂直の上方向にのみ回転するようにします。
- Colorを255, 152, 79に設定し、粒子に明るいオレンジ色の色合いを追加します。
- Sizeを、粒子が寿命を通じてサイズを拡大するような数値シーケンスに設定します。
- Time = 0, Value = 4.31, Envelope = 0.762
- Time = 1, Value = 6.2, Envelope = 0.875

- Squashを持つ数値シーケンスに設定し、粒子が寿命の間にわずかに伸びるようにします。
- Time = 0, Value = -0.075, Envelope = 0.263
- Time = 1, Value = -0.413, Envelope = 0.412

- ZOffsetを1に設定して、テクスチャをカリデラからわずかに離れた位置に配置します。
- Lifetimeを1.5, 2に設定して、各粒子の寿命を1.5秒から2秒の間にランダムに設定します。
- Rateを0.37に設定して、約3秒ごとに粒子を放出します。
- RotSpeedを-20, 20に設定して、各ポリシーを-20度から20度の間でランダムに放出します。
- Speedを2に設定して、各粒子を毎秒2スタッド放出します。
- SpreadAngleを5, 5に設定して、XおよびZ軸に沿った小さな角度で粒子を放出します。
- FlipbookLayoutをGrid8x8に設定して、64フレームでテクスチャをアニメートします。
- FlipbookModeをOneshotに設定して、アニメーションが寿命の間に1回だけ再生されるようにします。
- Dragを0.5に設定して、粒子が指数的に速度を失うようにします。
- LightEmissionを0.1に設定して、粒子をわずかに明るくします。
- LightInfluenceを0.25に設定して、環境光が粒子の色に与える影響を大幅に低下させます。
DenseSplashesを複製し、Propertiesウィンドウで以下のプロパティを変更して追加の溶岩スプラッシュに変化をもたらします。
- NameをDenseSplashesに設定します。
- Textureをrbxassetid://17363669906に設定して、密なスプラッシュのように見える粒子を描画します。
- Sizeを、粒子が寿命を通じてサイズを増加するような数値シーケンスに設定します。
- Time = 0, Value = 5.75, Envelope = 0.762
- Time = 1, Value = 7.37, Envelope = 0.875

- Squashを持つ数値シーケンスに設定し、粒子が寿命の間にわずかに伸びるようにします。
- Time = 0, Value = 0, Envelope = 0.225
- Time = 1, Value = -0.262, Envelope = 0.15

- Rateを0.289に設定して、粒子をほぼ毎4分の1秒で放出します。
カリデラに追加のスプラッシュを補充します。
SplashingLavaにParticleEmitterを挿入し、エミッタにSplashFillという名前を付けます。
SplashFillを選択し、Propertiesウィンドウで、
- Textureをrbxassetid://17082061238に設定して、軽いウェビーなスプラッシュのように見える粒子を描画します。
- OrientationをFacingCameraWorldUpに設定し、カメラに向かう粒子ですが、垂直の上方向にのみ回転するようにします。
- Colorを255, 152, 33に設定して、粒子をオレンジ色の色合いで染めます。
- Sizeを、粒子が寿命を通じてサイズを増加するような数値シーケンスに設定します。
- Time = 0, Value = 1.25, Envelope = 0.388
- Time = 1, Value = 6.38, Envelope = 0.563

- Transparencyを持つ数値シーケンスに設定し、粒子が透明から始まり、Opaque 赤く再び透明になるように設定します。
- Time = 0, Value = 1, Envelope = 0
- Time = 0.19, Value = 0, Envelope = 0
- Time = 0.795, Value = 0, Envelope = 0
- Time = 1, Value = 1, Envelope = 0

- ZOffsetを1に設定して、テクスチャをカリデラからわずかに離れた位置に配置します。
- Lifetimeを1.5に設定して、各粒子の寿命を1.5秒に設定します。
- Rateを8に設定して、8秒ごとに粒子を放出します。
- Rotationを0, 360に設定して、各粒子を半円の中でランダムに回転させます。
- RotSpeedを-50, 50に設定して、粒子を-50度から50度の間でランダムに放出します。
- Speedを12, 20に設定して、粒子を毎秒12スタッドから20スタッドの間でランダムに放出します。
- SpreadAngleを45, 45に設定して、XおよびZ軸に沿った角度で粒子を放出します。
- Accelerationを0, -25, 0に設定して、重力をシミュレートし、粒子を戻すようにします。
- Dragを1に設定して、粒子が指数的に速度を失うようにします。
- LightEmissionを1に設定して、粒子を大幅に明るくします。
- LightInfluenceを0に設定して、環境光が粒子の色に影響を与えないようにします。
- Brightnessを8に設定して、エミッタから放出される光をスケールします。
溶岩流
溶岩流は、火山の噴火中にカリデラから噴出し、地球の表面をゆっくりと流れる溶岩の塊です。溶岩は空気にさらされることで冷却され、固化し、固体岩に変わり、新たな陸地を形成します。
このプロセスをシミュレートするために、サンプルは、カリデラからさらに離れた場所まで移動する際に冷却される溶岩の行動特性を模倣するために、シームレスなテクスチャとプロパティ構成を持つ複数のBeamオブジェクトを重ねています:
- 底層は、色を温かい色から冷たい色に変化させつつ、溶岩が温度を下げ始めることを伝える平坦な色を描画します。
- 中間層は、暗い地殻のように見える黒いテクスチャを描画し、下にある溶岩の炎を明らかにする穴を持っています。
- 最上層も中間層と同じテクスチャを、より遅い速度で、逆に接続されて、それぞれ異なるプロパティ構成で描画します。このことは、全く同じ方向でレンダリングする際にテクスチャが完全に重ならないようにし、プレイヤーが非現実的なテクスチャの繰り返しを容易に見つけられないようにします。



3つのBeamオブジェクトを重ねることで、溶岩が異なる速度で流れているように見える奥行きとボリュームの錯覚を作り出します。これにより、溶岩の表面およびその下の動きの渦の感覚をプレイヤーに知らせます。

サンプルVolcano Island - Completeプレースファイル内のカリデラから流れる溶岩を再現するには:
Explorerウィンドウで、すべての流れる溶岩オブジェクトを含むフォルダーをWorkspaceに作成し、そのフォルダーにFlowingMagmaという名前を付けます。
FlowingMagmaフォルダーにblockパーツを挿入し、名前をMagmaRiverBeamに変更します。
MagmaRiverBeamをカリデラの端の直下に移動します。

流れる溶岩ビームがテクスチャをレンダリングするために使用する取り付け部品をすべての流れる溶岩ビームに挿入します。
- MagmaRiverBeamに取り付け部品を挿入し、取り付け部品がカリデラを表示するように回転させます。
- MagmaRiverBeamにもう1つの取り付け部品を挿入し、割れ目の分岐の方向に配置し、取り付け部品が地下に向くように回転させます。

MagmaRiverBeamにBeamを挿入し、名前をMagmaに変更します。
パーツの取り付け部品をMagmaに割り当てます。
- ExplorerウィンドウでMagmaを選択します。
- Propertiesウィンドウで、
- Attachment0をカリデラの端の取り付け部品に設定します。
- Attachment1を割れ目の分岐の取り付け部品に設定します。ビームは2つの取り付け部品の間にデフォルトのテクスチャをレンダリングします。

ビームのビジュアル外観をカスタマイズして、流れる溶岩のように見えるようにします。
Explorerウィンドウで、Magmaが選択された状態であることを確認します。
Propertiesウィンドウで、
- Width0を50に設定して、レンダリングが開始される軸からテクスチャを広げます。
- Width1を50に設定して、割れ目の分岐に当たるとテクスチャを広げます。
- CurveSize0を-50に設定して、テクスチャが割れ目の底から外れるようにします。
- CurveSize1を5に設定して、テクスチャを割れ目の分岐に向けます。
- Colorを、溶岩が冷え始めるために明るい赤から暗い赤に変化するカラーシーケンスに設定します。
- Time = 0, RGB Value = 255, 51, 0
- Time = 0.5, RGB Value = 211, 39, 0
- Time = 1, RGB Value = 118, 24, 0

- Transparencyを、取り付け部品の間で溶岩がより鮮やかに見えるようになる数値シーケンスに設定します。
- Time = 0, Value = 1
- Time = 0.0916, Value = 0
- Time = 0.867, Value = 0
- Time = 0.941, Value = 0.725
- Time = 1, Value = 1

- LightEmissionを1に設定してビームを非常に明るくします。
- LightInfluenceを0に設定して、環境光がビームの色に影響を与えないようにします。
- Brightnessを8に設定して、ビームから放出される光をスケールします。
別のBeamをMagmaRiverBeamに挿入し、名前をCrust1に変更し、取り付け部品をCrust1に接続します(手順6のプロセスを使用)。
ビームのビジュアル外観をカスタマイズして、溶岩の上に地殻があるように見えるようにします。
Explorerウィンドウで、Crust1が選択された状態であることを確認します。
Propertiesウィンドウで、
- Textureをrbxassetid://17023930265に設定して、流れる地殻のように見える新しいテクスチャをレンダリングします。
- Width0を35に設定して、レンダリングが開始される軸からテクスチャを広げます。
- Width1を25に設定して、割れ目の分岐に当たるとテクスチャを広げます。
- TextureSpeedを0.01に設定して、テクスチャの流れを大幅に遅くします。
- TextureLengthを3に設定して、テクスチャの長さをわずかに引き伸ばします。1. CurveSize0 を -50 に設定して、テクスチャが亀裂の床から離れるようにカーブさせます。
- CurveSize1 を 5 に設定して、テクスチャを亀裂の分岐に沿ってカーブさせます。
- Color を 83, 83, 83 に設定して、ビームを灰色に着色します。
- Transparency を数値のシーケンスに設定して、付着点の間で地殻がより鮮やかになるようにします。
- Time = 0, Value = 1
- Time = 0.22, Value = 0
- Time = 0.85, Value = 0
- Time = 1, Value = 1

- ZOffset を 1 に設定して、テクスチャがカルデラからわずかに離れるようにオフセットします。
Crust1 を複製して Crust2 と名前を変更し、Properties ウィンドウで、
- Attachment0 を亀裂の分岐の取り付け部分に設定します。
- Attachment1 をカルデラの端の取り付け部分に設定します。
- Width0 を 25 に設定して、テクスチャが描画を開始する軸から広げます。
- Width1 を 35 に設定して、テクスチャが亀裂の分岐に達する時に広がるようにします。
- TextureSpeed を -0.008 に設定して、テクスチャの流れを大幅に遅くします。
- TextureLength を 2 に設定して、テクスチャの長さをわずかに不伸縮にします。
- CurveSize0 を -5 に設定して、テクスチャが亀裂の床から離れるようにカーブさせます。
- CurveSize1 を 50 に設定して、テクスチャを亀裂の分岐に沿ってカーブさせます。
- ZOffset を 2 に設定して、他の地殻からテクスチャをオフセットします。
(オプション) この同じプロセスを使用して、亀裂の分岐周辺にさらにビームを作成してマグマを派生させます。テクスチャを遅くし、冷却されるにつれて色が暗くなるマグマをシミュレートするためにプロパティを調整することを忘れないでください。
煙の噴煙
カルデラからの 煙の噴煙 は、暖かい圧力ガス、蒸気、および火山灰を大気中に放出します。この火山排出物の混合物は現実の世界で何マイルも見えるため、火山のデザインには大きな煙の噴煙が3D空間での重要な興味のポイントとして組み込まれることがよくあります。
爆発的な噴火の直後に見られる厚い火山灰の煙を放出するのではなく、サンプルでは ParticleEmitter オブジェクトを使用して、上昇するにつれて色が変わる薄い煙の蒸気のような粒子を放出します。この技法は二つの目的を達成します:
- 背景のクレーターのシルエットを壊して、火山の噴火周辺により視覚的な興味を生み出します。
- 煙が環境の光を受け入れているように見える一方で、煙が空気中に不純物を燃やしているかのように暗い存在を放出します。最終的には夜空のような灰色になります。

サンプル Volcano Island - Complete プレースファイルからカルデラの煙の噴煙を再現するには:
Caldera フォルダに ブロック パーツを挿入し、SmokePlume と名前を変更します。
SmokePlume をカルデラの下に配置し、カルデラの表面積の大きさに約合うようにスケールします。

SmokePlume に ParticleEmitter を挿入し、発射体の名前を Smoke に変更します。
Smoke を選択し、Properties ウィンドウで、
- Texture を rbxassetid://16830673704 に設定して、厚い煙のような粒子を描画します。
- Color を、粒子がカルデラから空に向かって環境の光をシミュレートする色シーケンスに設定します。黒から始まり、薄い桃色から灰色へと変わります。
- Time = 0, RGB Value = 0, 0, 0
- Time = 0.374, RGB Value = 195, 104, 76
- Time = 0.469, RGB Value = 225, 121, 86
- Time = 0.709, RGB Value = 111, 111, 111
- Time = 1, RGB Value = 113, 113, 113

- Transparency を、粒子が透明から始まり、寿命の初期に完全に不透明になり、寿命の終わり近くで再び透明になる数値シーケンスに設定します。
- Time = 0, Value = 1
- Time = 0.0622, Value = 0
- Time = 0.845, Value = 0
- Time = 1, Value = 1

- ZOffset を -10 に設定して、テクスチャをカルデラの上部に近くオフセットします。
- Lifetime を 50, 60 に設定して、各粒子の寿命を50秒から60秒の間でランダムに設定します。
- Rate を 0.3 に設定して、約3秒ごとに粒子を放出します。
- Rotation を -360, 360 に設定して、各粒子を円の中でランダムに向けます。
- RotSpeed を -5, 5 に設定して、各粒子を-5から5度の間でランダムに放出します。
- SpreadAngle を 5, 5 に設定して、X軸とZ軸に沿って小さな角度で粒子を放出します。
- Acceleration を 0, 7, 0 に設定して、上向きの力をシミュレーションし、粒子を空に引き上げます。
- Drag を 1 に設定して、粒子が指数関数的に速度を失います。
- WindAffectsDrag を有効にして、環境の風が煙を押し流します。
- LightEmission を 0.1 に設定して、粒子をわずかに明るくします。
- LightInfluence を 0.06 に設定して、環境の光が粒子の色に与える影響を大幅に減少させます。
Command Bar に以下の文字列を入力して、各粒子のサイズを40から100スタッドに、わずかな変動を持って寿命の間で増加させます:
workspace.Caldera.SmokePlume.Smoke.Size = NumberSequence.new{NumberSequenceKeypoint.new(0,40,5), NumberSequenceKeypoint.new(1,100,15)}