LCC4UnrealRuntime modülünün sunduğu struct türleri.
| Modül | LCC4UnrealRuntime |
| Header | Core/LCCStructure.h |
#include "Core/LCCStructure.h"
BlueprintType olarak işaretlenen struct'lar, Blueprint'te Break / Make düğümleriyle ayrılabilir ve birleştirilebilir.
Performans
FRenderInfo
Ortak performans parametreleri. ULCCComponentBase::Performance tarafından kullanılır.
Bu struct'ın tasarım özelliği, her değerin bir etkinleştirme onay kutusuyla birlikte gelmesidir. Onay kutusu kapalıyken eklentinin yerleşik varsayılan değeri kullanılır; girilen değer yalnızca onay kutusu açıldığında geçerli olur. Component üzerindeki ilgili Setter, onay kutusunu otomatik olarak true yapar.
| Alan | Tür | Varsayılan | İlgili onay kutusu | Açıklama |
|---|---|---|---|---|
MaxDistance | uint32 | 300 | bDistanceLimit | Maksimum görüntüleme mesafesi (metre) |
MaxSplatNum | uint32 | 3000 | bMaxSplatNumLimit | Kare başına maksimum splat sayısı (on bin birimi), üst sınır 10000 |
LevelFactor | float | 1 | bCanSetLevelFactor | LOD mesafe ölçek faktörü, 0,01 ile 20 arasında |
PreloadDistance | uint32 | 200 | bPreloadDistanceLimit | Ön yükleme mesafesi. Gerçek değer MaxDistance + 35 olur |
StartLevel | uint32 | 0 | bCanSetStartLevel | Başlangıç seviyesi (Start Level), 0 ile 20 arasında |
EndLevel | uint32 | 20 | bCanSetEndLevel | Bitiş seviyesi (End Level), 0 ile 20 arasında |
CollisionLoadMaxDistance | uint32 | 300 | bCollisionDistanceLimit | Maksimum çarpışma yükleme mesafesi (metre) |
bUseFullLoad | bool | true | bCanSetUseFullLoad | Küçük sahneler için tam yükleme anahtarı. ULCC2Component oluşturulduğunda onay kutusu etkin, değer false olarak yeniden yazılır |
FullLoadSplatNum | uint32 | 1500 | bCanSetFullLoadNum | Tam yükleme eşiği (on bin birimi) |
Yardımcı metotlar:
bool HasMaxDistanceLimit() const; // whether a distance limit exists
bool HasMaxNumLimit() const; // whether a count limit exists
bool NeedPreload() const; // whether preloading is needed
uint32 GetMaxDistance() const; // effective maximum distance
uint32 GetMaxSplatNum() const; // effective maximum count
float GetLevelFactor() const; // effective LOD factor
uint32 GetStartLevel() const; // effective start Level
uint32 GetEndLevel() const; // effective end Level
uint32 GetMaxCollisionDistance() const;
uint32 GetPreloadDistance() const; // returns GetMaxDistance() + 35
bool GetIfUseFullLoad(uint32 SplatNum) const; // whether the given count uses full load
void Reset(); // resets the value fields only, not the enable checkboxes
Kolayca düşülebilecek iki hata:
Reset()yalnızca değer alanlarını (mesafe, sayı, Level, katsayı) sıfırlar; hiçbirb*etkinleştirme onay kutusunu sıfırlamaz, ayrıcabUseFullLoadveFullLoadSplatNumdeğerlerini de sıfırlamaz.FRenderInfo::GetPreloadDistance(),GetMaxDistance() + 35değerini döndürür. Component üzerindeki aynı adlı işlevULCCComponentBase::GetPreloadDistance()ise ham alan değerini döndürür. İki sonuç birbirinden farklıdır.
Getter'lar etkin değeri döndürür: onay kutusu kapalıyken daha önce girilen değeri değil, yerleşik varsayılan değeri döndürürler. Bu durum kolayca karıştırılır; alanı doğrudan okumak ile Getter'ı çağırmak farklı sonuç verebilir.
Kullanım notları:
- Component üzerindeki Setter ile değiştirmek en kolay yoldur ve onay kutusunu elle ayarlamayı gerektirmez.
- Struct alanlarını doğrudan değiştirirken onay kutusunu da
trueyapmayı unutmayın; aksi halde hiçbir değişiklik etki etmez.
// recommended: use the Setter, the checkbox is handled automatically
Component->SetMaxDistance(200);
// changing the field directly requires setting the checkbox yourself
Component->Performance.bDistanceLimit = true;
Component->Performance.MaxDistance = 200;
FLCCRenderInfo
LCC1'e özgü performans parametreleri. ULCCComponent::LCCPerformance tarafından kullanılır.
| Alan | Tür | Varsayılan | İlgili onay kutusu | Açıklama |
|---|---|---|---|---|
SortFactor | float | 1 | bCanSetSortFactor | Sıralama sıklığı ölçek faktörü, 0,2 ile 5 arasında. Büyük değer, daha az sıralama ve daha iyi performans anlamına gelir |
bAddExtraPreNodes | bool | Bir makro tarafından belirlenir | bEnableExtraPreNodes | Ek ön yükleme düğümleri ekler ve görünümü hızlı çevirirken ekran kenarında oluşan boşlukları azaltır |
Yardımcı metotlar:
float GetSortFactor() const;
bool GetIfAddExtraPreNodes() const;
void Reset();
İlgili sayfa: ULCCComponent
Metadata
FMetaInfoBase
Metadata temel struct'ı. Hem FLCCMetaInfo hem de FLCC2MetaInfo tarafından miras alınır. ULCCComponentBase::GetMetaInfo işlevinin dönüş türüdür.
| Alan | Tür | Açıklama |
|---|---|---|
Name | FString | Veri adı |
Version | FString | Veri sürümü dizesi |
Description | FString | Açıklama |
Source | FString | Source |
DataType | FString | Veri türü |
FileType | FString | Dosya türü, EFileType ile eşleşir |
Offset | TArray<float> | Koordinat ofseti, 3 eleman |
Shift | TArray<float> | Öteleme miktarı |
Epsg | int32 | EPSG koordinat sistemi numarası; 0'dan büyük olması coğrafi koordinat bilgisinin bulunduğunu gösterir |
Scale | TArray<int> | Ölçek, 3 eleman |
GUID | FString | Verinin benzersiz tanımlayıcısı |
TotalLevel | int | Toplam Level sayısı |
TotalSplats | int | Toplam splat sayısı |
Splats | TArray<int> | Her Level için splat sayısı |
Yardımcı metotlar:
bool IsValid() const; // whether the metadata is valid
void Reset();
bool IsRTK() const; // whether RTK geographic information is present
FVector GetOffset() const; // offset as FVector, returns a zero vector with a warning when fewer than 3 elements
FVector3f GetScale(); // note: not const, and does not check the element count
EFileType GetFileType() const; // file type enum
float GetVersion() const; // version as float
uint32 GetLevel0SplatNum() const; // splat count of Level 0, in units of ten thousand
GetScale() ve GetOffset() dayanıklılık açısından farklıdır: GetOffset() eleman sayısını denetler ve 3'ten az eleman varsa uyarı vererek sıfır vektör döndürür. GetScale() ise ilk üç elemana doğrudan erişir ve Scale 3'ten az eleman içerdiğinde sınır dışına taşar.
IsRTK(), Epsg > 0 koşuluna ve sıfırdan farklı bir ofsete bakarak karar verir; yalnızca veriye bakar. CanUseGeoPlace() ile eşdeğer değildir; çünkü bu işlev ayrıca bEnableGeoPlace değerinin etkin olmasını ve jeoreferanslama sisteminin oluşturulmuş olmasını gerektirir.
Kullanım notları:
- Yükleme tamamlandıktan sonra okuyun; veri hazır değilken alanların tümü sıfır değerindedir.
TotalSplats, verinin toplam miktarıdır.ULCCComponentBase::GetSplatNumber()tam olarak bu alanı döndürür, dolayısıyla ikisi aynı değerdir.
if (Component->CheckIfLoaded())
{
const FMetaInfoBase Meta = Component->GetMetaInfo();
UE_LOG(LogTemp, Log, TEXT("Name: %s"), *Meta.Name);
UE_LOG(LogTemp, Log, TEXT("Levels: %d, total splats: %d"),
Meta.TotalLevel, Meta.TotalSplats);
UE_LOG(LogTemp, Log, TEXT("Level 0 splats: %u (ten thousand)"),
Meta.GetLevel0SplatNum());
UE_LOG(LogTemp, Log, TEXT("Has SH: %s"),
Meta.GetFileType() == EFileType::Quality ? TEXT("yes") : TEXT("no"));
if (Meta.IsRTK())
{
UE_LOG(LogTemp, Log, TEXT("EPSG: %d, offset: %s"),
Meta.Epsg, *Meta.GetOffset().ToString());
}
}
Metin olarak Blueprint:
[Get Meta Info]
Target = (LCC Component)
│ Return Value ──┐
▼ │
[Break FMetaInfoBase] ◀──┘
Name → [Print String]
Total Splats → [Print String]
Total Level → [Print String]
FLCCMetaInfo
FMetaInfoBase sınıfından türeyen eksiksiz LCC1 meta verileri.
| Ek alan | Tür | Açıklama |
|---|---|---|
CellLengthX | float | X ekseni boyunca ızgara boyutu |
CellLengthY | float | Y ekseni boyunca ızgara boyutu |
Attributes | TArray<FBoundingBoxInfoWithName> | Her özniteliğin sınırlayıcı kutusu, ada göre dizinlenir |
IndexDataSize | int | Dizin verisi boyutu |
Encoding | FString | Kodlama yöntemi |
BoundingBox | FBoundingBoxInfo | Genel sınırlayıcı kutu |
IsValid() koşulu temel sınıfa göre daha katıdır: TotalLevel, TotalSplats, CellLengthX, CellLengthY ve IndexDataSize değerlerinin hepsi 0'dan büyük olmalıdır.
Sınırlayıcı kutu yöntemleri (hepsi FBox döndürür, yalnızca C++):
FVector2f GetCellLength() const;
int32 GetXNum() const; // grid count along X
int32 GetYNum() const; // grid count along Y
FBox GetVisibleBoundingBox() const; // visible bounding box
FBox GetScaleBox() const;
FBox GetEnvironmentScaleBox() const;
FBox GetEnvironmentVisibleBox() const;
FBox GetShcoef() const; // value range of the spherical harmonics
FBox GetEnvShcoef() const;
FBox GetNormal() const;
FBox GetEnvNormal() const;
FBox GetColor() const;
FVector2f GetOpacity() const;
FLCC2MetaInfo
FMetaInfoBase sınıfından türeyen eksiksiz LCC2 meta verileri. ULCC2Component::GetMetaInfo2 yönteminin dönüş türüdür.
| Ek alan | Tür | Açıklama |
|---|---|---|
WorkPath | FString | LCC2 dizininin yolu |
SplatType | EDataSourceType | Veri kaynağı biçimi: SOG / SPZ / PLY |
SHBands | int32 | Bu ağaçtaki en yüksek küresel harmonik bandı; 0 hiç olmadığını gösterir, değerler 1/2/3 |
EnvName | int32 | Ortam dosyası dizini; -1 hiç olmadığını gösterir |
Root | FTreeNode | Octree kök düğümü |
Files | TArray<FString> | Splat veri dosyalarının listesi |
MeshFiles | TArray<FString> | Mesh dosyalarının listesi |
BVHFiles | TArray<FString> | BVH dosyalarının listesi |
IsValid() koşulu, Files listesinin boş olmamasıdır.
Yardımcı yöntem:
FBox GetBounds() const; // bounding box of the root node, already converted to centimeters
SHBands hakkında: Küresel harmonik yuvalarının adımını belirler, bu nedenle aynı küresel harmonik arabelleği içindeki tüm veri kaynaklarının bu değerde uyuşması gerekir. Farklı bant sayılarını karıştıran bir ağaçta en geniş değer kullanılır. Tek dosyalı biçimlerde (.sog / .spz / .ply) tam bant sayısı kod çözücü başlığından okunur; LCC2'de dosya başına bant kavramı yoktur ve bunu FileType belirler: Portable küresel harmonik içermez, Quality ise 3 bant içerir.
Durumlar
ULCCComponentBase durum değişikliği olayları tarafından kullanılan, Core/LCCEventTypes.h dosyasında tanımlı yapılar. Alanlar yalnızca eklenir, hiç değiştirilmez; mevcut alanlar özgün anlamını korur.
FLCCLoadStateChange
Tek bir yükleme durumu değişikliği. OnLoadStateChanged olayıyla iletilir.
| Alan | Tür | Açıklama |
|---|---|---|
OldState | ELCCLoadState | Değişiklikten önceki durum |
NewState | ELCCLoadState | Değişiklikten sonraki durum |
FLCCCollisionStateChange
Tek bir çarpışma durumu değişikliği. OnCollisionStateChanged olayıyla iletilir.
| Alan | Tür | Açıklama |
|---|---|---|
OldState | ELCCCollisionState | Değişiklikten önceki durum |
NewState | ELCCCollisionState | Değişiklikten sonraki durum |
FLCCLoadAnimationStateChange
Tek bir animasyon durumu değişikliği. OnLoadAnimationStateChanged olayıyla iletilir.
| Alan | Tür | Açıklama |
|---|---|---|
OldState | ELCCLoadAnimationState | Değişiklikten önceki durum |
NewState | ELCCLoadAnimationState | Değişiklikten sonraki durum |
FLCCLoadFailure
Tek bir yükleme hatası. OnLoadFailed olayıyla iletilir.
| Alan | Tür | Açıklama |
|---|---|---|
Error | ELCCLoadError | Hata nedeni; değerler için bkz. ELCCLoadError |
Path | FString | Yükleme için istenen yol; Content içindeyse göreli yoldur |
Message | FString | Günlükler ve tanılama için okunabilir İngilizce açıklama; ayrıştırma için kullanılmaz |
Durum sabitlerinin değerleri için bkz. Enum'lar - States.
Işın Testi Sonucu
FLCCSplat
Bir ışın testinin isabet sonucu. ULCCComponent bileşeninin ışın testi işlevlerinde kullanılır.
| Alan | Tür | Açıklama |
|---|---|---|
Location | FVector | İsabet noktasının dünya koordinatları |
NodeVector | FLCCVector | İsabet noktasının düğüm bilgisi |
FLCCSplat Hit;
if (LineTraceSingle(Start, End, Hit, false, 0.f, 0.f))
{
// hit position
const FVector HitPos = Hit.Location;
// detail level currently loaded at that spot
const int32 Level = Hit.NodeVector.Level;
}
İlgili sayfa: ULCCComponent ışın testleri
FLCCVector
Octree içinde bir düğümü konumlandıran düğüm koordinatları.
| Alan | Tür | Açıklama |
|---|---|---|
X | int32 | Düğümün X dizini |
Y | int32 | Düğümün Y dizini |
Level | int32 | Düğümün ait olduğu seviye |
Parametreli kurucu ve kopya kurucu üç alanı da negatif olmayan değerlere sınırlar; ancak doğrudan atama (varsayılan oluşturmadan sonra alanlara yazmak veya operator= kullanmak) sınırlama yapmaz.
Yardımcı metotlar:
FString ToString() const; // format is "X:%i,Y:%i,Level:%i"
void Reset();
static double Dist2D(const FLCCVector& A, const FLCCVector& B);
Eşitlik karşılaştırması yalnızca X, Y ve Level alanlarına bakar; dahili kamera bilgisini ve diğer çalışma zamanı alanlarını dikkate almaz.
Level, şu anda görünen verinin ince mi yoksa kaba mı olduğunu gösterir; değer küçüldükçe veri incelir.
Sınırlayıcı Kutu
FBoundingBoxInfo
Sınırlayıcı kutu bilgisi.
| Alan | Tür | Açıklama |
|---|---|---|
Min | TArray<float> | En küçük noktanın koordinatları |
Max | TArray<float> | En büyük noktanın koordinatları |
FBoundingBoxInfoWithName
Adlandırılmış sınırlayıcı kutu; meta verilerdeki öznitelik listesinde kullanılır.
| Alan | Tür | Açıklama |
|---|---|---|
Name | FString | Öznitelik adı |
BoundingBoxInfo | FBoundingBoxInfo | Sınırlayıcı kutu |
Eşitlik karşılaştırması yalnızca Name alanına bakar.
SOG Meta Verileri
Bu yapı grubu bir .sog dosyasının meta verilerini tanımlar ve ULCCUtilLibrary sınıfının SOG ayrıştırma işlevleri tarafından çıktı olarak verilir.
FLCC2SogMeta
Ana SOG meta veri yapısı.
| Alan | Tür | Açıklama |
|---|---|---|
Version | int32 | Biçim sürümü |
Count | int32 | Splat sayısı |
bAntialias | bool | Kenar yumuşatmanın etkin olup olmadığı |
Instances | FLCC2SogInstances | Örnek dosyalarının listesi |
Means | FLCC2SogMeans | En küçük ve en büyük değerleri ile dosya listesini içeren konum verisi |
Scales | FLCC2SogScales | 256 girişli kod çizelgesi ve dosya listesini içeren ölçek verisi |
Quats | FLCC2SogQuats | Döndürme verisinin dosya listesi |
Semantics | FLCC2SogSemantics | Anlamsal verinin dosya listesi |
Sh0 | FLCC2SogSh0 | 256 girişli kod çizelgesi ve dosya listesini içeren, bant 0 küresel harmonikleri |
ShN | FLCC2SogShN | Bant sayısı, kod çizelgesi, sayı ve dosya listesini içeren yüksek dereceli küresel harmonikler |
Yardımcı yöntem:
bool HasShN() const; // whether high-order spherical harmonics are present, equivalent to ShN.Files being non-empty
Kullanım notları:
- Görüntüleme verilerini yüklemeden
ParseSogMetaFromFileile okuyabilirsiniz; maliyeti çok düşüktür. - Yüklemeden önce nokta sayısını ve küresel harmonik durumunu gösterir, böylece kalite yapılandırması önceden belirlenebilir.
FLCC2SogMeta Meta;
if (ULCCUtilLibrary::ParseSogMetaFromFile(Path, Meta))
{
UE_LOG(LogTemp, Log, TEXT("Version: %d, count: %d, high-order SH: %s"),
Meta.Version, Meta.Count, Meta.HasShN() ? TEXT("yes") : TEXT("no"));
}
FLCC2SogShN
Yüksek dereceli küresel harmonik verisi.
| Alan | Tür | Açıklama |
|---|---|---|
Bands | int32 | Küresel Harmonik Bantları |
Count | int32 | Sayı |
Files | TArray<FString> | Dosya Listesi |
Codebook | TStaticArray<float, 256> | Niceleme kod defteri, Blueprint tarafından görülemez |
Yardımcı yöntem: bool HasShN() const.
FLCC2SogImageData
SOG görüntü verisi.
| Alan | Tür | Açıklama |
|---|---|---|
PixelData | TArray<uint8> | Piksel verisi, RGBA formatı, piksel başına 4 bayt |
Width | int32 | Genişlik |
Height | int32 | Yükseklik |
Diğer Alt Yapılar
Aşağıdaki yapılar yalnızca bir dosya listesi içerir; bazıları ayrıca niceleme kod defteri içerir:
| Yapı | Alanlar |
|---|---|
FLCC2SogInstances | Files |
FLCC2SogSemantics | Files |
FLCC2SogQuats | Files |
FLCC2SogMeans | Mins, Maxs, Files |
FLCC2SogScales | Codebook (256 giriş), Files |
FLCC2SogSh0 | Codebook (256 giriş), Files |
Codebook, TStaticArray<float, 256> türündedir, UPROPERTY değildir ve Blueprint'te görünmez.
Octree Düğümleri
Bu yapı grubu LCC2 octree'yi tanımlar. Düşük seviyeli veridir; olağan geliştirme sırasında doğrudan değiştirmeniz gerekmez.
FTreeNode
Octree düğümü.
| Alan | Tür | Açıklama |
|---|---|---|
Id | FString | Düğüm tanımlayıcısı |
XMin / YMin / ZMin | double | AABB'nin minimum noktası |
XMax / YMax / ZMax | double | AABB'nin maksimum noktası |
ChildNum | int32 | Alt düğüm sayısı |
Children | TArray<FTreeNode> | Alt düğümler dizisi, UPROPERTY değildir |
Data | FTreeNodeData | Düğüm verisi |
Yardımcı yöntem:
void ClearIterative();
Tüm düğümleri genişlik öncelikli toplar ve ters sırada temizler; çok derin bir ağaçta özyinelemeli yıkımdan kaynaklanan yığın taşmasını önler. Elle tutulan bir FTreeNode kapsam dışına çıkmadan önce çağırın.
FTreeNodeData
Düğüm veri kapsayıcısı; her veri türünün mevcut olup olmadığını boolean değerlerle işaretler.
| Alan | Tür | Açıklama |
|---|---|---|
bHas3DGS | bool | 3DGS verisi var mı |
_3DGS | FTreeNodeData3DGS | 3DGS verisi |
bHasMesh | bool | Mesh verisi var mı |
Mesh | FTreeNodeDataMesh | Mesh verisi |
bHasBVH | bool | BVH verisi var mı |
BVH | FTreeNodeDataBVH | BVH verisi |
FTreeNodeData3DGS
| Alan | Tür | Açıklama |
|---|---|---|
Name | int32 | Dosya indeksi |
Start | int32 | Başlangıç ofseti |
Count | int32 | Sayı |
FTreeNodeDataMesh
| Alan | Tür | Açıklama |
|---|---|---|
Name | int32 | Dosya indeksi |
Vertex | int32 | Köşe sayısı |
Face | int32 | Yüz sayısı |
FTreeNodeDataBVH
| Alan | Tür | Açıklama |
|---|---|---|
Name | int32 | Dosya indeksi |
Ayrıca Bakın
- ULCCComponentBase:
FRenderInfoveFMetaInfoBasekullanımı - ULCCComponent:
FLCCSplatveFLCCRenderInfokullanımı - ULCCUtilLibrary: SOG meta veri ayrıştırma işlevleri
- Enum'lar: bu yapılarda kullanılan enum türleri
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:

