Przewodnik renderowania wielokamerowego
LCC Unity SDK obsługuje renderowanie wieloma kamerami jednocześnie w trybie pełnego renderowania pojedynczej sceny. Poniżej na przykładzie jednej kamery głównej i dwóch kamer pomocniczych opisano kompletne kroki implementacji renderowania wielokamerowego.
Krok 1: Utwórz scenę i GameObjects
Utwórz zupełnie nową scenę w Unity. Unity domyślnie tworzy Kamerę główną i Światło kierunkowe.
Skonfiguruj Kamerę główną
Wybierz Kamerę główną w oknie Hierarchia i ustaw jej właściwości w oknie Inspektor, jak pokazano poniżej.

Ustaw właściwości Kamery głównej
Utwórz LCCManager
Kliknij prawym przyciskiem myszy pusty obszar w oknie Hierarchia, wybierz Utwórz pusty z menu podręcznego, aby utworzyć pusty GameObject, nazwij go LCCManager, znormalizuj jego Transform i dodaj do niego skrypt LCCManager przez Dodaj komponent.

Utwórz GameObject LCCManager i dodaj skrypt LCCManager
Utwórz LCCRenderer
Kliknij prawym przyciskiem myszy pusty obszar w oknie Hierarchia, wybierz Utwórz pusty, aby utworzyć pusty GameObject, nazwij go LCCRenderer i ustaw jego Transform na Rotation.x = -90 i Scale.x = -1.

Utwórz LCCRenderer i ustaw jego Transform (Rotation.x = -90, Scale.x = -1)
Uwaga:
Ustawienia Transform GameObject LCCRenderer (Rotation.x = -90, Scale.x = -1) wyrównują go z układem współrzędnych danych LCC. Szczegóły wyrównania układu współrzędnych znajdziesz w sekcji „Układ współrzędnych danych LCC" w Wprowadzenie do Unity SDK.
Utwórz pomocnicze kamery renderujące
Kliknij prawym przyciskiem myszy pusty obszar w oknie Hierarchia, aby utworzyć dwie dodatkowe kamery renderujące, nazwij je odpowiednio Camera01 i Camera02, i ustaw właściwości tych dwóch kamer, jak pokazano poniżej.

Ustaw właściwości Camera01

Ustaw właściwości Camera02
W tym przykładzie Prostokąt widoku dwóch kamer jest skonfigurowany tak, aby umieścić je odpowiednio w lewym dolnym rogu i prawym dolnym rogu głównego okna renderowania.
Krok 2: Napisz skrypt wielokamerowy
Utwórz nowy skrypt C# o nazwie MultiCamera.cs z następującym kodem:
using LCCCore;
using UnityEngine;
public class MultiCamera : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath01;
public Camera m_camera01;
public Camera m_camera02;
public Transform m_transform01;
private LCCCore.Renderer m_renderer01;
private int m_currentFileIndex = 0;
void Start()
{
m_manager.SetPlatformType(PlatformType.PC);
m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);
Debug.Log("Uruchomiono ");
m_renderer01 = m_manager.GetRender(m_transform01);
m_currentFileIndex = 0;
m_renderer01.Load(m_FilePath01, onProgress, onComplete);
}
private void onProgress(float _progress)
{
Debug.Log($"[LCCRenderer] plik {m_currentFileIndex} postęp ładowania: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] plik {m_currentFileIndex} załadowany");
m_manager.AddCamera(m_camera01);
m_manager.AddCamera(m_camera02);
}
private void OnDestroy()
{
m_manager.RemoveCamera(m_camera01);
m_manager.RemoveCamera(m_camera02);
}
}
Uwaga:
- Kamery pomocnicze muszą być zarejestrowane po zakończeniu ładowania sceny LCC, więc
AddCamerajest wywoływane w wywołaniu zwrotnymonComplete.- Nazwa pliku skryptu musi być zgodna z nazwą klasy (
MultiCamera.csodpowiadaclass MultiCamera), w przeciwnym razie nie można go dołączyć do GameObject.- Kamera główna jest ustawiana przez
SetMainCamera, a kamery pomocnicze są dodawane przezAddCamera; nie możesz dodać kamery głównej jako kamery pomocniczej.
Krok 3: Dołącz skrypt i ustaw właściwości
- Dołącz skrypt
MultiCamera.csdo GameObject LCCRenderer w oknie Hierarchia. - W oknie Inspektor przeciągnij GameObject LCCManager na właściwość Manager skryptu.
- Przeciągnij GameObjects Camera01 i Camera02 odpowiednio na właściwości Camera01 i Camera02 skryptu.
- Wpisz ścieżkę pliku LCC we właściwości File Path01 skryptu.

Dołącz skrypt MultiCamera i ustaw jego właściwości w Inspektorze
Krok 4: Uruchom
Kliknij przycisk Odtwórz w oknie Gra, aby zobaczyć efekt renderowania w czasie rzeczywistym wielu kamer renderujących w scenie.

