XGRIDSDocumentazione
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Serie Lixel PortalCam

    • PortalCam P1

      • Panoramica del prodotto
      • Operazioni di base
      • Uso della LCC Scan App
      • Manutenzione e cura
      • FAQ
  • Serie Lixel K

    • Lixel K1

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Flusso di scansione
      • Ottenere una nuvola di punti con coordinate assolute
      • Fusione delle mappe
      • Consigli di pianificazione dei percorsi per scene tipiche
      • Precauzioni
      • FAQ
    • Lixel K2

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione
      • Flusso di scansione
      • Acquisire una nuvola di punti con coordinate assolute
      • Fusione mappe
      • Consigli di pianificazione dei percorsi per scene tipiche
      • Precauzioni
      • FAQ
  • Serie Lixel L

    • Lixel L2 Pro

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Flusso di scansione
      • Ottenere una nuvola di punti con coordinate assolute
      • Punto di misura
      • Appendice
      • FAQ
    • Lixel L3

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Acquisizione dei dati
      • Acquisizione di coordinate assolute
      • Appendice
  • Accessori

    • Stick Light

      • Guida all'installazione
      • Operazioni di base
      • Domande frequenti
  • Lixel Studio

    • Versione e copyright
    • Installazione e attivazione
    • Interfaccia del software
    • Operazioni sui file
    • Elaborazione del progetto
    • Strumenti
    • Disegno 2D
    • Applicazioni di settore
    • Impostazioni
    • Connessione del dispositivo
    • Domande Frequenti
  • Lixel CyberColor

    • LCC Studio

      • Introduzione
      • Versione e aggiornamenti
      • Download e installazione
      • Panoramica dell'interfaccia e navigazione
      • Operazioni preliminari alla ricostruzione
      • Prima della ricostruzione
      • Ricostruzione del modello
      • Ricostruzione modello singolo
      • Fusione delle mappe
      • Fusione aria-terra
      • Ricostruzione aerea
      • I miei modelli
      • Altre funzioni
      • Impostazioni e account
      • Convertitore
      • Ricostruzione video
      • Domande Frequenti / FAQ
    • LCC Scene Editor

      • Versione e aggiornamenti
      • Account e accesso
      • Panoramica del prodotto e home page
      • Interfaccia dell'editor
      • Modalità di navigazione
      • File
      • Impostazioni
      • Modifica
      • Finestra
      • Barra degli strumenti globale
      • Asset e proprietà
      • Barra degli strumenti sinistra
      • Punti di vista
      • Portale
      • Skybox
      • Annotazioni
      • Misurazione
      • Flythrough
      • Rapporto scena
      • 3D Layout
      • Mini-mappa
      • Modalità Anteprima (Viewer)
      • Aiuto
      • Domande frequenti (FAQ)
      • Punto di spawn
    • LCC Model Editor

      • Versione e aggiornamenti
      • Guida utente
      • Panoramica e interfaccia
      • Operazioni sui file
      • Selettori
      • Modifica dei modelli
      • Misurazione
      • Correzione colore
      • Gestione degli asset
      • Impostazioni e Aiuto
      • Domande frequenti
    • Capture Guide

      • Panoramica
      • Panoramica dei dispositivi di acquisizione
      • Principi generali di acquisizione
      • Acquisizione di scene interne
      • Acquisizione di scene esterne
      • Acquisizione su larga scala (map fusion)
      • Acquisizione per aerial-ground map fusion
      • Acquisizione di oggetti
      • Acquisizione di persone
      • Acquisizione per ricostruzione da video
      • HD Enhancement
      • Control points (Lixel P1)
      • FAQ e risoluzione dei problemi
    • Buone Pratiche

      • Unione di più modelli 3DGS di grandi dimensioni
    • Cronologia versioni
  • Plugin e SDK

    • Unreal

      • Introduzione
      • Avvio rapido - Windows
      • Avvio rapido - Linux
      • Avvio rapido - Quest3
      • Edizioni e licenze
      • Rendering
      • Rasterizzazione Tiled (sperimentale)
      • Impostazioni visive
      • Normali e illuminazione
      • Modifica della scena
      • Parametri di prestazione
      • Guida alle prestazioni
      • Integrazione con plugin di terze parti e del motore
      • Proxy Mesh
      • Animazione di caricamento
      • Collisioni
      • Supporto del Navigation System
      • Supporto di Single Layer Water
      • Localizzazione
      • FAQ
      • Risoluzione dei problemi
      • Log e diagnostica
      • Contattaci
      • Buone pratiche

        • Rilluminare il 3DGS con una mesh di LixelStudio
      • Riferimento API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enum
        • Struct
      • Registro delle modifiche

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1
    • Unity

      • Introduzione all'Unity SDK
      • Caratteristiche tecniche
      • Requisiti dell'ambiente di sviluppo
      • Guida rapida per PC
      • Guida all'ottimizzazione delle impostazioni di progetto
      • Guida allo sviluppo per Pico 4 Ultra
      • Guida allo streaming PC per Pico 4 Ultra
      • Guida allo sviluppo per Quest 3
      • Guida allo streaming PC per Quest 3
      • Guida allo sviluppo OpenXR
      • Guida allo streaming Business per Pico 4 Ultra
      • Glossario
      • FAQ
      • Contattaci
      • Guida allo sviluppo delle funzionalità

        • Guida allo sviluppo del rendering misto multi-scena
        • Guida allo sviluppo della ricezione delle ombre
        • Guida allo sviluppo dell'illuminazione in tempo reale
        • Guida allo sviluppo del rendering multi-camera
        • Guida allo sviluppo del rendering di immagini ad alta risoluzione
        • Guida allo sviluppo della compatibilità dei formati dati LCC e LCC2
        • Guida allo sviluppo dell'effetto di caricamento
        • Guida allo sviluppo del cambio di modalità di rendering Mip
        • Guida allo sviluppo dello snap a bordi e angoli
        • Guida allo sviluppo della decal proiettata
        • Guida allo sviluppo della decal proiettata video
        • Guida allo sviluppo dell'evidenziazione
        • Guida allo sviluppo del ritaglio in tempo reale
        • Guida allo sviluppo della regolazione del tono
        • Guida allo sviluppo dell'ottenimento dei dati Mesh della scena
        • Guida allo sviluppo della modalità Editor
        • Guida alla configurazione dei parametri di prestazioni di rendering
        • Guida allo sviluppo del co-impacchettamento di applicazione e dati
        • Guida allo sviluppo del sistema di collisione
        • Guida ai problemi di autorizzazione nello sviluppo su macOS
        • Guida allo sviluppo di compilazione e packaging per dispositivi iOS
      • Riferimento API

        • LCCManager
        • Renderer
        • Tipi di dati
      • Registro delle modifiche

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14
    • Web

      • Introduzione
      • Guida all'ottimizzazione delle prestazioni di rendering
      • Configurazione grafica
      • Domande frequenti
      • Riferimento API

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • Registro delle modifiche

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0

