Version: Unity 6.0 (6000.0)
言語 : 日本語
複数シーンでのライトプローブのロード
ライトプローブのトラブルシューティング

ランタイムのライトプローブの移動

ランタイムにライトプローブを移動する必要がある場合があります。例えば、複数のシーンを追加でロード してワールドを作成し、各シーンを異なる位置に移動する場合は、ライトプローブを関連するシーンオブジェクトとともに移動する必要があります。

LightProbes API を使用して、ランタイムにライトプローブを移動できます。ライトプローブグループオブジェクトの Transform コンポーネントを更新してライトプローブを移動することはできません。Transform はベイクにのみ影響するためです。

API を使用してライトプローブを移動すると、位置のみが変わります。ライトプローブに格納されているベイクされたデータは変わりません。

以下の手順に従ってください。

  1. LightProbes.GetInstantiatedLightProbesForScene API を使用して、ロードされたシーンが使用するライトプローブデータのクローンを作成します。ロードされたシーン (Scene オブジェクト) は、これ以降このクローンデータを使用します。
  2. GetPositionsSelf および SetPositionsSelf API を使用して新しい位置を設定します。
  3. LightProbes.Tetrahedralize または LightProbes.TetrahedralizeAsync API を使用してシーンのライトプローブデータの内部構造を更新します。これにより、オブジェクトが正しいライトデータを使用します。

ライトプローブを含むほかのシーンと一緒にシーンをベイクした場合、返されるデータにはベイクしたすべてのシーンのライトプローブが含まれます。複数のシーンでのライトプローブの使用についての詳細は、ライトプローブとシーンのロード を参照してください。

Tetrahedralize API には長い時間がかかる場合があります。複数のライトプローブを移動する場合は、終了時に 1 回四面体分割するのが最善です。

シーン内のライトプローブの位置を読み取る必要があるが、移動しない場合は、代わりに LightProbes.GetSharedLightProbesForScene API を使用できます。

以下のコードは、現在のシーンのライトプローブをフレームごとに新しい位置に移動します。

シーン内の任意のオブジェクトにスクリプトをアタッチします。プロジェクトを実行するとき、ライトプローブを使用する任意のオブジェクトを選択し、プローブが移動していることを確認します。ライトプローブグループオブジェクトは移動しません。

using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadSingleSceneAndMoveProbes : MonoBehaviour
{
    void Update()
    {
        // Get a copy of the Light Probes in the current scene
        LightProbes lightProbes = LightProbes.GetInstantiatedLightProbesForScene(SceneManager.GetActiveScene());

        // Get the Light Probe positions
        Vector3[] positions = lightProbes.GetPositionsSelf();

        // Update the positions
        for (int i = 0; i < positions.Length; i++)
        {
            positions[i].x = positions[i].x + 0.01f;
        }

        // Copy the new positions back to the Light Probes
        lightProbes.SetPositionsSelf(positions, true);

        // Tetrahedralize to update the data in the LightProbes object of the scene.
        LightProbes.Tetrahedralize();
    }
}
複数シーンでのライトプローブのロード
ライトプローブのトラブルシューティング