Tek bir 3DGS sahnesinin veri yüklenmesinden ve görüntüleme kontrolünden sorumlu bir LCC görüntüleme örneğidir. LCCManager.GetRender() ile oluşturulur ve doğrudan örneklenemez.
| Ad Alanı | LCCCore |
Özellikler
| Özellik | Tür | Erişim | Açıklama |
|---|---|---|---|
Transform | Transform | Salt okunur | Görüntüleme örneğinin bağlı olduğu Transform bileşeni |
IsEnable | bool | Salt okunur | Görüntüleme örneğinin etkin olup olmadığı; varsayılan değer true |
IsRenderAll | bool | Salt okunur | LOD0 verisinin tamamının görüntülenip görüntülenmediği (akış / LOD gezinme moduna karşıt); varsayılan değer false |
Metotlar
Yöntemler amaçlarına göre gruplandırılmıştır:
Veri Yükleme ve Yaşam Döngüsü
Load
public void Load(string _filePath, Action<float> _onProgress, Action _onComplete, Action<string> _onError = null)
Bir 3DGS veri dosyasını yükler. .lcc2 (yerel dosya veya HTTP uzaktan) ile yerel formatlar olan .ply / .sog / .spz / .splat / .ksplat (yalnızca yerel dosyalar) desteklenir.
| Parametre | Tür | Açıklama |
|---|---|---|
_filePath | string | Veri dosyası yolu (yerel yol veya HTTP URL) |
_onProgress | Action<float> | Yükleme ilerleme geri çağrısı, null olabilir |
_onComplete | Action | Yükleme tamamlandı geri çağrısı, null olabilir |
_onError | Action<string> | Yükleme hatası geri çağrısı (isteğe bağlı); parametre olarak hata açıklamasını alır |
Notlar:
_onCompletegeri çağrısı, veri GPU'ya gerçekten yerleştikten sonra tetiklenir.- Gölge alımı ve efekt tetikleme gibi işlemler
_onCompletegeri çağrısı içinde çağrılmalıdır. - Yerel formatlar her zaman SingleRender tam yükleme yolunu kullanır (LOD parçalama yoktur); ilerleme
_onProgressile, hatalar_onErrorile bildirilir. MultiRendermodu HTTP veri kaynaklarına veya yerel formatlara izin vermez.- HTTP yalnızca
.lcc2dosyasını destekler; yerel formatlar yalnızca yerel yollarla ve yalnızca SingleRender modunda kullanılabilir. SetPlatformType()/SwitchRenderPass()/SetMainCamera()ve benzeri ön koşullar önce tamamlanmalıdır.Load()yöntemini yeniden çağırmadan önceUnload()veyaDispose()çağırmanız gerekir; yükleme sürerkenLoad()çağrılırsa istek reddedilir ve_onErrortetiklenir.
Örnek:
renderer.Load("D:/data/scene.lcc2",
p => Debug.Log($"Loading {p:P0}"),
() => {
Debug.Log("Load complete");
lccManager.SetShadowReceive(true);
});
Unload
public void Unload()
Şu anda yüklü olan veriyi serbest bırakır ve örneği "oluşturuldu ancak yüklenmedi" durumuna döndürür; örneğin yönetici kaydı korunur. Aynı Renderer örneği, Load → Unload → Load döngüsü tekrarlanarak yeniden kullanılabilir.
Notlar:
Dispose()yönteminden farkı: yönetici kaydı kaldırılmaz ve örnek yeniden kullanılabilir.Unload()sonrasındaIsEnabledeğerifalseolur;Load()yeniden çağrıldığında tüm veri durumu sıfırlanır.- Yalnızca veri yüklemesi tamamlandığında çalışır; veri yüklenmemişse veya örnek zaten
Dispose()edilmişse hemen geri döner.
Örnek:
renderer.Unload();
renderer.Load(newFilePath, null, () => Debug.Log("Reloaded"));
Dispose
public void Dispose()
Görüntüleme örneğini yok eder ve tüm GPU kaynaklarını ve belleği serbest bırakır. Örnek yok edildikten sonra kullanılamaz ve tüm genel yöntemler otomatik olarak etkisiz hale gelir.
Notlar:
- Çağrıdan sonra LCCManager'a başvuruyu kaldırması için otomatik olarak bildirim gönderilir.
Örnek:
renderer.Dispose();
renderer = null;
Çalışma Zamanı Kontrolü ve Sorgular
SetEnable
public void SetEnable(bool _enable)
Görüntüleme örneğinin etkinlik durumunu ayarlar. Devre dışı bırakıldığında görüntülemeye ve LOD seçimine katılmaz.
| Parametre | Tür | Açıklama |
|---|---|---|
_enable | bool | Etkinleştirilip etkinleştirilmeyeceği |
Notlar:
- Kaynakları serbest bırakmaz ve istendiği zaman yeniden etkinleştirilebilir.
Örnek:
renderer.SetEnable(false); // Hide
renderer.SetEnable(true); // Show
SetAlpha
public void SetAlpha(float alpha)
Geçerli Renderer'ın bağımsız opaklığını ayarlar. LCCManager.SetAlpha() yönteminin işlem düzeyindeki genel alfa değerinden farklı olarak, bu API yalnızca geçerli Renderer'ı etkiler. Nihai alfa = splat kapsama oranı × LCCManager genel alfa değeri × bu Renderer'ın alfa değeri.
| Parametre | Tür | Açıklama |
|---|---|---|
alpha | float | Geçerli Renderer'ın bağımsız opaklığı, aralık [0, 1]; aşıldığında otomatik olarak sınırlandırılır |
Notlar:
- Yalnızca MultiRender / RenderCore yolunda (PC / Mac) etkilidir; bu yolda her splat bir renderID taşır ve gölgelendirici, Renderer başına alfa dizisini renderID ile indeksler.
- FullRender / Mobile yolunda renderID bulunmadığından bu API orada işlem yapmaz (değer önbelleğe alınır ve daha sonra RenderCore yoluna geçildiğinde otomatik olarak uygulanır).
Örnek:
renderer.SetAlpha(0.5f);
SetRenderAll
public void SetRenderAll(bool _renderAll)
Tam görüntüleme modunun kullanılıp kullanılmayacağını ayarlar (LOD0 verisi tamamen görüntülenir). Bir sonraki Load() çağrısında etkili olur ve şu anda yüklü olan veri kümesini etkilemez.
| Parametre | Tür | Açıklama |
|---|---|---|
_renderAll | bool | Tam görüntüleme yapılıp yapılmayacağı |
Notlar:
- Yalnızca PC / Mac platformlarında desteklenir; mobil / VR üzerinde etkisi yoktur.
- Geçerli durumu
IsRenderAllözelliği ile sorgulayın.
Örnek:
renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Full loaded"));
SetColliderEnable
// Return value: bool, true=set successfully, false=the data has no collider or the instance is inactive
public bool SetColliderEnable(bool _enable)
Çarpışma özelliğini açar veya kapatır. Etkinleştirildiğinde IntersectsSphere() / IntersectsCapsule() ve RaycastMesh() kullanılabilir hale gelir.
| Parametre | Tür | Açıklama |
|---|---|---|
_enable | bool | Collider'ın etkinleştirilip etkinleştirilmeyeceği |
Notlar:
- Veri bir Collider düğümü içermelidir, aksi halde
falsedöndürülür. - Renderer etkin olmalıdır.
Örnek:
bool ok = renderer.SetColliderEnable(true);
if (!ok) Debug.LogWarning("Data does not contain a collider");
SetEnvironment
public void SetEnvironment(bool _env)
Ortam verisi görüntülemeyi açar veya kapatır. Ortam verisi, uzak görünümleri doldurmak için kullanılan düşük hassasiyetli bir arka plan nokta bulutudur.
| Parametre | Tür | Açıklama |
|---|---|---|
_env | bool | Ortam verisinin görüntülenip görüntülenmeyeceği |
Notlar:
- Veri, ortam düğümlerini içermelidir.
- Ortam verisi, ana verinin LOD sisteminden bağımsızdır.
Örnek:
renderer.SetEnvironment(true);
GetBounds
public void GetBounds(out Vector3 max, out Vector3 min)
Görüntülenen verinin eksene hizalı sınır kutusunu (dünya koordinatları) alır.
| Parametre | Tür | Açıklama |
|---|---|---|
max | out Vector3 | Sınır kutusunun maksimum noktası (dünya koordinatları) |
min | out Vector3 | Sınır kutusunun minimum noktası (dünya koordinatları) |
Notlar:
- Veri tamamen yüklenmediğinde
Vector3.zerodöndürür. - Kamera konumlandırma ve görüş açısı hesaplamaları için kullanılabilir.
Örnek:
renderer.GetBounds(out Vector3 max, out Vector3 min);
Vector3 center = (max + min) / 2f;
Vector3 size = max - min;
GetSourceType
// Return value: SourceType
public SourceType GetSourceType()
Yüklenen verinin kaynak türünü alır; bkz. SourceType.
Notlar:
- Veri yüklenmediğinde
SourceType.Nonedöndürür.
GetDataType
// Return value: DataType
public DataType GetDataType()
Yüklenen verinin biçim türünü alır; bkz. DataType.
Notlar:
- Veri yüklenmediğinde
DataType.Nonedöndürür.
GetMeta (Dosya Yolundan)
// Return value: bool, true=read successfully
public bool GetMeta(string _filePath, out SplatMeta _metaData)
Belirtilen dosya yolundaki 3DGS verisinin meta verilerini, veriyi tamamen yüklemeden okur.
| Parametre | Tür | Açıklama |
|---|---|---|
_filePath | string | Veri dosyası yolu |
_metaData | out SplatMeta | Çıktı olarak metaveri |
Notlar:
- Yerel yolları ve HTTP URL'lerini destekler.
- Yalnızca dosya başlığındaki meta verileri okur; nokta bulutu verisini yüklemez.
- Yol boşsa veya dosya mevcut değilse
falsedöndürür.
Örnek:
if (renderer.GetMeta(filePath, out SplatMeta meta))
{
Debug.Log(meta.source);
Debug.Log(meta.dataType);
}
GetMeta (Yüklenen Veriden)
// Return value: bool, true=read successfully
public bool GetMeta(out SplatMeta _metaData)
Şu anda yüklü olan verinin meta verilerini alır. Veri yüklemesi tamamlanmadıysa dosya yolundan okumayı dener.
| Parametre | Tür | Açıklama |
|---|---|---|
_metaData | out SplatMeta | Çıktı olarak metaveri |
Örnek:
if (renderer.GetMeta(out SplatMeta meta))
{
Debug.Log(meta.source);
}
GetMeshBlockInfos
// Return value: List<LCCMeshBlockInfo>, collision Mesh block metadata; null when there is no Mesh or it is unavailable
public List<LCCMeshBlockInfo> GetMeshBlockInfos()
Tüm çarpışma Mesh bloklarının meta verilerini döndürür (id, dünya / yerel sınır kutusu, köşe sayısı, yüzey sayısı). Sıfır G/Ç, sıfır ayrıştırma; yalnızca bellekte hazır bulunan meta verileri okur. Bkz. LCCMeshBlockInfo.
Notlar:
- Yalnızca PC / Mac platformu ve yerel veri kaynağı için geçerlidir; ana iş parçacığında çağrılmalıdır.
- Tipik kullanım: önce her bloğun dünya sınır kutusunu almak için kullanın, gerekli id'leri seçin, ardından yalnızca bu blokları okumak için
GetMeshes(ids)çağırın. - Yerel biçimlerde (PLY / SOG / SPZ / splat / ksplat) Mesh bulunmaz ve
nulldöndürülür (normal durumdur, günlük kaydı oluşturulmaz).
Örnek:
var infos = renderer.GetMeshBlockInfos();
foreach (var info in infos)
{
Debug.Log($"{info.id}: verts={info.vertexCount}, faces={info.faceCount}");
}
GetMeshes
// Return value: List<LCCMeshBlock>, all collision Mesh geometry data; null when unavailable
public List<LCCMeshBlock> GetMeshes()
Tüm çarpışma Mesh bloklarının geometri verilerini (köşeler + üçgen indeksleri, yerel koordinatlarda) eşzamanlı olarak döndürür. Bu ağır bir işlemdir (eşzamanlı disk okuma + ayrıştırma + bellek ayırma); bu nedenle bir kez çağırıp sonucu kendiniz önbelleğe alın, asla her karede çağırmayın. Bkz. LCCMeshBlock.
Notlar:
- Yalnızca PC / Mac platformu ve yerel veri kaynağı için geçerlidir; ana iş parçacığında çağrılmalıdır.
- Büyük sahnelerde, yönetilen belleğin bir anda büyük miktarda ayrılmasını önlemek için id'leri seçmek üzere
GetMeshBlockInfos()ve ardındanGetMeshes(ids)kullanın. - Tek bir blok 65535'ten fazla köşe içerebilir; bu nedenle Mesh oluşturulmadan önce
mesh.indexFormat = IndexFormat.UInt32ayarlanmalıdır.
Örnek:
var meshes = renderer.GetMeshes();
foreach (var block in meshes)
{
// block.vertices / block.triangles are in the object's local coordinate system
}
GetMeshes (id'ye Göre)
// Return value: List<LCCMeshBlock>, collision Mesh geometry data of the specified ids; null when there is no hit
public List<LCCMeshBlock> GetMeshes(IEnumerable<string> _ids)
Belirtilen id'lere ait çarpışma Mesh bloğu geometri verilerini (yerel koordinatlarda) eşzamanlı olarak döndürür. id'ler GetMeshBlockInfos() tarafından sağlanır.
| Parametre | Tür | Açıklama |
|---|---|---|
_ids | IEnumerable<string> | Hedef blok id'lerinin kümesi (GetMeshBlockInfos() tarafından sağlanır) |
Notlar:
- Bilinmeyen id'ler uyarı verilerek atlanır; yinelenen id'ler tekilleştirilir (tekrarlı disk okuması yapılmaz); dönüş sırası, id'lerin (tekilleştirmeden sonraki) tarama sırasıdır.
- Girdi
nullveya boşsa ya da eşleşme yoksa uyarı verir venulldöndürür. - Diğer kısıtlar
GetMeshes()ile aynıdır.
Örnek:
var ids = new List<string> { "block-0", "block-3" };
var meshes = renderer.GetMeshes(ids);
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:

