LCC2 veri formatı daha iyi veri sıkıştırma ve LOD mekanizmaları sunar. Mevcut LCC formatı zamanla LCC2 ile değiştirilecek ve mevcut LCC SDK'nın (v1.x) bakımı kademeli olarak sona erecektir. Eski ve yeni veri formatları birbirinden çok farklı olduğu için yeni LCC SDK (v2.x), LCC formatıyla geriye dönük uyumlu değildir. Veri uyumluluğu aşağıdaki iki yöntemle sağlanabilir:
- Resmi dönüştürücünün (LccConverter) exe/dll dosyasını kullanarak LCC veri formatını LCC2'ye dönüştürün, ardından SDK'da kullanın;
- LCC ve LCC2 veri formatı uyumluluğunu uygulama katmanında gerçekleştirin.
Bu kılavuz esas olarak veri formatı uyumluluğunun uygulama katmanında gerçekleştirilmesine ilişkin akışı ve adımları açıklar. Bu yöntemde iki SDK sürümü aynı Unity projesine birlikte aktarılır; görüntüleme ve işleme için veri formatına göre uygun sürüm otomatik olarak seçilir.
Adım 1: Unity Sürümü ve Proje Ayarları
Unity sürümü ve proje ayarları, SDK'nın tek başına kullanıldığı durumla aynıdır; ek yapılandırma gerekmez. Bkz. PC Hızlı Başlangıç Kılavuzu ve Proje Ayarları Optimizasyon Kılavuzu.
Adım 2: İki SDK Sürümünü İçe Aktarma
Unity UPM ile SDK v1.4.8 ve üzeri (v1.4.32 önerilir) ile SDK v2.0.1 ve üzeri sürümlerini içe aktarın. İçe aktarma sonrasında v1.x sürümü Legacy olarak görüntülenir. İki SDK sürümü birbirini etkilemeden birlikte bulunabilir.
Not:
- SDK v1.4.32, GitHub'dan indirilebilir: https://github.com/xgrids/LCC-Unity-SDK/releases
- SDK v1.4.32'nin ad alanı
LCCCore_Legacy, yönetici bileşeniLCCManager_Legacy'dir; v2.x'in ad alanıLCCCore, yönetici bileşeniLCCManager'dır.
Adım 3: Sahneyi Yapılandırma
Sahnede LCCController adında boş bir nesne oluşturun ve bu nesneye hem LCCManager_Legacy hem de LCCManager bileşenlerini ekleyin.

LCCManager_Legacy ve LCCManager bileşenlerinin ikisini de LCCController nesnesine ekleyin
Not:
LCCController GameObject'inin Transform ayarları (Rotation.x = -90, Scale.x = -1) nesneyi LCC veri koordinat sistemiyle hizalar. Koordinat sistemi hizalaması hakkında ayrıntılar için Unity SDK'ya Giriş sayfasındaki "LCC Veri Koordinat Sistemi" bölümüne bakın.
Adım 4: MultiSDKController Betiğini Yazma
MultiSDKController.cs adında yeni bir C# betiği oluşturun ve aşağıdaki kodu ekleyin:
using LCCCore;
using LCCCore_Legacy;
using System.IO;
using UnityEngine;
public class MultiSDKController : MonoBehaviour
{
public LCCManager_Legacy m_managerLegacy; // for LCC SDK v1.4.8 and earlier
public LCCManager m_manager; // for LCC SDK v2.0.0 and later
public string m_FilePath; // LCC file path
private LCCCore_Legacy.Renderer m_rendererLegacy; // for LCC SDK v1.4.8 and earlier
private LCCCore.Renderer m_renderer; // for LCC SDK v2.0.0 and later
private DataType m_dataType; // data type, used to determine which SDK to use
void Start()
{
string extension = Path.GetExtension(m_FilePath);
if (extension == ".lcc")
{
m_manager.Enable = false; // disable the v2.0.0+ manager
m_dataType = DataType.LCC;
m_rendererLegacy = m_managerLegacy.GetRender(this.transform);
m_rendererLegacy.Load(m_FilePath, LCCCore_Legacy.PlatformType.PC, onLoadCallback);
}
else if (extension == ".lcc2")
{
m_managerLegacy.Enable = false; // disable the v1.4.8 and earlier manager
m_dataType = DataType.LCC2;
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(m_FilePath, LCCCore.PlatformType.PC, onLoadCallback);
}
}
private void onLoadCallback()
{
Debug.Log("data loaded !!!");
}
// Method call example: determine which SDK renderer to operate on by data type
public void onRenderPointClick()
{
if (m_dataType == DataType.LCC)
m_rendererLegacy.SwitchRenderMode(LCCCore_Legacy.RenderMode.PointCloud);
else if (m_dataType == DataType.LCC2)
m_renderer.SwitchRenderMode(LCCCore.RenderMode.PointCloud);
}
void OnDestroy()
{
if (m_dataType == DataType.LCC)
m_rendererLegacy?.Dispose();
else if (m_dataType == DataType.LCC2)
m_renderer?.Dispose();
}
public enum DataType { LCC, LCC2 }
}
Not:
- Betik dosyasının adı sınıf adıyla eşleşmelidir (
MultiSDKController.csdosyasıclass MultiSDKControllersınıfına karşılık gelir); aksi halde betik bir GameObject'e eklenemez.- İki sürümün ad alanları farklıdır (
LCCCoreveLCCCore_Legacy).Renderer,PlatformTypeveRenderModegibi aynı ada sahip türleri kullanırken bunları ayırt etmek için başlarına ad alanını eklemeniz gerekir.- Örnek, veri formatını dosya uzantısına (
.lcc/.lcc2) göre belirler ve uygun SDK sürümünü seçer.
Adım 5: Betiği Ekleme ve Özellikleri Ayarlama
MultiSDKController.csbetiğini sahnedeki LCCController nesnesine de ekleyin.- Inspector penceresinde LCCManager ve LCCManager_Legacy bileşenlerini betiğin ilgili özelliklerine sürükleyin.
- Betiğin File Path özelliğine LCC / LCC2 dosya yolunu girin.

