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

    • LCC Studio

      • Prise en main
      • Version et mises à jour
      • Téléchargement et installation
      • Aperçu de l’interface et navigation
      • Avant la reconstruction
      • Reconstruction du modèle
      • Reconstruction d’un modèle unique
      • Fusion cartographique
      • Fusion aérienne-terrestre
      • Reconstruction aérienne
      • Mes modèles
      • Autres fonctionnalités
      • Paramètres et compte
      • Convertisseur
      • Reconstruction vidéo
      • Questions fréquentes
    • LCC Scene Editor

      • Version et mises à jour
      • Compte et connexion
      • Présentation du produit et accueil
      • Interface de l’éditeur
      • Modes de navigation de scène
      • Fichier
      • Paramètres
      • Opérations d’édition
      • Fenêtre
      • Barre d’outils globale
      • Ressources et propriétés
      • Barre d’outils gauche
      • Points de vue
      • Portail
      • Skybox
      • Annotations
      • Mesure
      • Parcours
      • Rapport de scène
      • 3D Layout
      • Mini-carte
      • Mode Prévisualisation, Viewer
      • Aide
      • FAQ
      • Point d’apparition
    • LCC Model Editor

      • Version et mises à jour
      • Guide de l’utilisateur
      • Aperçu et interface
      • Opérations sur les fichiers
      • Sélecteurs
      • Modification des modèles
      • Mesure
      • Réglage des couleurs
      • Gestion des ressources
      • Paramètres et aide
      • Questions fréquentes
    • Bonnes Pratiques

      • Fusion de plusieurs modèles 3DGS de grande taille
  • Plugin & SDK

    • Unreal

      • Introduction
      • Démarrage rapide - Windows
      • Démarrage rapide - Linux
      • Démarrage rapide - Quest3
      • Éditions et licences
      • Rendu
      • Rastérisation Tiled (expérimental)
      • Réglages visuels
      • Normales et éclairage
      • Édition de scène
      • Paramètres de performance
      • Guide d'optimisation des performances
      • Intégration avec les plugins tiers et moteur
      • Maillage proxy
      • Animation de chargement
      • Collision
      • Prise en charge du système de navigation
      • Prise en charge de l'eau à couche unique
      • Localisation
      • Questions fréquentes
      • Dépannage
      • Journaux et diagnostics
      • Nous contacter
      • Bonnes pratiques

        • Rééclairer un 3DGS avec un maillage LixelStudio
      • Référence API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actors SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Journal des modifications

        • 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

      • Introduction au SDK Unity
      • Fonctionnalités techniques
      • Exigences de l'environnement de développement
      • Guide de démarrage rapide PC
      • Guide d'optimisation des paramètres de projet
      • Guide de développement Pico 4 Ultra
      • Guide de streaming PC du Pico 4 Ultra
      • Guide de développement Quest 3
      • Guide de streaming PC du Quest 3
      • Guide de développement OpenXR
      • Guide Business Streaming du Pico 4 Ultra
      • Glossaire
      • FAQ
      • Nous contacter
      • Guide de développement des fonctionnalités

        • Guide de développement du rendu mixte multi-scènes
        • Guide de développement de la réception des ombres
        • Guide de développement de l'éclairage en temps réel
        • Guide de développement du rendu multi-caméras
        • Guide de développement du rendu d'images haute résolution
        • Guide de développement de la compatibilité des formats de données LCC et LCC2
        • Guide de développement de l'effet de chargement
        • Guide de développement du basculement du mode de rendu Mip
        • Guide de développement de l'accrochage aux arêtes et aux coins
        • Guide de développement du décalque projeté
        • Guide de développement du décalque projeté vidéo
        • Guide de développement du surlignage
        • Guide de développement de la découpe en temps réel
        • Guide de développement du réglage des couleurs
        • Guide de développement de l'obtention des données Mesh de la scène
        • Guide de développement du mode éditeur
        • Guide de configuration des paramètres de performance de rendu
        • Guide de développement du co-packageage de l'application et des données
        • Guide de développement du système de collision
        • Guide des problèmes d'autorisation de développement macOS
        • Guide de développement de la compilation et du packageage sur appareil iOS
      • Référence de l'API

        • LCCManager
        • Renderer
        • Types de données
      • Journal des modifications

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

Renderer : Instance de rendu

Une instance de rendu LCC, responsable du chargement des données et du contrôle du rendu d'une seule scène 3DGS. Elle est créée via LCCManager.GetRender() et ne peut pas être instanciée directement.

Espace de nomsLCCCore

Propriétés

PropriétéTypeAccèsDescription
TransformTransformLecture seuleLe composant Transform auquel l'instance de rendu est attachée
IsEnableboolLecture seuleSi l'instance de rendu est active ; défaut true
IsRenderAllboolLecture seuleSi les données LOD0 complètes sont rendues (vs. mode streaming / parcours LOD) ; défaut false

Méthodes

Les méthodes sont regroupées par objectif :

  • Chargement des données et cycle de vie
  • Contrôle à l'exécution et requêtes

Chargement des données et cycle de vie

Load

public void Load(string _filePath, Action<float> _onProgress, Action _onComplete, Action<string> _onError = null)

Charge un fichier de données 3DGS. Prend en charge .lcc2 (fichier local ou HTTP distant) et les formats natifs .ply / .sog / .spz / .splat / .ksplat (fichiers locaux uniquement).

ParamètreTypeDescription
_filePathstringChemin du fichier de données (chemin local ou URL HTTP)
_onProgressAction<float>Callback de progression de chargement, peut être null
_onCompleteActionCallback de fin de chargement, peut être null
_onErrorAction<string>Callback d'échec de chargement (optionnel), avec la description de l'erreur comme paramètre

Remarques :

  • Le callback _onComplete se déclenche après que les données sont réellement arrivées sur le GPU.
  • Les opérations telles que la réception des ombres et le déclenchement d'effets doivent être appelées à l'intérieur du callback _onComplete.
  • Les formats natifs utilisent toujours le chemin de chargement complet SingleRender (pas de découpage LOD) ; la progression est signalée via _onProgress et les échecs via _onError.
  • Le mode MultiRender n'autorise pas les sources de données HTTP ni les formats natifs.
  • HTTP ne prend en charge que .lcc2 ; les formats natifs sont des chemins locaux uniquement et en mode SingleRender uniquement.
  • SetPlatformType() / SwitchRenderPass() / SetMainCamera() et les autres prérequis doivent être terminés en premier.
  • Vous devez appeler Unload() ou Dispose() avant de rappeler Load() ; appeler Load() pendant qu'un chargement est en cours est rejeté et déclenche _onError.

Exemple :

renderer.Load("D:/data/scene.lcc2",
    p => Debug.Log($"Chargement {p:P0}"),
    () => {
        Debug.Log("Chargement terminé");
        lccManager.SetShadowReceive(true);
    });

Unload

public void Unload()

Libère les données actuellement chargées et revient à l'état « créé mais non chargé », en conservant l'enregistrement du manager de l'instance. La même instance Renderer peut être réutilisée en répétant le cycle Load → Unload → Load.

Remarques :

  • Différence avec Dispose() : l'enregistrement du manager n'est pas supprimé et l'instance peut être réutilisée.
  • Après Unload(), IsEnable est false ; rappeler Load() réinitialise tout l'état des données.
  • Ne s'exécute que lorsque les données ont fini de charger ; retourne immédiatement lorsque rien n'est chargé ou déjà Dispose()d.

Exemple :

renderer.Unload();
renderer.Load(newFilePath, null, () => Debug.Log("Rechargé"));

Dispose

public void Dispose()

Détruit l'instance de rendu et libère toutes les ressources GPU et la mémoire. L'instance ne peut plus être utilisée après la destruction, et toutes les méthodes publiques deviennent automatiquement inefficaces.

Remarques :

  • Notifie automatiquement le LCCManager de supprimer la référence après l'appel.

Exemple :

renderer.Dispose();
renderer = null;

Contrôle à l'exécution et requêtes

SetEnable

public void SetEnable(bool _enable)

Définit l'état d'activation de l'instance de rendu. Lorsqu'elle est désactivée, elle ne participe pas au rendu ni à la sélection LOD.

ParamètreTypeDescription
_enableboolS'il faut activer

Remarques :

  • Ne libère pas les ressources et peut être réactivée à tout moment.

Exemple :

renderer.SetEnable(false); // Masquer
renderer.SetEnable(true);  // Afficher

SetAlpha

public void SetAlpha(float alpha)

Définit l'opacité indépendante du Renderer actuel. Contrairement à l'alpha global au niveau du processus de LCCManager.SetAlpha(), cette API n'affecte que le Renderer actuel. Alpha final = couverture splat × alpha global LCCManager × alpha de ce Renderer.

ParamètreTypeDescription
alphafloatOpacité indépendante du Renderer actuel, plage [0, 1], automatiquement bornée en cas de dépassement

Remarques :

  • Ne prend effet que sur le chemin MultiRender / RenderCore (PC / Mac) ; sur ce chemin, chaque splat porte un renderID, et le shader indexe le tableau d'alpha par Renderer par renderID.
  • Le chemin FullRender / Mobile n'a pas de renderID, donc cette API y est sans effet (la valeur est mise en cache et automatiquement appliquée lors du passage ultérieur au chemin RenderCore).

Exemple :

renderer.SetAlpha(0.5f);

SetRenderAll

public void SetRenderAll(bool _renderAll)

Définit s'il faut utiliser le mode de rendu complet (rendre entièrement les données LOD0). Il prend effet au prochain appel Load() et n'affecte pas le jeu de données actuellement chargé.

ParamètreTypeDescription
_renderAllboolS'il faut rendre entièrement

Remarques :

  • Pris en charge uniquement sur les plateformes PC / Mac ; aucun effet sur mobile / VR.
  • Interrogez l'état actuel avec la propriété IsRenderAll.

Exemple :

renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Chargement complet"));

SetColliderEnable

// Valeur de retour : bool, true=défini avec succès, false=les données n'ont pas de collider ou l'instance est inactive
public bool SetColliderEnable(bool _enable)

Active/désactive la fonctionnalité de collider. Une fois activée, IntersectsSphere() / IntersectsCapsule() et RaycastMesh() deviennent disponibles.

ParamètreTypeDescription
_enableboolS'il faut activer le collider

Remarques :

  • Les données doivent contenir un nœud Collider, sinon false est retourné.
  • Le Renderer doit être actif.

Exemple :

bool ok = renderer.SetColliderEnable(true);
if (!ok) Debug.LogWarning("Les données ne contiennent pas de collider");

SetEnvironment

public void SetEnvironment(bool _env)

Active/désactive le rendu des données d'environnement. Les données d'environnement sont un nuage de points d'arrière-plan à faible précision utilisé pour remplir les vues lointaines.

ParamètreTypeDescription
_envboolS'il faut rendre les données d'environnement

Remarques :

  • Les données doivent contenir des nœuds d'environnement.
  • Les données d'environnement sont indépendantes du système LOD des données principales.

Exemple :

renderer.SetEnvironment(true);

GetBounds

public void GetBounds(out Vector3 max, out Vector3 min)

Obtient la boîte englobante alignée sur les axes (coordonnées mondiales) des données rendues.

ParamètreTypeDescription
maxout Vector3Point maximal de la boîte englobante (coordonnées mondiales)
minout Vector3Point minimal de la boîte englobante (coordonnées mondiales)

Remarques :

  • Retourne Vector3.zero lorsque les données ne sont pas entièrement chargées.
  • Peut être utilisé pour le positionnement de la caméra et le calcul de l'angle de vue.

Exemple :

renderer.GetBounds(out Vector3 max, out Vector3 min);
Vector3 center = (max + min) / 2f;
Vector3 size = max - min;

GetSourceType

// Valeur de retour : SourceType
public SourceType GetSourceType()

Obtient le type de source des données chargées ; voir SourceType.

Remarques :

  • Retourne SourceType.None lorsque les données ne sont pas chargées.

GetDataType

// Valeur de retour : DataType
public DataType GetDataType()

Obtient le type de format des données chargées ; voir DataType.

Remarques :

  • Retourne DataType.None lorsque les données ne sont pas chargées.

GetMeta (depuis le chemin du fichier)

// Valeur de retour : bool, true=lecture réussie
public bool GetMeta(string _filePath, out SplatMeta _metaData)

Lit les métadonnées des données 3DGS depuis le chemin de fichier spécifié sans charger entièrement les données.

ParamètreTypeDescription
_filePathstringChemin du fichier de données
_metaDataout SplatMetaMétadonnées de sortie

Remarques :

  • Prend en charge les chemins locaux et les URL HTTP.
  • Ne lit que les métadonnées d'en-tête du fichier et ne charge pas les données du nuage de points.
  • Retourne false lorsque le chemin est vide ou que le fichier n'existe pas.

Exemple :

if (renderer.GetMeta(filePath, out SplatMeta meta))
{
    Debug.Log(meta.source);
    Debug.Log(meta.dataType);
}

GetMeta (depuis les données chargées)

// Valeur de retour : bool, true=lecture réussie
public bool GetMeta(out SplatMeta _metaData)

Obtient les métadonnées des données actuellement chargées. Si les données n'ont pas fini de charger, il essaie de lire depuis le chemin du fichier.

ParamètreTypeDescription
_metaDataout SplatMetaMétadonnées de sortie

Exemple :

if (renderer.GetMeta(out SplatMeta meta))
{
    Debug.Log(meta.source);
}

GetMeshBlockInfos

// Valeur de retour : List<LCCMeshBlockInfo>, métadonnées des blocs Mesh de collision ; null lorsqu'il n'y a pas de Mesh ou indisponible
public List<LCCMeshBlockInfo> GetMeshBlockInfos()

Retourne les métadonnées de tous les blocs Mesh de collision (id, boîte englobante mondiale / locale, nombre de sommets, nombre de faces). Sans E/S, sans analyse — ne lit que les métadonnées déjà en mémoire. Voir LCCMeshBlockInfo.

Remarques :

  • Plateforme PC / Mac + source de données locale uniquement ; doit être appelée sur le thread principal.
  • Utilisation typique : utilisez-la d'abord pour obtenir la boîte englobante mondiale de chaque bloc, choisissez les ids nécessaires, puis appelez GetMeshes(ids) pour lire uniquement ces blocs.
  • Les formats natifs (PLY / SOG / SPZ / splat / ksplat) n'ont pas de Mesh et retournent null (normal, pas de journal).

Exemple :

var infos = renderer.GetMeshBlockInfos();
foreach (var info in infos)
{
    Debug.Log($"{info.id}: verts={info.vertexCount}, faces={info.faceCount}");
}

GetMeshes

// Valeur de retour : List<LCCMeshBlock>, toutes les données géométriques des Mesh de collision ; null lorsqu'indisponible
public List<LCCMeshBlock> GetMeshes()

Retourne de manière synchrone les données géométriques de tous les blocs Mesh de collision (sommets + indices de triangles, en coordonnées locales). C'est une opération lourde (lecture disque synchrone + analyse + allocation), appelez-la donc une fois et mettez-la vous-même en cache — ne l'appelez jamais à chaque image. Voir LCCMeshBlock.

Remarques :

  • Plateforme PC / Mac + source de données locale uniquement ; doit être appelée sur le thread principal.
  • Pour les grandes scènes, utilisez GetMeshBlockInfos() pour choisir les ids + GetMeshes(ids) afin d'éviter d'allouer une énorme quantité de mémoire managée en une fois.
  • Un seul bloc peut avoir plus de 65535 sommets, donc mesh.indexFormat = IndexFormat.UInt32 doit être défini avant de construire le Mesh.

Exemple :

var meshes = renderer.GetMeshes();
foreach (var block in meshes)
{
    // block.vertices / block.triangles sont dans le système de coordonnées local de l'objet
}

GetMeshes (par id)

// Valeur de retour : List<LCCMeshBlock>, données géométriques des Mesh de collision des ids spécifiés ; null lorsqu'il n'y a pas d'impact
public List<LCCMeshBlock> GetMeshes(IEnumerable<string> _ids)

Retourne de manière synchrone les données géométriques des blocs Mesh de collision (en coordonnées locales) des ids spécifiés. Les ids sont fournis par GetMeshBlockInfos().

ParamètreTypeDescription
_idsIEnumerable<string>L'ensemble des ids de blocs cibles (fourni par GetMeshBlockInfos())

Remarques :

  • Les ids inconnus sont ignorés avec un avertissement ; les ids dupliqués sont dédupliqués (pas de lectures disque répétées) ; l'ordre de retour est l'ordre de parcours des ids (après déduplication).
  • Retourne null avec un avertissement lorsque l'entrée est null, vide ou sans impact.
  • Les autres contraintes sont identiques à GetMeshes().

Exemple :

var ids = new List<string> { "block-0", "block-3" };
var meshes = renderer.GetMeshes(ids);