Guía de desarrollo de recepción de sombras
El LCC Unity SDK admite proyectar dinámicamente sombras desde objetos Mesh sobre superficies 3DGS para obtener mejores efectos de iluminación. A continuación se describen los pasos completos para implementar sombras dinámicas.
Paso 1: Crear la escena y los GameObjects
Crea una escena completamente nueva en Unity. Unity crea Main Camera y Directional Light por defecto.
Configurar Main Camera
Selecciona Main Camera en la ventana Jerarquía y establece sus propiedades en la ventana Inspector como se muestra a continuación.

Establecer las propiedades de Main Camera
Crear LCCManager
Haz clic con el botón derecho en un área vacía de la ventana Jerarquía, selecciona Create Empty en el menú emergente para crear un GameObject vacío, nómbralo LCCManager, normaliza su Transform y añádele el script LCCManager mediante Agregar componente.

Crear el GameObject LCCManager y añadir el script LCCManager
Crear LCCRenderer
Haz clic con el botón derecho en un área vacía de la ventana Jerarquía, selecciona Create Empty para crear un GameObject vacío, nómbralo LCCRenderer y establece su Transform como Rotation.x = -90 y Scale.x = -1.

Crear LCCRenderer y establecer su Transform (Rotation.x = -90, Scale.x = -1)
Nota:
Los ajustes de Transform del GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) lo alinean con el sistema de coordenadas de los datos LCC. Para más detalles sobre la alineación del sistema de coordenadas, consulta "Sistema de coordenadas de los datos LCC" en Introducción al SDK de Unity.
Activar las sombras de la Directional Light
Selecciona el GameObject Directional Light en la ventana Jerarquía y asegúrate de que las sombras están activadas en la ventana Inspector.

Asegurarse de que las sombras están activadas en la Directional Light
Paso 2: Añadir un Render Feature
- En la barra de menús de Unity, selecciona Archivo → Ajustes del proyecto, elige Gráficos a la izquierda y confirma el Default Render Pipeline Asset actual. Este ejemplo usa URP (Universal Render Pipeline Asset).

Confirmar el Default Render Pipeline Asset en los ajustes de Gráficos
Haz clic en ese Asset, localiza el archivo de asset correspondiente en la ventana Proyecto y encuentra su Renderer asociado (
URP_Renderer.asseten este ejemplo).Selecciona ese archivo de asset del Renderer, haz clic en Add Renderer Feature en la ventana Inspector y añade el Splat Shadow Mask Feature.

Añadir el Splat Shadow Mask Feature al URP Renderer
Paso 3: Escribir un script para activar la recepción de sombras
Crea un nuevo script C# llamado LCCShadow.cs con el siguiente código:
using LCCCore;
using UnityEngine;
public class LCCShadow : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
private LCCCore.Renderer m_renderer;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);
Debug.Log("Iniciado ");
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] progreso de carga del archivo: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] archivo cargado");
m_manager.SetShadowReceive(true);
//m_manager.SetShadowColor(new Color(0, 0, 0, 1.0f));
//m_manager.SetShadowStrength(0.5f);
}
}
Nota:
La recepción de sombras debe activarse después de que la escena LCC termine de cargarse, por lo que
SetShadowReceive(true)se llama en la devolución de llamadaonComplete.
Paso 4: Adjuntar el script y establecer la ruta de datos
- Adjunta el script
LCCShadow.csal GameObject LCCRenderer en la ventana Jerarquía. - En la ventana Inspector, arrastra el GameObject LCCManager a la propiedad Manager del script.
- Rellena la ruta del archivo LCC en la propiedad File Path del script.
Paso 5: Crear un objeto Mesh que proyecte sombras
- Crea un objeto Cube en la escena y asegúrate de que Cast Shadows = On.
- Mueve el Cube a una posición adecuada para poder observar la sombra que proyecta sobre la superficie 3DGS.
Paso 6: Ejecutar
Haz clic en el botón Play de la ventana Game y mueve el Cube en tiempo real para observar la sombra dinámica que proyecta.

El Cube proyectando una sombra dinámica sobre la superficie 3DGS tras la ejecución
Preguntas frecuentes: desactivar el modo de compatibilidad
Si la ventana Console de Unity informa de errores y no aparece ninguna sombra, desactiva el modo de compatibilidad: abre el panel de ajustes mediante Editar → Ajustes del proyecto → Gráficos, selecciona la pestaña URP y no marques la casilla situada después de Render Graph → Compatibility Mode (Render Graph Disabled).

No marcar el modo de compatibilidad de Render Graph (Render Graph Disabled)
Pasos clave
Los pasos clave para proyectar sombras desde objetos Mesh sobre superficies 3DGS:
- Asegúrate de que la escena tiene una Directional Light con las sombras activadas.
- Asegúrate de que la escena tiene un objeto Mesh que proyecta sombras con Cast Shadows = On.
- Asegúrate de que el Splat Shadow Mask Feature se ha añadido al URP Renderer.
- Asegúrate de que la recepción de sombras se activa en el código después de que la escena LCC termine de cargarse (
SetShadowReceive(true)).
API relacionadas con las sombras
El LCC Unity SDK proporciona las siguientes tres API relacionadas con las sombras a través de LCCManager. Todas deben llamarse después de que la escena LCC termine de cargarse (es decir, en la devolución de llamada onComplete), y SetShadowColor() / SetShadowStrength() solo surten efecto después de activar SetShadowReceive(true).
SetShadowReceive
// Valor de retorno: void
public void SetShadowReceive(bool enable)
Activa o desactiva la recepción de sombras de la nube de puntos. Cuando está activada, las sombras de los objetos Mesh de la escena pueden proyectarse sobre la superficie de la nube de puntos 3DGS.
| Parámetro | Tipo | Descripción |
|---|---|---|
enable | bool | Si se reciben sombras |
Ejemplo de uso:
m_manager.SetShadowReceive(true);
Notas:
- Desactivado por defecto.
- Requiere un objeto Mesh que proyecte sombras y una Directional Light en la escena.
- Cuando está activado, se habilita la keyword de shader
_SPLAT_SHADOW_ON.
SetShadowColor
// Valor de retorno: void
public void SetShadowColor(Color color)
Establece el color del área de sombra.
| Parámetro | Tipo | Descripción |
|---|---|---|
color | Color | Color de sombra (RGBA) |
Ejemplo de uso:
m_manager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));
Notas:
- El valor por defecto es
(0.3, 0.3, 0.3, 1). - Requiere que
SetShadowReceive(true)se active primero.
SetShadowStrength
// Valor de retorno: void
public void SetShadowStrength(float strength)
Establece la intensidad de la sombra. 0 significa sin sombra y 1 la sombra más intensa.
| Parámetro | Tipo | Descripción |
|---|---|---|
strength | float | Intensidad de la sombra, en el rango [0, 1] |
Ejemplo de uso:
m_manager.SetShadowStrength(0.8f);
Notas:
- El valor por defecto es
1.0. - Rango
[0, 1]; los valores fuera del rango se limitan automáticamente. - Requiere que
SetShadowReceive(true)se active primero.