MultiSDKController betiğini ekleyin ve Inspector'da özelliklerini ayarlayın
Kodu çalıştırdığınızda LCC veri formatına göre ilgili SDK sürümü görüntüleme için otomatik olarak kullanılır ve veri formatı uyumluluğu sağlanır.
Temel Adımlar
LCC ve LCC2 veri formatı uyumluluğunu uygulama katmanında gerçekleştirmenin temel adımları:
- Hem v1.x (Legacy) hem de v2.x SDK sürümlerini UPM ile içe aktarın; ikisi birlikte bulunabilir.
LCCManager_LegacyveLCCManageryönetici bileşenlerinin ikisini de aynı nesneye ekleyin.- Veri formatına (dosya uzantısı
.lcc/.lcc2) göre ilgili sürümün yöneticisini seçerek bir renderer oluşturun ve veriyi yükleyin. - Hangi sürümün kullanılacağı belirlendikten sonra diğer sürümün yöneticisini devre dışı bırakın (
Manager.Enable = false). - Veriyi değiştirirken veya yok ederken, görüntülenen mevcut veriyi
Renderer.Dispose()ile bellekten kaldırın.
Veri Formatı Uyumluluğu Notları
- LCC ve LCC2 aynı anda görüntülenemez. Bu nedenle veriyi değiştirirken önce görüntülenen mevcut veriyi bellekten kaldırmanız (
Renderer.Dispose()çağırmanız) gerekir; aksi halde bellek ve video belleği sızıntısı oluşabilir. - Kullanılmayan Manager'ı devre dışı bırakın. Hangi SDK sürümünü kullanacağınızı belirledikten sonra diğer SDK sürümünün Manager nesnesini devre dışı bırakmanız (
Manager.Enable = false) en iyisidir. Aksi halde gereksiz bir performans yükü oluşabilir. - API arayüzleri tutarlıdır, ancak doğru Renderer'ı çağırmanız gerekir. İki SDK sürümünün API arayüzleri birebir aynıdır (v2.x içinde birçok API Manager sınıfına taşınmıştır; API kılavuzuna bakın). Ancak doğru sürümün Renderer'ını (
m_rendererLegacyveyam_renderer) çağırdığınızdan emin olmalısınız. Ayrıca v2.0.0 ve sonraki sürümler renk ayarını ve kırpma verisi kaydetmeyi artık desteklemez. Bazı diğer API'ler de kullanımdan kaldırılmıştır; lütfen ilgili sürümün geliştirici belgelerini kontrol edin.
İlgili API'ler
Bu çözüm esas olarak iki SDK sürümünün manager ve renderer API'lerini kapsar. Aşağıda örnek olarak v2.x (LCCCore) kullanılmıştır; v1.x (LCCCore_Legacy) aynı arayüze sahiptir, yalnızca ad alanı farklıdır.
LCCManager.Enable
// Property
public bool Enable { get; set; }
Manager'ın etkinleştirme anahtarı. false olarak ayarlandığında ilgili SDK sürümünün manager'ı devre dışı kalır. Böylece diğer sürümle aynı anda çalışmaktan kaynaklanan gereksiz performans yükü önlenir.
Kullanım örneği:
// When using LCC2 data, disable the Legacy manager
m_managerLegacy.Enable = false;
Notlar:
- Kullanılacak sürümü belirledikten sonra diğer sürümün manager'ını devre dışı bırakmanız önerilir.
GetRender
// Return value: Renderer → render instance, null on failure
public Renderer GetRender(Transform _transform)
Bir görüntüleme örneği oluşturur ve belirtilen Transform'a bağlar.
| Parametre | Tür | Açıklama |
|---|---|---|
_transform | Transform | Görüntüleme örneğinin bağlandığı Transform |
Kullanım örneği:
m_renderer = m_manager.GetRender(this.transform);
Notlar:
- Görüntüleyicinin veri biçimiyle uyumlu olması için ilgili sürümün manager'ı üzerinden oluşturulmalıdır.
Renderer.Dispose
// Return value: void
public void Dispose()
Görüntüleme örneğini yok eder; tüm GPU kaynaklarını ve belleği serbest bırakır. Örnek yok edildikten sonra tekrar kullanılamaz.
Kullanım örneği:
m_renderer?.Dispose();
Notlar:
- Veriyi değiştirmeden önce mevcut veriyi mutlaka kaldırmalısınız. Aksi halde bellek ve video belleği sızıntısı oluşabilir.
- Çağrıldıktan sonra Manager'a referansı kaldırması için otomatik olarak bildirim gönderir.
- Nesne yok edilirken (
OnDestroy) çağrılması önerilir.
Bu bölüm XGRIDS'in resmî kullanım kılavuzundan Türkçeye çevrildi; ekran görüntüleri ve arayüz adları özgün haliyle İngilizcedir. İngilizce aslı (yeni sekmede açılır) · Güncelleme:

