Ontwikkelgids voor multi-camera rendering
De LCC Unity SDK ondersteunt gelijktijdig renderen met meerdere camera's in de volledige renderingmodus van één scène. Hieronder wordt aan de hand van een voorbeeld met één hoofdcamera plus twee secundaire camera's beschreven hoe je multi-camera rendering volledig implementeert.
Stap 1: De scène en GameObjects aanmaken
Maak een gloednieuwe scène aan in Unity. Unity maakt standaard Main Camera en Directional Light aan.
Main Camera instellen
Selecteer Main Camera in het Hiërarchie-venster en stel de eigenschappen in het Inspector-venster in zoals hieronder wordt weergegeven.

Stel de eigenschappen van Main Camera in
LCCManager aanmaken
Klik met de rechtermuisknop op een leeg gebied in het Hiërarchie-venster, selecteer Create Empty in het pop-upmenu om een leeg GameObject aan te maken, geef het de naam LCCManager, normaliseer de Transform en voeg het LCCManager-script eraan toe via Component toevoegen.

Maak het LCCManager-GameObject aan en voeg het LCCManager-script toe
LCCRenderer aanmaken
Klik met de rechtermuisknop op een leeg gebied in het Hiërarchie-venster, selecteer Create Empty om een leeg GameObject aan te maken, geef het de naam LCCRenderer en stel de Transform in op Rotation.x = -90 en Scale.x = -1.

Maak LCCRenderer aan en stel de Transform in (Rotation.x = -90, Scale.x = -1)
Opmerking:
De Transform-instellingen van het LCCRenderer-GameObject (Rotation.x = -90, Scale.x = -1) lijnen het uit met het coördinatensysteem van de LCC-gegevens. Zie "Coördinatensysteem van LCC-gegevens" in LCC Unity SDK Introductie voor meer informatie over de uitlijning van het coördinatensysteem.
Secundaire rendercamera's aanmaken
Klik met de rechtermuisknop op een leeg gebied in het Hiërarchie-venster om twee extra rendercamera's aan te maken, geef ze respectievelijk de naam Camera01 en Camera02, en stel de eigenschappen van deze twee camera's in zoals hieronder wordt weergegeven.

Stel de eigenschappen van Camera01 in

Stel de eigenschappen van Camera02 in
In dit voorbeeld wordt de Viewport Rect van de twee camera's zo geconfigureerd dat ze respectievelijk in de linkerbenedenhoek en de rechterbenedenhoek van het hoofdrenderingvenster worden geplaatst.
Stap 2: Het multi-camera-script schrijven
Maak een nieuw C#-script aan met de naam MultiCamera.cs met de volgende code:
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("Gestart ");
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] bestand {m_currentFileIndex} laadvoortgang: {_progress:P1}");
}
private void onComplete()
{
Debug.Log($"[LCCRenderer] bestand {m_currentFileIndex} geladen");
m_manager.AddCamera(m_camera01);
m_manager.AddCamera(m_camera02);
}
private void OnDestroy()
{
m_manager.RemoveCamera(m_camera01);
m_manager.RemoveCamera(m_camera02);
}
}
Opmerking:
- Secundaire camera's moeten worden geregistreerd nadat de LCC-scène is geladen, dus
AddCamerawordt aangeroepen in deonComplete-callback.- De bestandsnaam van het script moet overeenkomen met de klassenaam (
MultiCamera.cskomt overeen metclass MultiCamera), anders kan het niet aan een GameObject worden toegevoegd.- De hoofdcamera wordt ingesteld via
SetMainCameraen secundaire camera's worden toegevoegd viaAddCamera; je kunt de hoofdcamera niet als secundaire camera toevoegen.
Stap 3: Het script toevoegen en eigenschappen instellen
- Voeg het
MultiCamera.cs-script toe aan het LCCRenderer-GameObject in het Hiërarchie-venster. - Sleep in het Inspector-venster het LCCManager-GameObject naar de eigenschap Manager van het script.
- Sleep de Camera01- en Camera02-GameObjects respectievelijk naar de eigenschappen Camera01 en Camera02 van het script.
- Vul het LCC-bestandspad in bij de eigenschap File Path01 van het script.

Voeg het MultiCamera-script toe en stel de eigenschappen in de Inspector in
Stap 4: Uitvoeren
Klik op de knop Play in het Game-venster om het realtime renderingeffect van meerdere rendercamera's in de scène te zien.

Meerdere rendercamera's die na het uitvoeren gelijktijdig renderen
Belangrijkste stappen
De belangrijkste stappen voor het implementeren van multi-camera rendering:
- Zorg ervoor dat de scène zich in de volledige renderingmodus van één scène bevindt (
SwitchRenderPass(ActiveRenderMode.SingleRender)en de gegevens door het Full Load-pad gaan). - De hoofdcamera wordt ingesteld via
SetMainCamera; secundaire camera's worden viaAddCamerageregistreerd nadat de scène is geladen (in deonComplete-callback). - Beheer het renderinggebied van elke camera op het scherm via de Viewport Rect.
- Verwijder secundaire camera's via
RemoveCamerawanneer het object wordt vernietigd (OnDestroy) om bungelende verwijzingen te voorkomen.
Opmerkingen bij multi-camera rendering
Alleen de volledige renderingmodus wordt ondersteund. De LCC SDK ondersteunt multi-camera rendering momenteel alleen in de volledige renderingmodus binnen één scène. Voor prestatieoptimalisatie laadt en rendert de SDK in de chunked renderingmodus alleen de zichtbare gegevens binnen het camerafrustum; en om hoge prestaties na te streven zijn het filteren van de scèneknoopgegevens aan de CPU-zijde, de gegevensassemblage en de gegevensupload van CPU naar GPU allemaal asynchroon, zodat de SDK de gegevens voor meerdere camera's niet afzonderlijk binnen hetzelfde frame kan verwerken en renderen.
Zorg ervoor dat de scène zich in de volledige renderingstatus bevindt. Configureer de scène voor het gebruik van de volledige multi-camera renderingfunctie in de volledige renderingmodus (Full Load): gebruik
ActiveRenderMode.SingleRenderen schakel volledige rendering in op de Renderer (Renderer.SetRenderAll(true), dat van kracht wordt bij de volgendeLoad()). Zie Snelstartgids voor pc voor meer informatie over renderingmodi en prestatieparameters.Hoe meer camera's, hoe hoger de prestatiekosten. Elke extra rendercamera voegt één volledige renderingpass toe, waardoor de prestaties navenant afnemen. Multi-camera rendering wordt aanbevolen op krachtige computerapparaten.
Alleen ondersteund op pc/Mac.
AddCamera/RemoveCamerazijn alleen effectief op pc/Mac-platformen.
Multi-camera API's
De LCC Unity SDK biedt via LCCManager de volgende cameragerelateerde API's. Secundaire camera's moeten via AddCamera worden geregistreerd nadat de LCC-scène is geladen (dat wil zeggen in de onComplete-callback).
SetMainCamera
// Retourwaarde: void
public void SetMainCamera(Camera _cam)
Stelt de hoofdrendercamera in. LCC gebruikt deze camera voor frustum-culling, LOD-selectie, sortering en andere bewerkingen.
| Parameter | Type | Beschrijving |
|---|---|---|
_cam | Camera | Hoofdrendercamera; geef null door om deze te wissen |
Gebruiksvoorbeeld:
m_manager.SetMainCamera(Camera.main);
Opmerkingen:
- Moet worden ingesteld vóór
Renderer.Load(). - Roep het opnieuw aan bij het wisselen van camera.
- Alleen ondersteund op pc/Mac.
- Geef
nulldoor om de hoofdcamera te wissen.
AddCamera
// Retourwaarde: void
public void AddCamera(Camera _cam)
Voegt een secundaire camera toe. Secundaire camera's nemen deel aan de rendering maar hebben geen invloed op de LOD-selectie.
| Parameter | Type | Beschrijving |
|---|---|---|
_cam | Camera | Secundaire camera |
Gebruiksvoorbeeld:
m_manager.AddCamera(m_camera01);
Opmerkingen:
- Alleen ondersteund op pc/Mac.
- Je kunt de hoofdcamera niet als secundaire camera toevoegen.
- De LOD-selectie wordt alleen bepaald door de hoofdcamera; secundaire camera's hergebruiken de door de hoofdcamera gefilterde gegevens voor rendering.
RemoveCamera
// Retourwaarde: void
public void RemoveCamera(Camera _cam)
Verwijdert een eerder toegevoegde secundaire camera.
| Parameter | Type | Beschrijving |
|---|---|---|
_cam | Camera | De te verwijderen secundaire camera |
Gebruiksvoorbeeld:
m_manager.RemoveCamera(m_camera01);
Opmerkingen:
- Alleen ondersteund op pc/Mac.
- Het wordt aanbevolen om het aan te roepen wanneer het object wordt vernietigd (
OnDestroy) om de verwijzing naar de secundaire camera op te schonen.