LCCManager: manager principale

Il manager principale dell'LCC Unity SDK, responsabile della gestione di tutte le istanze Renderer, delle camere e dello stato di rendering globale, oltre che delle operazioni di modifica (ritaglio / evidenziazione / tono), della proiezione delle decal, dello snapping e delle query di interazione (raycast / collisione). Nell'intera scena deve esserci una sola istanza LCCManager.

NamespaceLCCCore
Classe baseMonoBehaviour

LCCManager non ha proprietà pubbliche; tutte le funzionalità sono accessibili tramite i metodi. I metodi sono raggruppati per scopo:

  • Inizializzazione e configurazione
  • Controllo del rendering a runtime
  • Illuminazione e ombre
  • Gestione della camera
  • Ritaglio / Evidenziazione / Tono
  • Proiezione delle decal
  • Snapping
  • Raycasting e query di collisione
  • Effetti visivi
  • Query sulle istanze

Inizializzazione e configurazione

I seguenti metodi servono a completare la pre-configurazione di piattaforma, modalità di rendering, capacità e così via prima di caricare i dati. La maggior parte dei metodi deve essere chiamata prima di qualsiasi Renderer.Load().

SetPlatformType

public void SetPlatformType(PlatformType _type)

Imposta la piattaforma di runtime di destinazione dell'SDK, che influisce sulla strategia di rendering interna e sull'allocazione delle risorse.

ParametroTipoDescrizione
_typePlatformTypePiattaforma di destinazione; vedi PlatformType

Note:

  • Deve essere eseguito prima di qualsiasi chiamata GetRender().

Esempio:

lccManager.SetPlatformType(PlatformType.PC);

SwitchRenderPass

public void SwitchRenderPass(ActiveRenderMode _mode)

Imposta la modalità di architettura di rendering globale. MultiRender usa un buffer GPU condiviso e può renderizzare fino a 255 Renderer contemporaneamente; SingleRender lascia che l'SDK selezioni automaticamente il percorso di rendering in base alle dimensioni dei dati.

ParametroTipoDescrizione
_modeActiveRenderModeModalità di rendering; vedi ActiveRenderMode

Note:

  • Deve essere chiamata prima di qualsiasi Renderer.Load().
  • Ha effetto solo sulle piattaforme PC / Mac; le piattaforme mobile / VR adottano automaticamente una strategia adattiva e la chiamata di questo metodo viene rifiutata.
  • La modalità MultiRender non supporta le origini dati HTTP; usa SingleRender per i dati HTTP.
  • Una volta che un Renderer completa Load(), la modalità viene bloccata e non può più essere cambiata.

Esempio:

lccManager.SwitchRenderPass(ActiveRenderMode.MultiRender);

GetRender (Overload 1: associa Transform)

// Valore di ritorno: Renderer, null in caso di errore
public Renderer GetRender(Transform _transform)

Crea una nuova istanza di rendering e la associa al Transform specificato. Dopo la creazione, bisogna chiamare Renderer.Load() per caricare i dati.

ParametroTipoDescrizione
_transformTransformIl Transform a cui è collegata l'istanza di rendering

Note:

  • SetPlatformType() e SetMainCamera() devono essere chiamati prima.
  • In modalità MultiRender sono supportati fino a 255 Renderer.

Esempio:

var go = new GameObject("LCCScene");
var renderer = lccManager.GetRender(go.transform);
renderer.Load(filePath, null, () => Debug.Log("Caricato"));

GetRender (Overload 2: crea GameObject automaticamente)

// Valore di ritorno: Renderer, null in caso di errore
public Renderer GetRender(out GameObject gameObject)

Crea automaticamente un GameObject chiamato LCCRenderer e associa l'istanza di rendering al suo Transform.

ParametroTipoDescrizione
gameObjectout GameObjectRestituisce in output il GameObject creato automaticamente, null in caso di errore

Esempio:

var renderer = lccManager.GetRender(out GameObject go);
renderer.Load(filePath, null, () => Debug.Log("Caricato"));

SetMaxBufferSplat

public void SetMaxBufferSplat(int _count)

Imposta la capacità massima del buffer GPU (numero di Splat). Allocata una sola volta e non può essere cambiata dinamicamente.

ParametroTipoDescrizione
_countintNumero massimo di Splat, unità: diecimila (valore × 10000 = conteggio effettivo)

Note:

  • Deve essere chiamata prima di qualsiasi Renderer.Load(), e SetPlatformType() deve essere chiamata prima.
  • Una capacità maggiore significa un uso maggiore della memoria video; impostala in base alle necessità.
  • Limiti per piattaforma: PC / Mac / PCVR 45 milioni, Android / iOS 6 milioni, VR (Pico / Quest / PicoSwan / AVP / OpenXR) 2 milioni.
  • Valori predefiniti: PC / Mac 30 milioni, Android / iOS 3 milioni, VR 1 milione.

Esempio:

lccManager.SetMaxBufferSplat(3000); // 30 milioni di punti

SetFullRenderSplat

public void SetFullRenderSplat(int _count)

Imposta la soglia superiore per il rendering completo su PC / Mac. Quando le dimensioni dei dati sono inferiori a questo valore, viene usato il percorso di rendering completo; altrimenti viene usato il percorso di rendering a blocchi.

ParametroTipoDescrizione
_countintLimite superiore del rendering completo, unità: diecimila, intervallo [100, 4500]

Note:

  • Supportata solo sulle piattaforme PC / Mac / PCVR.
  • Deve essere chiamata prima di qualsiasi Renderer.Load(), e SetPlatformType() deve essere chiamata prima.

Esempio:

lccManager.SetFullRenderSplat(2500); // 25 milioni di punti

SetMaxRenderSplats

public void SetMaxRenderSplats(int _count)

Imposta il numero massimo di Splat renderizzati per frame a runtime. Può essere chiamata dinamicamente dopo Load().

ParametroTipoDescrizione
_countintNumero massimo di Splat renderizzati a runtime, unità: diecimila

Note:

  • Può essere regolata dinamicamente a runtime.
  • Non può superare la capacità impostata da SetMaxBufferSplat(); viene limitata automaticamente quando superata.
  • Nessun effetto in modalità rendering completo.

Esempio:

lccManager.SetMaxRenderSplats(2500); // 25 milioni di punti

