İçeriğe geç
TREN
Atlıhan Harita

LCC for Unity Kullanım Kılavuzu · API Başvurusu

LCCManager: Çekirdek Yönetici

Bölüm 16.1 / 17Kılavuz sürümü v2.3.0Türkçe

LCC Unity SDK'nın çekirdek yöneticisidir. Tüm Renderer örneklerini, kameraları, genel görüntüleme durumunu, ayrıca düzenleme işlemlerini (kırpma / vurgulama / ton), decal projeksiyonunu, yakalamayı (snapping) ve etkileşim sorgularını (raycast / çarpışma) yönetir. Tüm sahnede yalnızca bir LCCManager örneği bulunmalıdır.

Ad AlanıLCCCore
Temel SınıfMonoBehaviour

LCCManager'ın herkese açık özelliği yoktur; tüm işlevlere yöntemler aracılığıyla erişilir. Yöntemler amaçlarına göre gruplandırılmıştır:

Başlatma ve Yapılandırma

Aşağıdaki yöntemler, veri yüklenmeden önce platform, görüntüleme modu, kapasite gibi ön yapılandırmaları tamamlamak için kullanılır. Yöntemlerin çoğu herhangi bir Renderer.Load() çağrısından önce çağrılmalıdır.

SetPlatformType

public void SetPlatformType(PlatformType _type)

SDK'nın hedef çalışma platformunu ayarlar. Bu ayar, dahili görüntüleme stratejisini ve kaynak ayırmayı etkiler.

ParametreTürAçıklama
_typePlatformTypeHedef platform; bkz. PlatformType

Notlar:

  • Herhangi bir GetRender() çağrısından önce çalıştırılmalıdır.

Örnek:

lccManager.SetPlatformType(PlatformType.PC);

SwitchRenderPass

public void SwitchRenderPass(ActiveRenderMode _mode)

Genel görüntüleme mimarisi modunu ayarlar. MultiRender paylaşılan bir GPU tamponu kullanır ve aynı anda en fazla 255 Renderer görüntüleyebilir; SingleRender ise SDK'nın veri boyutuna göre görüntüleme yolunu otomatik seçmesini sağlar.

ParametreTürAçıklama
_modeActiveRenderModeGörüntüleme modu; bkz. ActiveRenderMode

Notlar:

  • Herhangi bir Renderer.Load() çağrısından önce çağrılmalıdır.
  • Yalnızca PC / Mac platformlarında etkilidir; mobil / VR platformları uyarlanabilir strateji kullanır ve bu yöntemin çağrılması reddedilir.
  • MultiRender modu HTTP veri kaynaklarını desteklemez; HTTP verileri için SingleRender kullanın.
  • Herhangi bir Renderer Load() işlemini tamamladığında mod kilitlenir ve bir daha değiştirilemez.

Örnek:

lccManager.SwitchRenderPass(ActiveRenderMode.MultiRender);

GetRender (Aşırı Yükleme 1: Transform'a Bağlama)

// Return value: Renderer, null on failure
public Renderer GetRender(Transform _transform)

Yeni bir görüntüleme örneği oluşturur ve belirtilen Transform'a bağlar. Oluşturduktan sonra veriyi yüklemek için Renderer.Load() çağrılmalıdır.

ParametreTürAçıklama
_transformTransformGörüntüleme örneğinin bağlanacağı Transform

Notlar:

  • Önce SetPlatformType() ve SetMainCamera() çağrılmalıdır.
  • MultiRender modunda en fazla 255 Renderer desteklenir.

Örnek:

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

GetRender (Aşırı Yükleme 2: GameObject'i Otomatik Oluşturma)

// Return value: Renderer, null on failure
public Renderer GetRender(out GameObject gameObject)

LCCRenderer adında bir GameObject'i otomatik olarak oluşturur ve görüntüleme örneğini bu nesnenin Transform'una bağlar.

ParametreTürAçıklama
gameObjectout GameObjectOtomatik oluşturulan GameObject'i çıktı olarak verir; başarısız olursa null döner

Örnek:

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

SetMaxBufferSplat

public void SetMaxBufferSplat(int _count)

GPU tamponunun azami kapasitesini (Splat sayısı) ayarlar. Bir kez ayrılır ve dinamik olarak değiştirilemez.

ParametreTürAçıklama
_countintAzami Splat sayısı, birim: on bin (değer × 10000 = gerçek sayı)

Notlar:

  • Herhangi bir Renderer.Load() çağrısından önce çağrılmalıdır; ayrıca önce SetPlatformType() çağrılmalıdır.
  • Daha büyük kapasite, daha yüksek video belleği kullanımı anlamına gelir; ihtiyaca göre ayarlayın.
  • Platform sınırları: PC / Mac / PCVR 45 milyon, Android / iOS 6 milyon, VR (Pico / Quest / PicoSwan / AVP / OpenXR) 2 milyon.
  • Varsayılanlar: PC / Mac 30 milyon, Android / iOS 3 milyon, VR 1 milyon.

Örnek:

lccManager.SetMaxBufferSplat(3000); // 30 million points

SetFullRenderSplat

public void SetFullRenderSplat(int _count)

PC / Mac tam görüntüleme için üst eşiği ayarlar. Veri boyutu bu değerin altındaysa tam görüntüleme yolu, aksi halde parçalı görüntüleme yolu kullanılır.

ParametreTürAçıklama
_countintTam görüntüleme üst sınırı, birim: on bin, aralık [100, 4500]

Notlar:

  • Yalnızca PC / Mac / PCVR platformlarında desteklenir.
  • Herhangi bir Renderer.Load() çağrısından önce çağrılmalıdır; ayrıca önce SetPlatformType() çağrılmalıdır.

Örnek:

lccManager.SetFullRenderSplat(2500); // 25 million points

SetMaxRenderSplats

public void SetMaxRenderSplats(int _count)

Çalışma zamanında her karede görüntülenecek azami Splat sayısını ayarlar. Load() sonrasında dinamik olarak çağrılabilir.

ParametreTürAçıklama
_countintÇalışma zamanında görüntülenecek azami Splat sayısı, birim: on bin

Notlar:

  • Çalışma zamanında dinamik olarak ayarlanabilir.
  • SetMaxBufferSplat() ile ayarlanan kapasiteyi aşamaz; aşıldığında değer otomatik olarak sınırlandırılır.
  • Tam görüntüleme modunda etkisi yoktur.

Örnek:

lccManager.SetMaxRenderSplats(2500); // 25 million points

GetLoadRatio

// Return value: float, [0,1] current data loading progress
public float GetLoadRatio()

Geçerli sahne verisinin yükleme ilerlemesini sorgular.

Notlar:

  • Tam görüntüleme modunda her zaman 1.0 döndürür.
  • Parçalı görüntüleme modunda, geçerli görünümdeki yüklenmiş düğümlerin oranını döndürür; değer kamera hareketiyle gerçek zamanlı değişir ve sürekli artan genel bir ilerleme değeri değildir.

Örnek:

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

SetSelectionMode

public void SetSelectionMode(SelectionMode mode)

Düğüm seçim stratejisini ayarlar.

ParametreTürAçıklama
modeSelectionModeSeçim stratejisi; bkz. SelectionMode

Notlar:

  • Auto (varsayılan): sahnenin genel sınır kutusuna göre otomatik belirlenir; sahnenin azami boyutu yaklaşık 380 metreyi aştığında otomatik olarak Large moduna geçer.
  • Normal: küçük ve orta ölçekli sahneler için uygundur.
  • Large: çok büyük sahneler (1000 metreden fazla) için uygundur.
  • Değiştirildiğinde hemen etkili olur.

Örnek:

lccManager.SetSelectionMode(SelectionMode.Auto);

Çalışma Zamanı Görüntüleme Kontrolü

Aşağıdaki yöntemler, görüntüleme hassasiyetini, görüntü efektlerini ve görüntüleme anahtarlarını ayarlamak için çalışma zamanında dinamik olarak çağrılabilir.

SetDetailLevel

public void SetDetailLevel(float sse)

Görüntüleme hassasiyet seviyesini ayarlar. Daha büyük değer, daha ayrıntılı görüntüleme ve daha yüksek performans tüketimi anlamına gelir.

ParametreTürAçıklama
ssefloatHassasiyet seviyesi, aralık [1, 100]; aşıldığında otomatik olarak sınırlandırılır

Notlar:

  • Logaritmik eşleme kullanır: düşük değer aralığında değişiklikler belirgindir, yüksek değer aralığında ise yumuşaktır.
  • Çalışma zamanında dinamik olarak ayarlanabilir.
  • Yalnızca Normal seçim modunda etkilidir.

Örnek:

lccManager.SetDetailLevel(50f); // Medium precision

SetStartLod

public void SetStartLod(int lod)

LOD genişletme başlangıç noktasını ayarlar (0 tabanlı). 0 en ayrıntılı seviyedir; sayı büyüdükçe seviye daha kaba olur.

ParametreTürAçıklama
lodintLOD başlangıç seviyesi, aralık [0, 10]; aşıldığında otomatik olarak sınırlandırılır

Notlar:

  • Fiilen geçerli olan üst sınır, verinin toplam seviye sayısıyla sınırlıdır.

Örnek:

lccManager.SetStartLod(0);

SetAutoFov

public void SetAutoFov(bool _auto)

Görüntüleme FOV değerinin otomatik yönetilip yönetilmeyeceğini ayarlar. Etkin olduğunda (varsayılan) SDK, ilk karede bir piksel odak uzaklığı referansını kilitler, ardından her karede geçerli görünüm penceresi yüksekliğinden dikey FOV değerini hesaplar ve Camera.fieldOfView özelliğine yazar; devre dışı olduğunda fieldOfView dışarıdan kontrol edilir (SetFOV() ile veya kamera doğrudan değiştirilerek).

ParametreTürAçıklama
_autoboolOtomatik FOV kullanılıp kullanılmayacağı

Notlar:

  • Varsayılan olarak etkindir.
  • Etkin olduğunda ana kameranın Camera.fieldOfView değerini sürekli yeniden yazar; bu nedenle SetFOV() çağrısı yok sayılır.
  • Devre dışı olduğunda parametreleri ayarlamak için SetFOV() elle çağrılmalıdır.

Örnek:

lccManager.SetAutoFov(true);

SetFOV

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

Dikey FOV değerini elle ayarlar (derece cinsinden). Ana kameranın Camera.fieldOfView değerini doğrudan yeniden yazar; böylece Inspector'daki FOV, görüntülemede fiilen kullanılan FOV ile aynı olur. _width / _height / _aspect eski imza parametreleridir; gerçek projeksiyon ana kameranın kendi görünüm penceresini kullanır (farklı boyut / FOV ile ekran dışı çıktı için SetRecordMode() kullanın).

ParametreTürAçıklama
_widthintPiksel genişliği
_heightintPiksel yüksekliği
_verticalFovfloatDikey FOV (derece)
_aspectfloatEn-boy oranı

Notlar:

  • Önce SetAutoFov(false) çağrılmalıdır; aksi halde her karedeki otomatik FOV hesaplaması elle girilen değerin üzerine yazar.
  • Dikey FOV, [1, 179] derece aralığına sınırlandırılır.
  • VR / PCVR platformlarında, kayıt sırasında veya ortografik kamerada çağrılması reddedilir (uyarı verir ve geri döner).

Örnek:

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

SetRenderEnable

public void SetRenderEnable(Renderer _renderer, bool _isEnable)

Belirtilen Renderer'ın görüntüleme anahtarını çalışma zamanında denetler. Devre dışı bırakıldığında geçiş ve çizim işlemlerine katılmaz.

ParametreTürAçıklama
_rendererRendererHedef görüntüleme örneği
_isEnableboolGörüntülemenin etkinleştirilip etkinleştirilmeyeceği

Örnek:

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

SetEnvironment

public void SetEnvironment(Renderer _renderer, bool _isRender)

Belirtilen Renderer'ın ortam verisi görüntülemesini denetler. Ortam verisi, uzak görünümleri doldurmak için kullanılan düşük hassasiyetli bir arka plan nokta bulutudur.

ParametreTürAçıklama
_rendererRendererHedef görüntüleme örneği
_isRenderboolOrtam verisinin görüntülenip görüntülenmeyeceği

Notlar:

  • Veri, ortam düğümlerini içermelidir.

Örnek:

lccManager.SetEnvironment(renderer, true);

SetZDepth

public void SetZDepth(bool zwrite)

Z derinliği yazmayı açar veya kapatır ve görüntüleme kuyruğunu buna göre ayarlar.

ParametreTürAçıklama
zwriteboolZ derinliği yazmanın etkinleştirilip etkinleştirilmeyeceği

Örnek:

lccManager.SetZDepth(true);

SetAlpha

public void SetAlpha(float alpha)

Global opaklığı ayarlar.

ParametreTürAçıklama
alphafloatGlobal opaklık, aralık [0, 1]; aşıldığında otomatik olarak sınırlandırılır

Örnek:

lccManager.SetAlpha(0.8f);

SetLightIntensity

public void SetLightIntensity(float intensity)

Global ışık yoğunluğunu ayarlar.

ParametreTürAçıklama
intensityfloatIşık yoğunluğu, aralık [0, 1]; aşıldığında otomatik olarak sınırlandırılır

Örnek:

lccManager.SetLightIntensity(0.7f);

SetLowPassFilter

public void SetLowPassFilter(float _filter)

Yüksek frekanslı örtüşme / gürültüyü bastırmak için kullanılan global alçak geçiren filtre gücünü ayarlar.

ParametreTürAçıklama
_filterfloatAlçak geçiren filtre gücü, aralık [0, 1]; aşıldığında otomatik olarak sınırlandırılır

Örnek:

lccManager.SetLowPassFilter(0.3f);

SetLockFPS

public void SetLockFPS(bool _isLock)

Kare hızı kilidini açar veya kapatır (statik / dinamik kare hızı geçişi).

ParametreTürAçıklama
_isLockboolKare hızının kilitlenip kilitlenmeyeceği

Örnek:

lccManager.SetLockFPS(true);

SetRenderLayer

public void SetRenderLayer(int _layer)

LCC görüntülemesinde kullanılan Unity Layer değerini ayarlar; kamera CullingMask görünürlük denetimi için kullanılır.

ParametreTürAçıklama
_layerintUnity görüntüleme katmanı, aralık [0, 31]

Notlar:

  • Çalışma zamanında dinamik olarak ayarlanabilir.

Örnek:

lccManager.SetRenderLayer(8); // Use Layer 8

SetForceRefresh

public void SetForceRefresh()

Görüntülemeyi yenilemeye zorlar. Dahili kamera bilgisi önbelleğini temizler; böylece görüş hacmi, LOD ve diğer parametreler bir sonraki karede yeniden hesaplanır. Dışarıdan değiştirilen kamera parametrelerinin hemen etkili olması gereken durumlar için uygundur.

Örnek:

lccManager.SetForceRefresh();

SetMipMode

public void SetMipMode(MipMode _mipMode)

Mip görüntüleme modunu değiştirir. Mip modu mipmap örneklemesini kullanır (varsayılan), Non_Mip modu ise mipmap'i devre dışı bırakır.

ParametreTürAçıklama
_mipModeMipModeHedef mod; bkz. MipMode

Notlar:

  • Geçerli mod, aktarılan modla aynıysa hemen geri döner.
  • Değiştirildiğinde hemen etkili olur.

Örnek:

lccManager.SetMipMode(MipMode.Non_Mip);

SetGraphicsAPI

public void SetGraphicsAPI(GraphicsDeviceType type)

Grafik API türünü ayarlar. DX11 modunda HDR etkinleştirilir.

ParametreTürAçıklama
typeGraphicsDeviceTypeGrafik API türü (Unity yerleşik enum)

Örnek:

lccManager.SetGraphicsAPI(GraphicsDeviceType.Direct3D11);

SetDebugMode

public void SetDebugMode(bool debug)

Hata ayıklama modunu açar veya kapatır.

ParametreTürAçıklama
debugboolHata ayıklama modunun etkinleştirilip etkinleştirilmeyeceği

Notlar:

  • Yalnızca PC / Mac platformlarında desteklenir.

Örnek:

lccManager.SetDebugMode(true);

SetEditorMode

public void SetEditorMode(bool _isEditor)

Editor modunu açar veya kapatır.

ParametreTürAçıklama
_isEditorboolEditor modunun etkinleştirilip etkinleştirilmeyeceği

Notlar:

  • Yalnızca PC / Mac platformlarında desteklenir.

Örnek:

lccManager.SetEditorMode(true);

SetAECMode

public void SetAECMode(bool _aec)

AEC (Mimarlık / Mühendislik / İnşaat) modunu açar veya kapatır.

ParametreTürAçıklama
_aecboolAEC modunun etkinleştirilip etkinleştirilmeyeceği

Notlar:

  • Yalnızca PC / Mac platformlarında desteklenir.

Örnek:

lccManager.SetAECMode(true);

SetSemantic

// Return value: bool, false=invalid parameter
public bool SetSemantic(bool enable, Vector4[] color = null)

Semantik görüntüleme modunu açar veya kapatır. Etkinleştirildiğinde, her semantik kategorinin görüntüleme rengini tanımlamak için bir renk dizisi iletilebilir.

ParametreTürAçıklama
enableboolSemantik görüntülemenin etkinleştirilip etkinleştirilmeyeceği
colorVector4[]Semantik renk dizisi; uzunluğu 100 olmalıdır, aksi halde false döndürülür. Varsayılan renkleri kullanmak için null iletin

Örnek:

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

SwitchRenderMode

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

Nokta bulutu görüntüleme ile 3DGS görüntüleme arasında geçiş yapar. Nokta bulutu modunda bir yükseklik renk gradyanı dokusu verilebilir.

ParametreTürAçıklama
modeRenderModeGörüntüleme modu; bkz. RenderMode
texTexture2DYükseklik renk gradyanı dokusu (isteğe bağlı)

Notlar:

  • Yalnızca PC / Mac platformlarında desteklenir.

Örnek:

lccManager.SwitchRenderMode(RenderMode.PointCloud, elevationTex);

SetRecordMode

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

Kayıt modunu ayarlar. Kayıt modunda görüntüleme için sabit çözünürlük ve FOV kullanılır; HD video kaydı için uygundur.

ParametreTürAçıklama
isRecordboolKayıt modunun kullanılıp kullanılmayacağı
renderSizeVector2Kayıt çözünürlüğü
verticalFovfloatDikey FOV (derece)

Notlar:

  • Yalnızca PC / Mac platformlarında desteklenir.
  • Kayıt modunda kamera odak uzaklığı sabittir ve Camera bileşenine göre değişmez.
  • Kayıttan sonra önceki duruma dönmek için SetRecordMode(false, ...) çağırın.

Örnek:

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

SetVRPerformance

public void SetVRPerformance(bool _enabled)

VR yüksek performanslı sıralama modunu ayarlar. true GPU radix sıralamasını (GpuSorter) kullanır, false ise CPU / BitonicSorter yöntemine geri döner.

ParametreTürAçıklama
_enabledboolGPU yüksek performanslı sıralamanın etkinleştirilip etkinleştirilmeyeceği

Notlar:

  • Yalnızca VR başlıklarının (Pico / Quest / PicoSwan / OpenXR) sıralama yolunu etkiler; varsayılan olarak etkindir.
  • Hesaplama aygıtı bulunmadığında (Mali gibi), üst akıştaki sıralama otomatik olarak CPU'ya geçer; bu anahtardan etkilenmez.

Örnek:

lccManager.SetVRPerformance(true);

Aydınlatma ve Gölgeler

Aşağıdaki yöntemler, 3DGS yüzeylerinde gölge alımını ve özel nokta ışıklarını kontrol eder. Gölgeyle ilgili yöntemler LCC sahnesinin yüklenmesi tamamlandıktan sonra çağrılmalıdır.

SetShadowReceive

public void SetShadowReceive(bool enable)

Nokta bulutu gölge alımını açar veya kapatır. Etkinleştirildiğinde, sahnedeki Mesh nesnelerinin gölgeleri 3DGS nokta bulutu yüzeylerine düşebilir.

ParametreTürAçıklama
enableboolGölge alınıp alınmayacağı

Notlar:

  • Varsayılan olarak kapalıdır.
  • Sahnede gölge oluşturan Mesh nesneleri ve bir Directional Light bulunmalıdır.

Örnek:

lccManager.SetShadowReceive(true);

SetShadowColor

public void SetShadowColor(Color color)

Gölge alanının rengini ayarlar.

ParametreTürAçıklama
colorColorGölge rengi (RGBA)

Notlar:

  • Varsayılan değer (0.3, 0.3, 0.3, 1).
  • Önce SetShadowReceive(true) etkinleştirilmelidir.

Örnek:

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

SetShadowStrength

public void SetShadowStrength(float strength)

Gölge şiddetini ayarlar. 0 gölge yok, 1 en güçlü gölge anlamına gelir.

ParametreTürAçıklama
strengthfloatGölge gücü, aralık [0, 1], aşıldığında otomatik olarak sınırlandırılır

Notlar:

  • Varsayılan değer 1.0.
  • Önce SetShadowReceive(true) etkinleştirilmelidir.

Örnek:

lccManager.SetShadowStrength(0.8f);

SetLights

// Return value: int, 0=success, -1=exceeded the maximum count limit
public int SetLights(List<PointLightData> lights)

Özel nokta ışık listesini ayarlar. null veya boş liste iletilirse özel aydınlatma kapatılır.

ParametreTürAçıklama
lightsList<PointLightData>Nokta ışık listesi; bkz. PointLightData

Notlar:

  • PointLightData.lightType: 0 nokta ışıktır (direction / spotAngle yok sayılır), 1 spot ışıktır (direction / spotAngle gereklidir).
  • null veya boş liste iletilirse özel aydınlatma kapatılır.

Örnek:

using Unity.Mathematics; // float3

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

Kamera Yönetimi

SetMainCamera

public void SetMainCamera(Camera _cam)

Ana görüntüleme kamerasını ayarlar. LCC bu kamerayı görüş alanı kırpma (frustum culling), LOD seçimi, sıralama ve diğer işlemler için kullanır.

ParametreTürAçıklama
_camCameraAna görüntüleme kamerası; temizlemek için null iletin

Notlar:

  • Renderer.Load() çağrısından önce ayarlanmalıdır.
  • Yalnızca PC / Mac platformlarında desteklenir.

Örnek:

lccManager.SetMainCamera(Camera.main);

AddCamera

public void AddCamera(Camera _cam)

İkincil kamera ekler. İkincil kamera görüntülemeye katılır ancak LOD seçimini etkilemez.

ParametreTürAçıklama
_camCameraİkincil kamera

Notlar:

  • Yalnızca PC / Mac platformlarında desteklenir.
  • Ana kamera ikincil kamera olarak eklenemez.

Örnek:

lccManager.AddCamera(secondCamera);

RemoveCamera

public void RemoveCamera(Camera _cam)

Eklenmiş bir ikincil kamerayı kaldırır.

ParametreTürAçıklama
_camCameraKaldırılacak ikincil kamera

Notlar:

  • Yalnızca PC / Mac platformlarında desteklenir.

Örnek:

lccManager.RemoveCamera(secondCamera);

Kırpma / Vurgulama / Ton

Kırpma, vurgulama ve ton üç farklı düzenleme işlemidir. Hepsinde etkilenen bölge 2B doku, 3B geometri veya ikisinin karışımıyla tanımlanabilir. Bkz. Data2D, Data3D, DataMix ve ToneMix.

SetClip (Düzlemle Kırpma)

// Return value: int, 0=success
public int SetClip(Vector3 planePoint, Vector3 planeNormal, bool inside = true)

Nokta bulutunu sonsuz bir düzlemle kırpar; normal tarafındaki veya karşı taraftaki noktaları tutar.

ParametreTürAçıklama
planePointVector3Düzlem üzerindeki bir nokta
planeNormalVector3Düzlem normali
insidebooltrue değeri normal tarafını tutar

Notlar:

  • Diğer kırpma modlarıyla birlikte kullanılamaz.

Örnek:

lccManager.SetClip(Vector3.zero, Vector3.up, true); // Keep above the ground

SetClip (2B Doku ile Kırpma)

// Return value: int, 0=success, 1=empty list, 2=exceeded the maximum count
public int SetClip(List<Data2D> _2Ds)

Nokta bulutunu 2B izdüşüm doku maskesiyle kırpar.

ParametreTürAçıklama
_2DsList<Data2D>2B doku seçim listesi

Örnek:

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

SetClip (3B Geometri ile Kırpma)

// Return value: int, 0=success, 1=empty list, 2=exceeded the maximum count, 3=zero valid geometry
public int SetClip(List<Data3D> _3Ds)

Nokta bulutunu 3B geometriyle kırpar; birden fazla geometriyi birleştirmek için boolean işlemlerini destekler.

ParametreTürAçıklama
_3DsList<Data3D>3B geometri listesi

Notlar:

  • operation == normal olan en az bir geometri gereklidir.

Örnek:

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

SetClip (Karma Mod ile Kırpma)

// Return value: int, 0=success, 1=empty list, 2=exceeded the maximum count
public int SetClip(List<DataMix> mix)

Kırpma bölgesini 2B doku ve 3B geometri karışımıyla tanımlar. Her girişin türü editType ile belirtilir.

ParametreTürAçıklama
mixList<DataMix>Karma seçim listesi (2B + 3B)

Örnek:

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()

Kırpma modundan çıkar ve nokta bulutunun tamamını yeniden gösterir.

Örnek:

lccManager.QuitClipMode();

SetHighlight (2B Doku ile Vurgulama)

// Return value: int, 0=success, 1=empty list, 2=exceeded the maximum count
public int SetHighlight(List<Data2D> _2Ds)

Nokta bulutunu 2B izdüşüm doku maskesiyle vurgular; vurgulanan bölgenin dışındaki nokta bulutu karartılır.

ParametreTürAçıklama
_2DsList<Data2D>2B doku seçim listesi

Notlar:

  • 3B vurgulama ve karma vurgulama ile birlikte kullanılamaz.

Örnek:

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

SetHighlight (3B Geometri ile Vurgulama)

// Return value: int, 0=success, 1=empty list, 2=exceeded the maximum count, 3=zero valid geometry
public int SetHighlight(List<Data3D> _3Ds)

Vurgulanan bölgeyi 3B geometriyle tanımlar; birleştirmek için boolean işlemlerini destekler.

ParametreTürAçıklama
_3DsList<Data3D>3B geometri listesi

Notlar:

  • operation == normal olan en az bir geometri gereklidir.

Örnek:

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

SetHighlight (Karma Mod ile Vurgulama)

// Return value: int, 0=success, 1=empty list, 2=exceeded the maximum count
public int SetHighlight(List<DataMix> mix)

Vurgulanan bölgeyi 2B doku ve 3B geometri karışımıyla tanımlar.

ParametreTürAçıklama
mixList<DataMix>Karma seçim listesi

Örnek:

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()

Vurgulama modundan çıkar ve nokta bulutunu normal görünümüne döndürür.

Örnek:

lccManager.QuitHighlightMode();

SetTone

// Return value: int, 0=success, 1=empty list, 2=exceeded the maximum count
public int SetTone(List<ToneMix> mix)

Seçili bölgeye ton ayarı uygular; parlaklık, doygunluk, kontrast ve LUT filtrelerini destekler. Ton bölgesi 2B doku veya 3B geometriyle tanımlanabilir.

ParametreTürAçıklama
mixList<ToneMix>Ton karma listesi

Notlar:

  • brightness / saturation / contrast için varsayılan değer 1.0'dır.
  • lutid, LUT filtre dizinidir; 0 kullanılmadığı anlamına gelir.

Örnek:

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()

Ton modundan çıkar ve nokta bulutunun özgün rengini geri yükler.

Örnek:

lccManager.QuitToneMode();

Decal Projeksiyonu

Decal projeksiyonu, bir dokuyu projektör yönü boyunca 3DGS yüzeylerine yansıtır. Decal, dünyaya sabit genel bir durumdur ve tüm kameralar için aynıdır. Tipik iş akışı şöyledir: decal'i etkinleştirin → dokuyu ayarlayın → projektör pozunu ayarlayın. Aşağıdaki yöntemler yalnızca PC / Mac platformlarında desteklenir.

SetDecalEnabled

public void SetDecalEnabled(bool enable)

Decal projeksiyonunu açar veya kapatır. İçeriği ve projektör pozunu ayarlamak için SetDecalTexture() ve SetDecalProjection() ayrıca çağrılmalıdır.

ParametreTürAçıklama
enableboolDecal projeksiyonunun etkinleştirilip etkinleştirilmeyeceği

Notlar:

  • Devre dışı bırakmak, önbelleğe alınmış doku / parametreleri temizlemez.

Örnek:

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

SetDecalTexture

public void SetDecalTexture(Texture2D tex)

Decal dokusunu ayarlar. RGB renktir, A ise decal'in kendi maskesidir; genel opaklık ve kenar yumuşatma ile çarpılır.

ParametreTürAçıklama
texTexture2DDecal dokusu; null iletilirse referans temizlenir

Örnek:

lccManager.SetDecalTexture(logoTex);

SetDecalProjection

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

Decal projektörünün poz ve perspektif parametrelerini ayarlar. Projektör ileri (+Z) yönü boyunca yansıtır ve görüş hacmi içindeki noktalar decal ile kaplanır.

ParametreTürAçıklama
posVector3Projektörün dünya konumu
rotQuaternionProjektör yönelimi
fovfloatDikey görüş açısı (derece), [1, 179] aralığına sınırlandırılır
aspectfloatEn-boy oranı, en az 1e-4
nearfloatYakın kırpma düzlemi, en az 1e-3
farfloatUzak kırpma düzlemi, en az near + 1e-3

Örnek:

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

SetDecalOpacity

public void SetDecalOpacity(float opacity)

Decal'in genel opaklığını ayarlar.

ParametreTürAçıklama
opacityfloatGenel decal opaklığı, aralık [0, 1], aşıldığında otomatik olarak sınırlandırılır

Örnek:

lccManager.SetDecalOpacity(0.8f);

SetDecalEdgeFade

public void SetDecalEdgeFade(float edgeFade)

Decal kenar yumuşatma genişliğini ayarlar. 0 sert kenardır; daha büyük bir değer kenar geçişini yumuşatır.

ParametreTürAçıklama
edgeFadefloatKenar yumuşatma genişliği (UV uzayı oranı), aralık [0, 0.5), aşıldığında otomatik olarak sınırlandırılır

Örnek:

lccManager.SetDecalEdgeFade(0.1f);

SetDecalOcclusion

public void SetDecalOcclusion(bool enable)

Decal örtülme ayıklamasını (projektör derinlik haritasına dayalı) açar veya kapatır. Etkinleştirildiğinde, örtülen yüzeyler decal ile kaplanmaz.

ParametreTürAçıklama
enableboolDecal örtülme ayıklamasının etkinleştirilip etkinleştirilmeyeceği

Notlar:

  • Yalnızca PC / Mac platformu ve yalnızca URP işlem hattı.
  • Etkinleştirmeden önce projektörü ayarlamak için SetDecalProjection() çağrılmış olmalıdır.
  • SetDecalOcclusionSettings() ile yapılandırılan kalite parametrelerine bağlıdır.

Örnek:

lccManager.SetDecalOcclusion(true);

SetDecalOcclusionSettings

public void SetDecalOcclusionSettings(DecalOcclusionSettings settings)

Decal örtülme ayıklamasının tüm kalite parametrelerini tek seferde ayarlar. Bkz. DecalOcclusionSettings.

ParametreTürAçıklama
settingsDecalOcclusionSettingsÖrtülme ayıklama kalite parametreleri

Notlar:

  • Herhangi bir zamanda ayarlanabilir; parametreler hemen etkili olur.

Örnek:

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

Yakalama

Yakalama özelliği, ışın gönderimi sırasında hizalamak için yakındaki kenarları / köşeleri otomatik olarak arar. Ölçüm ve not ekleme gibi hassas etkileşimlerde yaygın olarak kullanılır. Aşağıdaki yöntemler yalnızca PC / Mac platformlarında desteklenir.

SetSnapEnabled

public void SetSnapEnabled(bool enable)

Yakalama özelliğini açar veya kapatır. Etkinleştirildiğinde RaycastWithSnap(), yakalanacak yakındaki kenarları / köşeleri otomatik olarak arar.

ParametreTürAçıklama
enableboolYakalamanın etkinleştirilip etkinleştirilmeyeceği

Notlar:

  • Varsayılan olarak kapalıdır.
  • Mobil / VR üzerinde etkisi yoktur ve bir uyarı çıktısı verilir.

Örnek:

lccManager.SetSnapEnabled(true);

SetSnapRadius

public void SetSnapRadius(float pixels)

Yakalama arama yarıçapını ayarlar. Bu piksel aralığı içindeki en yakın kenarı / köşeyi arar.

ParametreTürAçıklama
pixelsfloatYakalama arama yarıçapı (piksel)

Notlar:

  • Varsayılan değer 20 pikseldir.
  • Daha büyük bir değer daha geniş bir arama aralığı anlamına gelir, ancak istenmeyen hedeflere yakalanabilir.

Örnek:

lccManager.SetSnapRadius(30f);

SetEdgeThreshold

public void SetEdgeThreshold(float threshold)

Kenar algılama eşiğini ayarlar. Daha küçük bir değer daha fazla kenar algılar.

ParametreTürAçıklama
thresholdfloatKenar algılama eşiği, önerilen aralık [0.1, 0.8]

Notlar:

  • Varsayılan değer 0.3.
  • Çok küçük bir değer çok sayıda gürültü kenarı üretir.

Örnek:

lccManager.SetEdgeThreshold(0.2f);

SetSnapPreviewEnabled

public void SetSnapPreviewEnabled(bool enable)

Yakalama önizleme özelliğini açar veya kapatır. Etkinleştirildiğinde, fare hareket ettikçe en yakın yakalama hedefi göstergesi gerçek zamanlı olarak görüntülenir.

ParametreTürAçıklama
enableboolYakalama önizlemesinin etkinleştirilip etkinleştirilmeyeceği

Notlar:

  • Önce SetSnapEnabled(true) çağrılmalıdır.
  • Önizleme GPU kaynaklarını sürekli tüketir (her karede algılama yapılır).

Örnek:

lccManager.SetSnapPreviewEnabled(true);

UpdateSnapPreview

public void UpdateSnapPreview(Vector2 mousePos, Camera cam)

Yakalama önizleme durumunu günceller. Önizleme göstergesinin konumunu güncellemek için fare hareket ettikçe çağrılır.

ParametreTürAçıklama
mousePosVector2Fare için geçerli ekran koordinatları
camCameraKamera

Notlar:

  • Önce SetSnapPreviewEnabled(true) çağrılmalıdır.
  • Update içinde sürekli çağrılması önerilir.

Örnek:

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

GetSnapPreviewState

// Return value: SnapPreviewState
public SnapPreviewState GetSnapPreviewState()

Geçerli yakalama önizleme durumunu alır. Bu durum; yakalama hedefinin olup olmadığını, hedef türünü, hedefin ekran konumunu ve fareye olan piksel mesafesini içerir. Bkz. SnapPreviewState.

Notlar:

  • Önce SetSnapPreviewEnabled(true) ve UpdateSnapPreview() çağrılmalıdır.
  • Hedef olmadığında default(SnapPreviewState) döndürür.
  • screenPos ekran koordinatlarındadır, dünya koordinatlarında değildir; dünya koordinatları için RaycastWithSnap() ile HitResult.hitPos değerini alın.

Örnek:

var state = lccManager.GetSnapPreviewState();
if (state.hasTarget)
{
    // state.snapType: Corner / Edge
    // state.screenPos: screen coordinates of the snap target
    // state.distanceToMouse: pixel distance
}

Işın Gönderimi ve Çarpışma Sorguları

Işın gönderimi 3DGS yüzeylerinde nokta seçmek için, çarpışma sorguları ise karakterler / nesneler ile nokta bulutu arasındaki fiziksel etkileşim için kullanılır. İsabet sonucu HitResult ile döndürülür.

Not:

HitResult içindeki isabet noktası dünya koordinatı alanının adı hitPos şeklindedir (position değil).

Raycast (Ekran Koordinatları)

// Return value: bool, true=hit
public bool Raycast(Vector3 mousePos, out HitResult _finalResult)

Nokta bulutu isabetlerini algılamak için ekran koordinatlarından bir ışın gönderir. Işın, SetMainCamera() ile ayarlanan ana kamera kullanılarak oluşturulur.

ParametreTürAçıklama
mousePosVector3Ekran koordinatları
_finalResultout HitResultİsabet sonucu

Notlar:

  • Ana kamerayı ayarlamak için önce SetMainCamera() çağrılmalıdır.
  • Kameraya en yakın isabet noktasını döndürür.
  • Hassasiyet SetRaycastDelta() tarafından etkilenir, maksimum mesafe ise SetMaxRaycastDistance() ile kontrol edilir.

Örnek:

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

Raycast (Işın)

// Return value: bool, true=hit
public bool Raycast(Ray _ray, out HitResult _finalResult)

Özel bir Ray ile ışın gönderimi yapar, tüm etkin Renderer nesneleri üzerinde yineleme yapar ve en yakın isabeti döndürür.

ParametreTürAçıklama
_rayRayIşın
_finalResultout HitResultİsabet sonucu

Örnek:

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

RaycastMesh (Ekran Koordinatları)

// Return value: bool, true=hit
public bool RaycastMesh(Vector3 mousePos, out HitResult _finalResult, float _distance = 70.0f)

Nokta bulutu çarpışma mesh'i üzerindeki isabetleri algılamak için ekran koordinatlarından bir ışın gönderir. Algılama için Collider verilerini kullanır; Raycast() yönteminden daha hızlıdır ancak daha az hassastır.

ParametreTürAçıklama
mousePosVector3Ekran koordinatları
_finalResultout HitResultİsabet sonucu
_distancefloatMaksimum algılama mesafesi, varsayılan 70.0

Notlar:

  • Veriler Collider düğümleri içermelidir ve önce Renderer.SetColliderEnable(true) çağrılmalıdır.

Örnek:

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

RaycastMesh (Işın + Sınırlar)

// Return value: bool, true=hit
public bool RaycastMesh(Ray ray, out HitResult result, out Bounds hitBounds, float maxDist = 70.0f)

Özel bir Ray ile çarpışma mesh'i algılaması yapar ve isabet alan düğümün sınırlayıcı kutusunu da döndürür.

ParametreTürAçıklama
rayRayIşın
resultout HitResultİsabet sonucu
hitBoundsout Boundsİsabet alan düğümün sınırlayıcı kutusu
maxDistfloatMaksimum algılama mesafesi, varsayılan 70.0

Notlar:

  • Veriler Collider düğümleri içermelidir.

Örnek:

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

RaycastWithSnap

// Return value: bool, true=hit
public bool RaycastWithSnap(Vector2 screenPos, Camera cam, out HitResult result)

Yakalama ile ışın gönderimi. Önce normal bir ışın gönderimi yapar, ardından yakalanacak isabet noktası yakınındaki kenarları / köşeleri arar.

ParametreTürAçıklama
screenPosVector2Ekran koordinatları
camCameraKamera
resultout HitResultİsabet sonucu (yakalama bilgisi dahil)

Notlar:

  • Önce SetSnapEnabled(true) çağrılmalıdır.
  • Yalnızca PC / Mac platformları; mobil / VR üzerinde kullanılamaz.
  • Yakalama önceliği: Köşe > Kenar > Yok.
  • HitResult.snapType yakalama türüdür, HitResult.hitPos yakalamadan sonraki dünya koordinatıdır ve HitResult.originalHitPos yakalamadan önceki özgün isabet noktasıdır.

Örnek:

if (lccManager.RaycastWithSnap(mousePos, cam, out HitResult hit))
{
    // hit.snapType: Corner / Edge / None
    // hit.hitPos: world coordinate after snapping
    // hit.originalHitPos: original hit point before snapping
}

SetRaycastDelta

public void SetRaycastDelta(float delta)

Işın gönderiminin hassasiyet parametresini ayarlar. Daha küçük bir değer daha yüksek hassasiyet, ancak daha yüksek performans tüketimi anlamına gelir.

ParametreTürAçıklama
deltafloatIşın gönderimi hassasiyeti, aralık [0.1, 10.0], aşıldığında otomatik olarak sınırlandırılır

Notlar:

  • Varsayılan değer 0.1.
  • Tüm Raycast() yöntemlerinin algılama hassasiyetini etkiler.

Örnek:

lccManager.SetRaycastDelta(0.5f);

SetMaxRaycastDistance

public void SetMaxRaycastDistance(float _distance)

Raycast() yöntemlerinin maksimum algılama mesafesini ayarlar.

ParametreTürAçıklama
_distancefloatMaksimum ışın gönderimi mesafesi, aralık [10, 10000], aşıldığında otomatik olarak sınırlandırılır

Notlar:

  • Raycast(Vector3) / Raycast(Ray) aşırı yüklemelerini etkiler; RaycastMesh() yöntemini etkilemez (kendi mesafe parametresi vardır).

Örnek:

lccManager.SetMaxRaycastDistance(500f);

IntersectsSphere

// Return value: bool, true=intersects
public bool IntersectsSphere(Sphere sphere)

// Return value: bool, true=intersects
public bool IntersectsSphere(Sphere sphere, out Vector3 delta)

Bir kürenin nokta bulutu çarpıştırıcısı ile kesişip kesişmediğini algılar. İkinci aşırı yükleme ayrıca penetrasyon vektörünü döndürür; bu vektör fiziksel itme için kullanılabilir.

ParametreTürAçıklama
sphereSphereKüre
deltaout Vector3Penetrasyon vektörü (itme yönü ve mesafesi)

Notlar:

  • Veriler Collider düğümleri içermelidir ve önce Renderer.SetColliderEnable(true) çağrılmalıdır.
  • Tüm etkin Renderer'lar üzerinde yineleme yapar.

Örnek:

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

IntersectsCapsule

// Return value: bool, true=intersects
public bool IntersectsCapsule(Capsule capsule)

// Return value: bool, true=intersects
public bool IntersectsCapsule(Capsule capsule, out Vector3 delta)

Bir kapsülün nokta bulutu çarpıştırıcısıyla kesişip kesişmediğini algılar; genellikle karakter denetleyicisi çarpışma algılaması için kullanılır. İkinci aşırı yükleme penetrasyon vektörünü döndürür.

ParametreTürAçıklama
capsuleCapsuleKapsül
deltaout Vector3Penetrasyon vektörü

Notlar:

  • Veriler Collider düğümleri içermelidir ve önce Renderer.SetColliderEnable(true) çağrılmalıdır.

Örnek:

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

Görsel Efektler

TriggerVFX

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

Belirtilen dünya koordinatında, bu koordinattan dışa doğru yayılan bir görsel efekt tetikler.

ParametreTürAçıklama
vfxOriginWVector3Efektin dünya koordinatı başlangıç noktası
vfxidintEfekt kimliği, varsayılan 0

Notlar:

  • LCC sahnesinin yüklenmesi tamamlandıktan sonra çağrılmalıdır.

Örnek:

lccManager.TriggerVFX(hitPoint, 0);

Örnek Sorguları

GetAllRenderers

// Return value: List<Renderer>, a copy of all registered Renderer instances
public List<Renderer> GetAllRenderers()

Şu anda kayıtlı tüm Renderer örneklerinin listesini alır (kopya döndürür).

Örnek:

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

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:

XGRIDS Türkiye

Kurulumda ve Sahada Yanınızdayız

Atlıhan Harita; cihaz kurulumu, firmware güncellemesi, yazılım kullanımı ve saha uygulamalarında eğitim ve teknik destek verir. Sorunuzu iletin, uzmanımız size dönsün.

+90 216 546 0804