Руководство по разработке приёма теней
LCC Unity SDK поддерживает динамическое отбрасывание теней от объектов Mesh на поверхности 3DGS для лучших эффектов освещения. Ниже описаны полные шаги по реализации динамических теней.
Шаг 1: Создайте сцену и GameObject
Создайте совершенно новую сцену в Unity. Unity по умолчанию создаёт Main Camera и Directional Light.
Настройте Main Camera
Выберите Main Camera в окне Hierarchy и задайте его свойства в окне Inspector, как показано ниже.

Настройка свойств Main Camera
Создайте LCCManager
Щёлкните правой кнопкой мыши в пустой области окна Hierarchy, выберите Create Empty во всплывающем меню, чтобы создать пустой GameObject, назовите его LCCManager, нормализуйте его Transform и добавьте к нему скрипт LCCManager через Add Component.

Создание GameObject LCCManager и добавление скрипта LCCManager
Создайте LCCRenderer
Щёлкните правой кнопкой мыши в пустой области окна Hierarchy, выберите Create Empty, чтобы создать пустой GameObject, назовите его LCCRenderer и задайте его Transform значения Rotation.x = -90 и Scale.x = -1.

Создание LCCRenderer и настройка его Transform (Rotation.x = -90, Scale.x = -1)
Примечание:
Настройки Transform GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) выравнивают его с системой координат данных LCC. Подробнее о выравнивании системы координат см. в разделе «Система координат данных LCC» документа Введение в Unity SDK.
Включите тени Directional Light
Выберите GameObject Directional Light в окне Hierarchy и убедитесь, что в окне Inspector тени включены.

Убедитесь, что на Directional Light включены тени
Шаг 2: Добавьте Render Feature
- В строке меню Unity выберите File → Project Settings, выберите Graphics слева и подтвердите текущий Default Render Pipeline Asset. В этом примере используется URP (Universal Render Pipeline Asset).

Подтверждение Default Render Pipeline Asset в настройках Graphics
Щёлкните по этому Asset, найдите соответствующий файл ассета в окне Project и найдите связанный с ним Renderer (
URP_Renderer.assetв этом примере).Выберите этот файл ассета Renderer, нажмите Add Renderer Feature в окне Inspector и добавьте Splat Shadow Mask Feature.

Добавление Splat Shadow Mask Feature в URP Renderer
Шаг 3: Напишите скрипт для включения приёма теней
Создайте новый скрипт C# с именем LCCShadow.cs со следующим кодом:
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("Запущено ");
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] прогресс загрузки файла: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] файл загружен");
m_manager.SetShadowReceive(true);
//m_manager.SetShadowColor(new Color(0, 0, 0, 1.0f));
//m_manager.SetShadowStrength(0.5f);
}
}
Примечание:
Приём теней должен включаться после завершения загрузки LCC-сцены, поэтому
SetShadowReceive(true)вызывается в обратном вызовеonComplete.
Шаг 4: Прикрепите скрипт и задайте путь к данным
- Прикрепите скрипт
LCCShadow.csк GameObject LCCRenderer в окне Hierarchy. - В окне Inspector перетащите GameObject LCCManager на свойство Manager скрипта.
- Заполните путь к файлу LCC в свойстве File Path скрипта.
Шаг 5: Создайте объект Mesh, отбрасывающий тень
- Создайте объект Cube в сцене и убедитесь, что Cast Shadows = On.
- Переместите Cube в подходящее положение, чтобы можно было наблюдать тень, которую он отбрасывает на поверхность 3DGS.
Шаг 6: Запустите
Нажмите кнопку Play в окне Game и перемещайте Cube в реальном времени, чтобы наблюдать динамическую тень, которую он отбрасывает.

Cube, отбрасывающий динамическую тень на поверхность 3DGS после запуска
FAQ: Отключите режим совместимости
Если окно Console Unity сообщает об ошибках и тень не появляется, отключите режим совместимости: откройте панель настроек через Edit → Project Settings → Graphics, выберите вкладку URP и не отмечайте флажок после Render Graph → Compatibility Mode (Render Graph Disabled).

Не отмечайте режим совместимости Render Graph (Render Graph Disabled)
Ключевые шаги
Ключевые шаги для отбрасывания теней от объектов Mesh на поверхности 3DGS:
- Убедитесь, что в сцене есть Directional Light с включёнными тенями.
- Убедитесь, что в сцене есть объект Mesh, отбрасывающий тени, с Cast Shadows = On.
- Убедитесь, что Splat Shadow Mask Feature добавлен в URP Renderer.
- Убедитесь, что приём теней включён в коде после завершения загрузки LCC-сцены (
SetShadowReceive(true)).
API, связанные с тенями
LCC Unity SDK предоставляет следующие три API, связанных с тенями, через LCCManager. Все они должны вызываться после завершения загрузки LCC-сцены (то есть в обратном вызове onComplete), а SetShadowColor() / SetShadowStrength() вступают в силу только после включения SetShadowReceive(true).
SetShadowReceive
// Возвращаемое значение: void
public void SetShadowReceive(bool enable)
Переключает приём теней облаком точек. При включении тени от объектов Mesh в сцене могут отбрасываться на поверхность облака точек 3DGS.
| Параметр | Тип | Описание |
|---|---|---|
enable | bool | Принимать ли тени |
Пример использования:
m_manager.SetShadowReceive(true);
Примечания:
- Отключено по умолчанию.
- Требуется объект Mesh, отбрасывающий тень, и Directional Light в сцене.
- При включении активируется ключевое слово шейдера
_SPLAT_SHADOW_ON.
SetShadowColor
// Возвращаемое значение: void
public void SetShadowColor(Color color)
Задаёт цвет области тени.
| Параметр | Тип | Описание |
|---|---|---|
color | Color | Цвет тени (RGBA) |
Пример использования:
m_manager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));
Примечания:
- Значение по умолчанию —
(0.3, 0.3, 0.3, 1). - Требует предварительного включения
SetShadowReceive(true).
SetShadowStrength
// Возвращаемое значение: void
public void SetShadowStrength(float strength)
Задаёт силу тени. 0 означает отсутствие тени, а 1 — самую сильную тень.
| Параметр | Тип | Описание |
|---|---|---|
strength | float | Сила тени, в диапазоне [0, 1] |
Пример использования:
m_manager.SetShadowStrength(0.8f);
Примечания:
- Значение по умолчанию —
1.0. - Диапазон
[0, 1]; значения вне диапазона ограничиваются автоматически. - Требует предварительного включения
SetShadowReceive(true).