GetLoadRatio

// Valore di ritorno: float, [0,1] avanzamento attuale del caricamento dei dati
public float GetLoadRatio()

Interroga l'avanzamento del caricamento dei dati della scena corrente.

Note:

  • Restituisce sempre 1.0 in modalità rendering completo.
  • In modalità rendering a blocchi, restituisce il rapporto dei nodi caricati nella vista corrente; il valore cambia in tempo reale con il movimento della camera e non è un avanzamento complessivo monotono crescente.

Esempio:

float ratio = lccManager.GetLoadRatio();
progressBar.value = ratio;

SetSelectionMode

public void SetSelectionMode(SelectionMode mode)

Imposta la strategia di selezione dei nodi.

ParametroTipoDescrizione
modeSelectionModeStrategia di selezione; vedi SelectionMode

Note:

  • Auto (predefinito): deciso automaticamente in base al box di delimitazione complessivo della scena; quando la dimensione massima della scena supera circa 380 metri, passa automaticamente a Large.
  • Normal: adatto a scene piccole e medie.
  • Large: adatto a scene molto grandi (oltre 1000 metri).
  • Ha effetto immediato quando cambiato.

Esempio:

lccManager.SetSelectionMode(SelectionMode.Auto);

Controllo del rendering a runtime

I seguenti metodi possono essere chiamati dinamicamente a runtime per regolare la precisione di rendering, gli effetti di visualizzazione e le attivazioni del rendering.

SetDetailLevel

public void SetDetailLevel(float sse)

Imposta il livello di precisione del rendering. Un valore maggiore significa rendering più fine e un consumo di prestazioni più elevato.

ParametroTipoDescrizione
ssefloatLivello di precisione, intervallo [1, 100], limitato automaticamente quando superato

Note:

  • Usa una mappatura logaritmica: i cambiamenti sono sensibili nell'intervallo di valori bassi e graduali nell'intervallo di valori alti.
  • Può essere regolato dinamicamente a runtime.
  • Ha effetto solo in modalità di selezione Normal.

Esempio:

lccManager.SetDetailLevel(50f); // Precisione media

SetStartLod

public void SetStartLod(int lod)

Imposta il punto di partenza dell'espansione LOD (a base 0). 0 è il più fine e un numero maggiore significa un livello più grossolano.

ParametroTipoDescrizione
lodintLivello LOD di partenza, intervallo [0, 10], limitato automaticamente quando superato

Note:

  • Il limite superiore effettivo è vincolato dal numero totale di livelli dei dati.

Esempio:

lccManager.SetStartLod(0);

SetAutoFov

public void SetAutoFov(bool _auto)

Imposta se gestire automaticamente il FOV di rendering. Quando è attivo (predefinito), l'SDK blocca una base di lunghezza focale in pixel al primo frame, poi inverte il FOV verticale dall'altezza del viewport corrente a ogni frame e lo riscrive in Camera.fieldOfView; quando è disattivo, fieldOfView viene controllato esternamente (SetFOV() o modificando direttamente la camera).

ParametroTipoDescrizione
_autoboolIndica se usare il FOV automatico

Note:

  • Attivo per impostazione predefinita.
  • Quando è attivo, riscrive continuamente il Camera.fieldOfView della camera principale, quindi la chiamata di SetFOV() viene ignorata.
  • Quando è disattivo, SetFOV() deve essere chiamata manualmente per impostare i parametri.

Esempio:

lccManager.SetAutoFov(true);

SetFOV

public void SetFOV(int _width, int _height, float _verticalFov, float _aspect)

Imposta manualmente il FOV verticale (in gradi). Riscrive direttamente il Camera.fieldOfView della camera principale in modo che il FOV nell'Inspector corrisponda al FOV effettivamente usato per il rendering. _width / _height / _aspect sono parametri di firma legacy; la proiezione effettiva usa il viewport proprio della camera principale (usa SetRecordMode() per un output fuori schermo con dimensioni / FOV diversi).

ParametroTipoDescrizione
_widthintLarghezza in pixel
_heightintAltezza in pixel
_verticalFovfloatFOV verticale (gradi)
_aspectfloatProporzioni

Note:

  • SetAutoFov(false) deve essere chiamata prima, altrimenti l'inversione automatica del FOV a ogni frame sovrascrive il valore manuale.
  • Il FOV verticale è limitato a [1, 179] gradi.
  • La chiamata sulle piattaforme VR / PCVR, durante la registrazione o con una camera ortografica viene rifiutata (avvisa e ritorna).

Esempio:

lccManager.SetFOV(1920, 1080, 60f, 1.778f);

SetRenderEnable

public void SetRenderEnable(Renderer _renderer, bool _isEnable)

Controlla l'attivazione del rendering del Renderer specificato a runtime. Quando è disattivo, non partecipa all'attraversamento e al disegno.

ParametroTipoDescrizione
_rendererRendererIstanza di rendering di destinazione
_isEnableboolIndica se abilitare il rendering

Esempio:

lccManager.SetRenderEnable(renderer, false); // Nascondi

SetEnvironment

public void SetEnvironment(Renderer _renderer, bool _isRender)

Controlla il rendering dei dati ambiente del Renderer specificato. I dati ambiente sono una nuvola di punti di sfondo a bassa precisione usata per riempire le viste distanti.

ParametroTipoDescrizione
_rendererRendererIstanza di rendering di destinazione
_isRenderboolIndica se renderizzare i dati ambiente

Note:

  • I dati devono contenere nodi ambiente.

Esempio:

lccManager.SetEnvironment(renderer, true);

SetZDepth

public void SetZDepth(bool zwrite)

Attiva/disattiva la scrittura di profondità Z e regola di conseguenza la coda di rendering.

ParametroTipoDescrizione
zwriteboolIndica se abilitare la scrittura di profondità Z

Esempio:

lccManager.SetZDepth(true);

SetAlpha

public void SetAlpha(float alpha)

Imposta l'opacità globale.

ParametroTipoDescrizione
alphafloatOpacità globale, intervallo [0, 1], limitata automaticamente quando superata

Esempio:

lccManager.SetAlpha(0.8f);

SetLightIntensity

public void SetLightIntensity(float intensity)

Imposta l'intensità della luce globale.

ParametroTipoDescrizione
intensityfloatIntensità della luce, intervallo [0, 1], limitata automaticamente quando superata

Esempio:

lccManager.SetLightIntensity(0.7f);

SetLowPassFilter

public void SetLowPassFilter(float _filter)

Imposta la forza del filtro passa-basso globale, usata per sopprimere l'aliasing / il rumore ad alta frequenza.

ParametroTipoDescrizione
_filterfloatForza del filtro passa-basso, intervallo [0, 1], limitata automaticamente quando superata

Esempio:

lccManager.SetLowPassFilter(0.3f);

SetLockFPS

public void SetLockFPS(bool _isLock)

Attiva/disattiva il blocco del frame rate (commutazione del frame rate statico / dinamico).

ParametroTipoDescrizione
_isLockboolIndica se bloccare il frame rate

Esempio:

lccManager.SetLockFPS(true);

SetRenderLayer

public void SetRenderLayer(int _layer)

Imposta il Layer di Unity usato dal rendering LCC, per il controllo della visibilità tramite CullingMask della camera.

ParametroTipoDescrizione
_layerintLayer di rendering di Unity, intervallo [0, 31]

Note:

  • Può essere regolato dinamicamente a runtime.

Esempio:

lccManager.SetRenderLayer(8); // Usa il Layer 8

SetForceRefresh

public void SetForceRefresh()

Forza un aggiornamento del rendering. Svuota la cache interna delle informazioni della camera in modo che frustum, LOD e altri parametri vengano ricalcolati al frame successivo. Adatta ai casi in cui i parametri della camera modificati esternamente devono avere effetto immediato.

Esempio:

lccManager.SetForceRefresh();

SetMipMode

public void SetMipMode(MipMode _mipMode)

Cambia la modalità di rendering Mip. La modalità Mip usa il campionamento mipmap (predefinito), mentre la modalità Non_Mip disattiva la mipmap.

ParametroTipoDescrizione
_mipModeMipModeModalità di destinazione; vedi MipMode

Note:

  • Ritorna immediatamente se la modalità corrente è la stessa di quella passata.
  • Ha effetto immediato quando cambiata.

Esempio:

lccManager.SetMipMode(MipMode.Non_Mip);

SetGraphicsAPI

public void SetGraphicsAPI(GraphicsDeviceType type)

Imposta il tipo di API grafica. L'HDR è abilitato in modalità DX11.

ParametroTipoDescrizione
typeGraphicsDeviceTypeTipo di API grafica (enum integrato di Unity)

Esempio:

lccManager.SetGraphicsAPI(GraphicsDeviceType.Direct3D11);

SetDebugMode

public void SetDebugMode(bool debug)

Attiva/disattiva la modalità debug.

ParametroTipoDescrizione
debugboolIndica se abilitare la modalità debug

Note:

  • Supportata solo sulle piattaforme PC / Mac.

Esempio:

lccManager.SetDebugMode(true);

SetEditorMode

public void SetEditorMode(bool _isEditor)

Attiva/disattiva la modalità Editor.

ParametroTipoDescrizione
_isEditorboolIndica se abilitare la modalità Editor

Note:

  • Supportata solo sulle piattaforme PC / Mac.

Esempio:

lccManager.SetEditorMode(true);

SetAECMode

public void SetAECMode(bool _aec)

Attiva/disattiva la modalità AEC (Architecture / Engineering / Construction).

ParametroTipoDescrizione
_aecboolIndica se abilitare la modalità AEC

Note:

  • Supportata solo sulle piattaforme PC / Mac.

Esempio:

lccManager.SetAECMode(true);

SetSemantic

// Valore di ritorno: bool, false=parametro non valido
public bool SetSemantic(bool enable, Vector4[] color = null)

Attiva/disattiva la modalità di rendering semantico. Quando è attiva, si può passare un array di colori per definire il colore di visualizzazione di ogni categoria semantica.

ParametroTipoDescrizione
enableboolIndica se abilitare il rendering semantico
colorVector4[]Array di colori semantici, la lunghezza deve essere 100, altrimenti viene restituito false; passa null per usare i colori predefiniti

Esempio:

Vector4[] colors = new Vector4[100];
colors[0] = new Vector4(1, 0, 0, 1); // Categoria 0 = rosso
lccManager.SetSemantic(true, colors);

SwitchRenderMode

public void SwitchRenderMode(RenderMode mode, Texture2D tex = null)

Passa dal rendering della nuvola di punti al rendering 3DGS. In modalità nuvola di punti si può fornire una texture di rampa colore per l'elevazione.

ParametroTipoDescrizione
modeRenderModeModalità di rendering; vedi RenderMode
texTexture2DTexture di rampa colore per l'elevazione (facoltativa)

Note:

  • Supportata solo sulle piattaforme PC / Mac.

Esempio:

lccManager.SwitchRenderMode(RenderMode.PointCloud, elevationTex);

SetRecordMode

public void SetRecordMode(bool isRecord, Vector2 renderSize, float verticalFov)

Imposta la modalità di registrazione. In modalità di registrazione, vengono usati una risoluzione e un FOV fissi per il rendering, adatti alla registrazione video in HD.

ParametroTipoDescrizione
isRecordboolIndica se usare la modalità di registrazione
renderSizeVector2Risoluzione di registrazione
verticalFovfloatFOV verticale (gradi)

Note:

  • Supportata solo sulle piattaforme PC / Mac.
  • In modalità di registrazione, la lunghezza focale della camera è fissa e non cambia con il componente Camera.
  • Dopo la registrazione, chiama SetRecordMode(false, ...) per ripristinare.

Esempio:

lccManager.SetRecordMode(true, new Vector2(3840, 2160), 60f);

SetVRPerformance

public void SetVRPerformance(bool _enabled)

Imposta la modalità di ordinamento ad alte prestazioni per la VR. true usa l'ordinamento radix su GPU (GpuSorter), mentre false ripiega su CPU / BitonicSorter.

ParametroTipoDescrizione
_enabledboolIndica se abilitare l'ordinamento ad alte prestazioni su GPU

Note:

  • Influisce solo sul percorso di ordinamento dei visori VR (Pico / Quest / PicoSwan / OpenXR); abilitato per impostazione predefinita.
  • Quando non c'è un dispositivo di calcolo (come Mali), l'ordinamento a monte ripiega automaticamente sulla CPU, indipendentemente da questo interruttore.

Esempio:

lccManager.SetVRPerformance(true);

Illuminazione e ombre

I seguenti metodi controllano la ricezione delle ombre e le luci puntiformi personalizzate sulle superfici 3DGS. I metodi relativi alle ombre devono essere chiamati dopo che la scena LCC ha terminato il caricamento.

SetShadowReceive

public void SetShadowReceive(bool enable)

Attiva/disattiva la ricezione delle ombre sulla nuvola di punti. Quando è attiva, le ombre degli oggetti Mesh nella scena possono essere proiettate sulle superfici della nuvola di punti 3DGS.

ParametroTipoDescrizione
enableboolIndica se ricevere le ombre

Note:

  • Disattivata per impostazione predefinita.
  • Richiede oggetti Mesh che proiettano ombre e una Luce direzionale nella scena.

Esempio:

lccManager.SetShadowReceive(true);

SetShadowColor

public void SetShadowColor(Color color)

Imposta il colore dell'area in ombra.

ParametroTipoDescrizione
colorColorColore dell'ombra (RGBA)

Note:

  • Predefinito (0.3, 0.3, 0.3, 1).
  • SetShadowReceive(true) deve essere abilitata prima.

Esempio:

lccManager.SetShadowColor(new Color(0.3f, 0.3f, 0.3f, 1f));

SetShadowStrength

public void SetShadowStrength(float strength)

Imposta la forza dell'ombra. 0 è nessuna ombra, 1 è l'ombra più forte.

ParametroTipoDescrizione
strengthfloatForza dell'ombra, intervallo [0, 1], limitata automaticamente quando superata

Note:

  • Predefinito 1.0.
  • SetShadowReceive(true) deve essere abilitata prima.

Esempio:

lccManager.SetShadowStrength(0.8f);

SetLights

// Valore di ritorno: int, 0=riuscito, -1=superato il limite massimo di conteggio
public int SetLights(List<PointLightData> lights)

Imposta l'elenco di luci puntiformi personalizzate. Passare null o un elenco vuoto disattiva l'illuminazione personalizzata.

ParametroTipoDescrizione
lightsList<PointLightData>Elenco di luci puntiformi; vedi PointLightData

Note:

  • PointLightData.lightType: 0 è una luce puntiforme (direction / spotAngle ignorati), 1 è una luce spot (direction / spotAngle richiesti).
  • Passare null o un elenco vuoto disattiva l'illuminazione personalizzata.

Esempio:

using Unity.Mathematics; // float3

var lights = new List<PointLightData>();
lights.Add(new PointLightData {
    position = new float3(0, 5, 0),
    lightType = 0,              // 0=luce puntiforme, 1=luce spot
    color = new float3(1, 1, 1),
    intensity = 2f,
    range = 10f
});
lccManager.SetLights(lights);

Gestione della camera

SetMainCamera

public void SetMainCamera(Camera _cam)

Imposta la camera di rendering principale. LCC usa questa camera per il frustum culling, la selezione LOD, l'ordinamento e altre operazioni.

ParametroTipoDescrizione
_camCameraCamera di rendering principale; passa null per svuotare

Note:

  • Deve essere impostata prima di Renderer.Load().
  • Supportata solo sulle piattaforme PC / Mac.

Esempio:

lccManager.SetMainCamera(Camera.main);

AddCamera

public void AddCamera(Camera _cam)

Aggiunge una camera secondaria. La camera secondaria partecipa al rendering ma non influisce sulla selezione LOD.

ParametroTipoDescrizione
_camCameraCamera secondaria

Note:

  • Supportata solo sulle piattaforme PC / Mac.
  • La camera principale non può essere aggiunta come camera secondaria.

Esempio:

lccManager.AddCamera(secondCamera);

RemoveCamera

public void RemoveCamera(Camera _cam)

Rimuove una camera secondaria aggiunta.

ParametroTipoDescrizione
_camCameraLa camera secondaria da rimuovere

Note:

  • Supportata solo sulle piattaforme PC / Mac.

Esempio:

lccManager.RemoveCamera(secondCamera);

Ritaglio / Evidenziazione / Tono

Ritaglio, evidenziazione e tono sono tre tipi di operazioni di modifica, che supportano tutte la definizione della regione interessata tramite texture 2D, geometria 3D o una combinazione di entrambe. Vedi Data2D, Data3D, DataMix e ToneMix.

SetClip (ritaglio con piano)

// Valore di ritorno: int, 0=riuscito
public int SetClip(Vector3 planePoint, Vector3 planeNormal, bool inside = true)

Ritaglia la nuvola di punti con un piano infinito, mantenendo i punti sul lato della normale o sul lato opposto.

ParametroTipoDescrizione
planePointVector3Un punto sul piano
planeNormalVector3Normale del piano
insidebooltrue mantiene il lato della normale

Note:

  • Mutualmente esclusivo con le altre modalità di ritaglio.

Esempio:

lccManager.SetClip(Vector3.zero, Vector3.up, true); // Mantieni sopra il terreno

SetClip (ritaglio con texture 2D)

// Valore di ritorno: int, 0=riuscito, 1=lista vuota, 2=superato il conteggio massimo
public int SetClip(List<Data2D> _2Ds)

Ritaglia la nuvola di punti usando una maschera di texture 2D proiettata.

ParametroTipoDescrizione
_2DsList<Data2D>Elenco di selezione con texture 2D

Esempio:

var clips = new List<Data2D>();
clips.Add(new Data2D {
    texture = maskTex,
    mv = modelViewMatrix,
    mvp = mvpMatrix,
    mode = SelectMode.normal
});
lccManager.SetClip(clips);

SetClip (ritaglio con geometria 3D)

// Valore di ritorno: int, 0=riuscito, 1=lista vuota, 2=superato il conteggio massimo, 3=nessuna geometria valida
public int SetClip(List<Data3D> _3Ds)

Ritaglia la nuvola di punti con geometrie 3D, supportando operazioni booleane per combinare più geometrie.

ParametroTipoDescrizione
_3DsList<Data3D>Elenco di geometrie 3D

Note:

  • È richiesta almeno una geometria con operation == normal.

Esempio:

var clips = new List<Data3D>();
clips.Add(new Data3D {
    type = ShapeType.box,
    invMat = boxInverseMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetClip(clips);

SetClip (ritaglio in modalità mista)

// Valore di ritorno: int, 0=riuscito, 1=lista vuota, 2=superato il conteggio massimo
public int SetClip(List<DataMix> mix)

Definisce la regione di ritaglio con una combinazione di texture 2D e geometrie 3D. Ogni voce specifica il proprio tipo tramite editType.

ParametroTipoDescrizione
mixList<DataMix>Elenco di selezione misto (2D + 3D)

Esempio:

var mix = new List<DataMix>();
mix.Add(new DataMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = matrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetClip(mix);

QuitClipMode

public void QuitClipMode()

Esce dalla modalità di ritaglio e ripristina la visualizzazione completa della nuvola di punti.

Esempio:

lccManager.QuitClipMode();

SetHighlight (evidenziazione con texture 2D)

// Valore di ritorno: int, 0=riuscito, 1=lista vuota, 2=superato il conteggio massimo
public int SetHighlight(List<Data2D> _2Ds)

Evidenzia la nuvola di punti usando una maschera di texture 2D proiettata; la nuvola di punti al di fuori della regione evidenziata viene attenuata.

ParametroTipoDescrizione
_2DsList<Data2D>Elenco di selezione con texture 2D

Note:

  • Mutualmente esclusiva con l'evidenziazione 3D e l'evidenziazione mista.

Esempio:

var highlights = new List<Data2D>();
highlights.Add(new Data2D {
    texture = maskTex,
    mv = modelViewMatrix,
    mvp = mvpMatrix,
    mode = SelectMode.normal
});
lccManager.SetHighlight(highlights);

SetHighlight (evidenziazione con geometria 3D)

// Valore di ritorno: int, 0=riuscito, 1=lista vuota, 2=superato il conteggio massimo, 3=nessuna geometria valida
public int SetHighlight(List<Data3D> _3Ds)

Definisce la regione evidenziata con geometrie 3D, supportando operazioni booleane per combinare.

ParametroTipoDescrizione
_3DsList<Data3D>Elenco di geometrie 3D

Note:

  • È richiesta almeno una geometria con operation == normal.

Esempio:

var highlights = new List<Data3D>();
highlights.Add(new Data3D {
    type = ShapeType.box,
    invMat = boxInverseMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetHighlight(highlights);

SetHighlight (evidenziazione in modalità mista)

// Valore di ritorno: int, 0=riuscito, 1=lista vuota, 2=superato il conteggio massimo
public int SetHighlight(List<DataMix> mix)

Definisce la regione evidenziata con una combinazione di texture 2D e geometrie 3D.

ParametroTipoDescrizione
mixList<DataMix>Elenco di selezione misto

Esempio:

var mix = new List<DataMix>();
mix.Add(new DataMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = matrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal
});
lccManager.SetHighlight(mix);

QuitHighlightMode

public void QuitHighlightMode()

Esce dalla modalità di evidenziazione e ripristina la visualizzazione normale della nuvola di punti.

Esempio:

lccManager.QuitHighlightMode();

SetTone

// Valore di ritorno: int, 0=riuscito, 1=lista vuota, 2=superato il conteggio massimo
public int SetTone(List<ToneMix> mix)

Applica la regolazione del tono alla regione selezionata, supportando luminosità, saturazione, contrasto e filtri LUT. La regione del tono può essere definita tramite texture 2D o geometria 3D.

ParametroTipoDescrizione
mixList<ToneMix>Elenco di mix del tono

Note:

  • brightness / saturation / contrast sono predefiniti a 1.0.
  • lutid è l'indice del filtro LUT; 0 significa non usato.

Esempio:

var tones = new List<ToneMix>();
tones.Add(new ToneMix {
    editType = EditType.Edit3D,
    type = ShapeType.box,
    invMat = boxMatrix,
    operation = OperationMode.normal,
    mode = SelectMode.normal,
    brightness = 1.2f,
    saturation = 1.0f,
    contrast = 1.1f,
    lutid = 0
});
lccManager.SetTone(tones);

QuitToneMode

public void QuitToneMode()

Esce dalla modalità tono e ripristina il colore originale della nuvola di punti.

Esempio:

lccManager.QuitToneMode();

Proiezione delle decal

La proiezione delle decal proietta una texture sulle superfici 3DGS lungo la direzione del proiettore. La decal è uno stato globale fisso nel mondo, coerente per tutte le camere. Il flusso di lavoro tipico è: abilita la decal → imposta la texture → imposta la posa del proiettore. I seguenti metodi sono supportati solo sulle piattaforme PC / Mac.

SetDecalEnabled

public void SetDecalEnabled(bool enable)

Attiva/disattiva la proiezione delle decal. SetDecalTexture() e SetDecalProjection() devono essere chiamate separatamente per impostare il contenuto e la posa del proiettore.

ParametroTipoDescrizione
enableboolIndica se abilitare la proiezione delle decal

Note:

  • La disattivazione non svuota la texture / i parametri memorizzati nella cache.

Esempio:

lccManager.SetDecalEnabled(true);
lccManager.SetDecalTexture(decalTex);
lccManager.SetDecalProjection(projectorPos, projectorRot, 60f, 1.778f, 0.1f, 20f);

SetDecalTexture

public void SetDecalTexture(Texture2D tex)

Imposta la texture della decal. RGB è il colore e A è la maschera propria della decal, che viene moltiplicata con l'opacità globale e la sfumatura dei bordi.

ParametroTipoDescrizione
texTexture2DTexture della decal; passare null svuota il riferimento

Esempio:

lccManager.SetDecalTexture(logoTex);

SetDecalProjection

public void SetDecalProjection(Vector3 pos, Quaternion rot, float fov, float aspect, float near, float far)

Imposta la posa e i parametri di prospettiva del proiettore della decal. Il proiettore proietta lungo la propria direzione in avanti (+Z) e i punti all'interno del frustum sono coperti dalla decal.

ParametroTipoDescrizione
posVector3Posizione mondo del proiettore
rotQuaternionOrientamento del proiettore
fovfloatFOV verticale (gradi), limitato a [1, 179]
aspectfloatProporzioni, minimo 1e-4
nearfloatPiano di ritaglio vicino, minimo 1e-3
farfloatPiano di ritaglio lontano, minimo near + 1e-3

Esempio:

lccManager.SetDecalProjection(new Vector3(0, 10, 0), Quaternion.Euler(90, 0, 0), 60f, 1.778f, 0.1f, 20f);

SetDecalOpacity

public void SetDecalOpacity(float opacity)

Imposta l'opacità complessiva della decal.

ParametroTipoDescrizione
opacityfloatOpacità complessiva della decal, intervallo [0, 1], limitata automaticamente quando superata

Esempio:

lccManager.SetDecalOpacity(0.8f);

SetDecalEdgeFade

public void SetDecalEdgeFade(float edgeFade)

Imposta la larghezza della sfumatura dei bordi della decal. 0 è un bordo netto e un valore maggiore rende la transizione del bordo più morbida.

ParametroTipoDescrizione
edgeFadefloatLarghezza della sfumatura dei bordi (rapporto in spazio UV), intervallo [0, 0.5), limitata automaticamente quando superata

Esempio:

lccManager.SetDecalEdgeFade(0.1f);

SetDecalOcclusion

public void SetDecalOcclusion(bool enable)

Attiva/disattiva il culling di occlusione delle decal (basato sulla depth map del proiettore). Quando è attivo, le superfici occluse non vengono coperte dalla decal.

ParametroTipoDescrizione
enableboolIndica se abilitare il culling di occlusione delle decal

Note:

  • Solo piattaforma PC / Mac e solo pipeline URP.
  • Prima di abilitare, SetDecalProjection() dovrebbe essere stata chiamata per impostare il proiettore.
  • Dipende dai parametri di qualità configurati da SetDecalOcclusionSettings().

Esempio:

lccManager.SetDecalOcclusion(true);

SetDecalOcclusionSettings

public void SetDecalOcclusionSettings(DecalOcclusionSettings settings)

Imposta tutti i parametri di qualità del culling di occlusione delle decal in una sola volta. Vedi DecalOcclusionSettings.

ParametroTipoDescrizione
settingsDecalOcclusionSettingsParametri di qualità del culling di occlusione

Note:

  • Può essere regolata in qualsiasi momento; i parametri hanno effetto immediato.

Esempio:

lccManager.SetDecalOcclusionSettings(DecalOcclusionSettings.Default);
lccManager.SetDecalOcclusionSettings(new DecalOcclusionSettings {
    opacityCutoff = 0.1f,
    depthBias = 0.05f,
    footprintMaxPx = 2,
    resolution = 1024
});

Snapping

La funzionalità di snapping cerca automaticamente i bordi / gli angoli vicini a cui allinearsi durante il raycasting, ed è comunemente usata per interazioni precise come misurazione e annotazione. I seguenti metodi sono supportati solo sulle piattaforme PC / Mac.

SetSnapEnabled

public void SetSnapEnabled(bool enable)

Attiva/disattiva la funzionalità di snapping. Quando è attiva, RaycastWithSnap() cerca automaticamente i bordi / gli angoli vicini a cui agganciarsi.

ParametroTipoDescrizione
enableboolIndica se abilitare lo snapping

Note:

  • Disattivata per impostazione predefinita.
  • Nessun effetto su mobile / VR e viene emesso un avviso.

Esempio:

lccManager.SetSnapEnabled(true);

SetSnapRadius

public void SetSnapRadius(float pixels)

Imposta il raggio di ricerca dello snapping. Cerca il bordo / l'angolo più vicino entro questo intervallo di pixel.

ParametroTipoDescrizione
pixelsfloatRaggio di ricerca dello snapping (pixel)

Note:

  • Predefinito 20 pixel.
  • Un valore maggiore significa un intervallo di ricerca più ampio, ma può agganciarsi a destinazioni non volute.

Esempio:

lccManager.SetSnapRadius(30f);

SetEdgeThreshold

public void SetEdgeThreshold(float threshold)

Imposta la soglia di rilevamento dei bordi. Un valore minore rileva più bordi.

ParametroTipoDescrizione
thresholdfloatSoglia di rilevamento dei bordi, intervallo consigliato [0.1, 0.8]

Note:

  • Predefinito 0.3.
  • Un valore troppo piccolo produce una grande quantità di bordi rumorosi.

Esempio:

lccManager.SetEdgeThreshold(0.2f);

SetSnapPreviewEnabled

public void SetSnapPreviewEnabled(bool enable)

Attiva/disattiva la funzionalità di anteprima di snap. Quando è attiva, l'indicatore della destinazione di snap più vicina viene visualizzato in tempo reale mentre il mouse si sposta.

ParametroTipoDescrizione
enableboolIndica se abilitare l'anteprima di snap

Note:

  • SetSnapEnabled(true) deve essere chiamata prima.
  • L'anteprima consuma continuamente risorse GPU (rilevamento a ogni frame).

Esempio:

lccManager.SetSnapPreviewEnabled(true);

UpdateSnapPreview

public void UpdateSnapPreview(Vector2 mousePos, Camera cam)

Aggiorna lo stato dell'anteprima di snap. Chiamata mentre il mouse si sposta per aggiornare la posizione dell'indicatore di anteprima.

ParametroTipoDescrizione
mousePosVector2Coordinate schermo correnti del mouse
camCameraCamera

Note:

  • SetSnapPreviewEnabled(true) deve essere chiamata prima.
  • Si consiglia di chiamarla continuamente in Update.

Esempio:

void Update()
{
    lccManager.UpdateSnapPreview(Input.mousePosition, Camera.main);
}

GetSnapPreviewState

// Valore di ritorno: SnapPreviewState
public SnapPreviewState GetSnapPreviewState()

Ottiene lo stato corrente dell'anteprima di snap, incluso se esiste una destinazione di snap, il tipo di destinazione, la posizione schermo della destinazione e la distanza in pixel dal mouse. Vedi SnapPreviewState.

Note:

  • SetSnapPreviewEnabled(true) e UpdateSnapPreview() devono essere chiamate prima.
  • Restituisce default(SnapPreviewState) quando non c'è una destinazione.
  • screenPos è in coordinate schermo, non in coordinate mondo; usa RaycastWithSnap() per ottenere HitResult.hitPos per le coordinate mondo.

Esempio:

var state = lccManager.GetSnapPreviewState();
if (state.hasTarget)
{
    // state.snapType: Corner / Edge
    // state.screenPos: coordinate schermo della destinazione di snap
    // state.distanceToMouse: distanza in pixel
}

Raycasting e query di collisione

Il raycasting serve a selezionare punti sulle superfici 3DGS, mentre le query di collisione servono all'interazione fisica tra personaggi / oggetti e la nuvola di punti. Il risultato del colpo viene restituito tramite HitResult.

Nota:

Il campo della coordinata mondo del punto di impatto di HitResult si chiama hitPos (non position).

Raycast (coordinate schermo)

// Valore di ritorno: bool, true=colpito
public bool Raycast(Vector3 mousePos, out HitResult _finalResult)

Emette un raggio dalle coordinate schermo per rilevare i colpi sulla nuvola di punti. Il raggio viene generato usando la camera principale impostata da SetMainCamera().

ParametroTipoDescrizione
mousePosVector3Coordinate schermo
_finalResultout HitResultRisultato del colpo

Note:

  • SetMainCamera() deve essere chiamata prima per impostare la camera principale.
  • Restituisce il punto di impatto più vicino alla camera.
  • La precisione è influenzata da SetRaycastDelta() e la distanza massima è controllata da SetMaxRaycastDistance().

Esempio:

if (lccManager.Raycast(Input.mousePosition, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

Raycast (Ray)

// Valore di ritorno: bool, true=colpito
public bool Raycast(Ray _ray, out HitResult _finalResult)

Esegue il raycasting con un Ray personalizzato, iterando su tutti i Renderer attivi e restituendo il colpo più vicino.

ParametroTipoDescrizione
_rayRayRay
_finalResultout HitResultRisultato del colpo

Esempio:

Ray ray = new Ray(origin, direction);
if (lccManager.Raycast(ray, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

RaycastMesh (coordinate schermo)

// Valore di ritorno: bool, true=colpito
public bool RaycastMesh(Vector3 mousePos, out HitResult _finalResult, float _distance = 70.0f)

Emette un raggio dalle coordinate schermo per rilevare i colpi contro la mesh di collisione della nuvola di punti. Usa i dati del Collider per il rilevamento, che è più veloce di Raycast() ma meno preciso.

ParametroTipoDescrizione
mousePosVector3Coordinate schermo
_finalResultout HitResultRisultato del colpo
_distancefloatDistanza massima di rilevamento, predefinito 70.0

Note:

  • I dati devono contenere nodi Collider e Renderer.SetColliderEnable(true) deve essere chiamata prima.

Esempio:

if (lccManager.RaycastMesh(Input.mousePosition, out HitResult hit))
{
    Debug.Log(hit.hitPos);
}

RaycastMesh (Ray + Bounds)

// Valore di ritorno: bool, true=colpito
public bool RaycastMesh(Ray ray, out HitResult result, out Bounds hitBounds, float maxDist = 70.0f)

Esegue il rilevamento della mesh di collisione con un Ray personalizzato, restituendo anche il box di delimitazione del nodo colpito.

ParametroTipoDescrizione
rayRayRay
resultout HitResultRisultato del colpo
hitBoundsout BoundsBox di delimitazione del nodo colpito
maxDistfloatDistanza massima di rilevamento, predefinito 70.0

Note:

  • I dati devono contenere nodi Collider.

Esempio:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (lccManager.RaycastMesh(ray, out HitResult hit, out Bounds bounds))
{
    Debug.Log(bounds.center);
}

RaycastWithSnap

// Valore di ritorno: bool, true=colpito
public bool RaycastWithSnap(Vector2 screenPos, Camera cam, out HitResult result)

Raycasting con snapping. Prima esegue un raycast normale, poi cerca i bordi / gli angoli vicini al punto di impatto a cui agganciarsi.

ParametroTipoDescrizione
screenPosVector2Coordinate schermo
camCameraCamera
resultout HitResultRisultato del colpo (incluse le informazioni di snap)

Note:

  • SetSnapEnabled(true) deve essere chiamata prima.
  • Solo piattaforme PC / Mac; non disponibile su mobile / VR.
  • Priorità dello snap: Corner > Edge > None.
  • HitResult.snapType è il tipo di snap, HitResult.hitPos è la coordinata mondo dopo lo snap e HitResult.originalHitPos è il punto di impatto originale prima dello snap.

Esempio:

if (lccManager.RaycastWithSnap(mousePos, cam, out HitResult hit))
{
    // hit.snapType: Corner / Edge / None
    // hit.hitPos: coordinata mondo dopo lo snap
    // hit.originalHitPos: punto di impatto originale prima dello snap
}

SetRaycastDelta

public void SetRaycastDelta(float delta)

Imposta il parametro di precisione del raycasting. Un valore minore significa una precisione maggiore ma un consumo di prestazioni più elevato.

ParametroTipoDescrizione
deltafloatPrecisione del raycasting, intervallo [0.1, 10.0], limitata automaticamente quando superata

Note:

  • Predefinito 0.1.
  • Influisce sulla precisione di rilevamento di tutti i metodi Raycast().

Esempio:

lccManager.SetRaycastDelta(0.5f);

SetMaxRaycastDistance

public void SetMaxRaycastDistance(float _distance)

Imposta la distanza massima di rilevamento dei metodi Raycast().

ParametroTipoDescrizione
_distancefloatDistanza massima del raycast, intervallo [10, 10000], limitata automaticamente quando superata

Note:

  • Influisce sugli overload Raycast(Vector3) / Raycast(Ray); non influisce su RaycastMesh() (che ha un proprio parametro di distanza).

Esempio:

lccManager.SetMaxRaycastDistance(500f);

IntersectsSphere

// Valore di ritorno: bool, true=interseca
public bool IntersectsSphere(Sphere sphere)

// Valore di ritorno: bool, true=interseca
public bool IntersectsSphere(Sphere sphere, out Vector3 delta)

Rileva se una sfera interseca il collider della nuvola di punti. Il secondo overload restituisce anche il vettore di penetrazione, che può essere usato per la spinta fisica all'esterno.

ParametroTipoDescrizione
sphereSphereSfera
deltaout Vector3Vettore di penetrazione (direzione e distanza di espulsione)

Note:

  • I dati devono contenere nodi Collider e Renderer.SetColliderEnable(true) deve essere chiamata prima.
  • Itera su tutti i Renderer attivi.

Esempio:

var sphere = new Sphere(transform.position, 0.5f);
if (lccManager.IntersectsSphere(sphere, out Vector3 delta))
{
    transform.position += delta;
}

IntersectsCapsule

// Valore di ritorno: bool, true=interseca
public bool IntersectsCapsule(Capsule capsule)

// Valore di ritorno: bool, true=interseca
public bool IntersectsCapsule(Capsule capsule, out Vector3 delta)

Rileva se una capsula interseca il collider della nuvola di punti, comunemente usato per il rilevamento delle collisioni del character controller. Il secondo overload restituisce il vettore di penetrazione.

ParametroTipoDescrizione
capsuleCapsuleCapsula
deltaout Vector3Vettore di penetrazione

Note:

  • I dati devono contenere nodi Collider e Renderer.SetColliderEnable(true) deve essere chiamata prima.

Esempio:

var capsule = new Capsule(footPos, headPos, 0.3f);
if (lccManager.IntersectsCapsule(capsule, out Vector3 delta))
{
    characterController.Move(delta);
}

Effetti visivi

TriggerVFX

public void TriggerVFX(Vector3 vfxOriginW, int vfxid = 0)

Attiva un effetto visivo nella coordinata mondo specificata, espandendosi verso l'esterno da quella coordinata.

ParametroTipoDescrizione
vfxOriginWVector3Origine della coordinata mondo dell'effetto
vfxidintID dell'effetto, predefinito 0

Note:

  • Deve essere chiamata dopo che la scena LCC ha terminato il caricamento.

Esempio:

lccManager.TriggerVFX(hitPoint, 0);

Query sulle istanze

GetAllRenderers

// Valore di ritorno: List<Renderer>, una copia di tutte le istanze Renderer registrate
public List<Renderer> GetAllRenderers()

Ottiene l'elenco di tutte le istanze Renderer attualmente registrate (restituisce una copia).

Esempio:

var renderers = lccManager.GetAllRenderers();
foreach (var r in renderers) { /* ... */ }