版本: Unity 6 (6000.0)
语言English
  • C#

LightProbes.bakedProbes

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

public SphericalHarmonicsL2[] bakedProbes;

描述

烘焙光探头的系数。

其他资源: SphericalHarmonicsL2

using UnityEngine;
using UnityEngine.Rendering;

public class ExampleClass : MonoBehaviour { public Color m_Ambient; public Light[] m_Lights;

// This script adds the contribution of an ambient light and an array of lights to calculate new spherical harmonics // coefficients for all the baked light probes. You can use this for example in the Editor or at runtime to replace // the light probe coefficients that Unity bakes. void Start() { SphericalHarmonicsL2[] bakedProbes = LightmapSettings.lightProbes.bakedProbes; Vector3[] probePositions = LightmapSettings.lightProbes.positions; int probeCount = LightmapSettings.lightProbes.count; for (int i = 0; i < probeCount; i++) { // Clear the probe and add ambient light bakedProbes[i].Clear(); bakedProbes[i].AddAmbientLight(m_Ambient); // Add the contribution of directional and point lights foreach (Light light in m_Lights) { if (light.type == LightType.Directional) { bakedProbes[i].AddDirectionalLight(-light.transform.forward, light.color, light.intensity); } else if (light.type == LightType.Point) { AddPointLight(probePositions[i], light, ref bakedProbes[i]); } } }

LightmapSettings.lightProbes.bakedProbes = bakedProbes; }

void AddPointLight(Vector3 probePosition, Light light, ref SphericalHarmonicsL2 sh) { // Direction from the light probe to the point light Vector3 probeToLight = light.transform.position - probePosition; // Light attenuation between the point light and the light probe. This formula matches what Unity uses for // quadratic light attenuation. float attenuation = 1.0f / (1.0f + 25.0f * probeToLight.sqrMagnitude / (light.range * light.range)); // With the normalized direction and the attenuation, the point light is equivalent to a directional // light in the context of a light probe. sh.AddDirectionalLight(probeToLight.normalized, light.color, light.intensity * attenuation); } }