Wiele kamer renderujących renderuje jednocześnie po uruchomieniu
Kluczowe kroki
Kluczowe kroki implementacji renderowania wielokamerowego:
- Upewnij się, że scena jest w trybie pełnego renderowania pojedynczej sceny (
SwitchRenderPass(ActiveRenderMode.SingleRender)i dane przechodzą przez ścieżkę Full Load). - Kamera główna jest ustawiana przez
SetMainCamera; kamery pomocnicze są rejestrowane przezAddCamerapo zakończeniu ładowania sceny (w wywołaniu zwrotnymonComplete). - Steruj obszarem renderowania każdej kamery na ekranie przez jej Prostokąt widoku.
- Gdy obiekt jest niszczony (
OnDestroy), usuń kamery pomocnicze przezRemoveCamera, aby uniknąć zawieszonych odniesień.
Uwagi dotyczące renderowania wielokamerowego
Obsługiwany jest tylko tryb pełnego renderowania. LCC SDK obecnie obsługuje renderowanie wielokamerowe tylko w trybie pełnego renderowania w ramach pojedynczej sceny. Dla optymalizacji wydajności w trybie renderowania fragmentami SDK ładuje i renderuje tylko widoczne dane wewnątrz frustum kamery; a w dążeniu do wysokiej wydajności filtrowanie danych węzłów sceny po stronie CPU, składanie danych i przesyłanie danych z CPU do GPU są asynchroniczne, więc nie może przetwarzać i renderować danych dla wielu kamer osobno w tej samej klatce.
Upewnij się, że scena jest w stanie pełnego renderowania. Aby użyć kompletnej funkcji renderowania wielokamerowego, skonfiguruj scenę w trybie pełnego renderowania (Full Load): użyj
ActiveRenderMode.SingleRenderi włącz pełne renderowanie na Rendererze (Renderer.SetRenderAll(true), co zadziała przy następnymLoad()). Szczegóły trybów renderowania i parametrów wydajności znajdziesz w Przewodnik szybkiego startu dla PC.Im więcej kamer, tym wyższy koszt wydajności. Każda dodatkowa kamera renderująca dodaje jeden kompletny przebieg renderowania, więc wydajność odpowiednio spada. Renderowanie wielokamerowe jest zalecane na wydajnych urządzeniach komputerowych.
Obsługiwane tylko na PC/Mac.
AddCamera/RemoveCameradziałają tylko na platformach PC/Mac.
API wielokamerowe
LCC Unity SDK udostępnia poniższe API powiązane z kamerami przez LCCManager. Kamery pomocnicze muszą być zarejestrowane przez AddCamera po zakończeniu ładowania sceny LCC (czyli w wywołaniu zwrotnym onComplete).
SetMainCamera
// Wartość zwracana: void
public void SetMainCamera(Camera _cam)
Ustawia główną kamerę renderującą. LCC używa tej kamery do odrzucania frustum, wyboru LOD, sortowania i innych operacji.
| Parametr | Typ | Opis |
|---|---|---|
_cam | Camera | Główna kamera renderująca; przekaż null, aby ją wyczyścić |
Przykład użycia:
m_manager.SetMainCamera(Camera.main);
Uwagi:
- Musi być ustawiona przed
Renderer.Load(). - Wywołaj ponownie przy przełączaniu kamer.
- Obsługiwane tylko na PC/Mac.
- Przekaż
null, aby wyczyścić główną kamerę.
AddCamera
// Wartość zwracana: void
public void AddCamera(Camera _cam)
Dodaje kamerę pomocniczą. Kamery pomocnicze uczestniczą w renderowaniu, ale nie wpływają na wybór LOD.
| Parametr | Typ | Opis |
|---|---|---|
_cam | Camera | Kamera pomocnicza |
Przykład użycia:
m_manager.AddCamera(m_camera01);
Uwagi:
- Obsługiwane tylko na PC/Mac.
- Nie możesz dodać kamery głównej jako kamery pomocniczej.
- Wybór LOD jest określany tylko przez kamerę główną; kamery pomocnicze ponownie używają danych przefiltrowanych przez kamerę główną do renderowania.
RemoveCamera
// Wartość zwracana: void
public void RemoveCamera(Camera _cam)
Usuwa wcześniej dodaną kamerę pomocniczą.
| Parametr | Typ | Opis |
|---|---|---|
_cam | Camera | Kamera pomocnicza do usunięcia |
Przykład użycia:
m_manager.RemoveCamera(m_camera01);
Uwagi:
- Obsługiwane tylko na PC/Mac.
- Zaleca się wywołanie przy niszczeniu obiektu (
OnDestroy), aby oczyścić odniesienie do kamery pomocniczej.