ASogActor, ASpzActor ve APlyActor Actor'ları sırasıyla .sog, .spz ve .ply formatlarına karşılık gelir ve LCC dizin yapısı olmadan tek bir 3DGS dosyası yükler. Üçü de ALCCActorBase sınıfından türetilir.
| Modül | LCC4UnrealRuntime |
| Header Dosyaları | SogActor.h, SpzActor.h, PlyActor.h |
| Üst sınıf | ALCCActorBase |
| Dahili Bileşen | ULCC2Component |
#include "SogActor.h"
#include "SpzActor.h"
#include "PlyActor.h"
Üçü de dahili olarak sanal bir FLCC2MetaInfo oluşturarak LCC2 görüntüleme hattının tamamını yeniden kullanır. Başka bir deyişle LCC2 yetenekleri bu üç format için de aynı şekilde kullanılabilir; bunlara küresel harmonik bant kontrolü, aydınlatma normal modları, kırpma ve kesit alma ile renk ayarı dahildir. Aynı şekilde LCC2 hattının sınırlamaları da devralınır; örneğin çoklu görünüm alanı arayüzlerinin etkisi yoktur.
Desteklenen Formatlar
| Actor | Uzantı | Kullanım Senaryosu |
|---|---|---|
ASogActor | .sog | Sıkıştırılmış format, küçük boyut, hızlı yükleme |
ASpzActor | .spz | Sıkıştırılmış format |
APlyActor | .ply | Yaygın nokta bulutu / 3DGS değişim formatı; çoğu eğitim aracının yerel çıktısıdır |
Her formatın destek kapsamı için Giriş - Supported Formats bölümüne bakın.
LCC Dizin Formatlarıyla Karşılaştırma
.sog / .spz / .ply | LCC / LCC2 dizini | |
|---|---|---|
| Dosya organizasyonu | Tek dosya | Meta veri dosyası ve birkaç veri parçası |
| LOD seviyeleri | None | Var, mesafeye göre akış şeklinde yüklenir |
| Uygun ölçek | Küçük ve orta ölçekli sahneler | Büyük sahneler |
| Çarpışma verisi | None | Mümkün |
| Dağıtım kolaylığı | Yüksek, tek dosya | Dizinin eksiksiz korunmasını gerektirir |
Nasıl seçilir: veri küçük olduğunda, sonucu hızlıca doğrularken veya tek dosya olarak dağıtım gerektiğinde bu üç formatı kullanın. Büyük sahneler performansı kontrol etmek için LOD'a dayanır ve LCC / LCC2 dizin formatını gerektirir.
Metotlar
Üç Actor'ün tüm genel arayüzleri ALCCActorBase sınıfından devralınır; yalnızca aşağıdaki metotlar geçersiz kılınır.
SelectFile
// ASogActor
virtual void SelectFile() override; // the dialog lists only .sog
// ASpzActor
virtual void SelectFile() override; // the dialog lists only .spz
// APlyActor
virtual void SelectFile() override; // the dialog lists only .ply
Dosya iletişim kutusunu açar; her biri kendi uzantısını filtreler. Details panelinde Load düğmesi olarak görünür.
Yalnızca Editor'de çalışır; paketlenmiş çalışma zamanında Load kullanın.
Load (yalnızca APlyActor tarafından geçersiz kılınır)
// APlyActor
virtual void Load(const FString& String) const override;
Bir .ply dosyası yükler. Uzantısı .ply olmayan bir yol doğrudan reddedilir ve ayrıştırma denenmez.
ASogActor ve ASpzActor, Load metodunu geçersiz kılmaz ve temel sınıf uygulamasını kullanır.
Örnekler
Tek bir .sog dosyası yükleme
#include "SogActor.h"
#include "LCC2Component.h"
void AMyLoader::LoadSogFile()
{
ASogActor* SogActor = GetWorld()->SpawnActor<ASogActor>(
ASogActor::StaticClass(), FVector::ZeroVector, FRotator::ZeroRotator);
if (!SogActor)
{
return;
}
SogActor->Load(TEXT("D:/Data/scene.sog"));
// internally a ULCC2Component, so all LCC2 capabilities are available
ULCC2Component* Comp = Cast<ULCC2Component>(SogActor->GetLCCComponent());
if (Comp)
{
Comp->SetSHBands(2);
Comp->SetSplatScale(0.9f);
}
}
Actor'ü uzantıya göre otomatik seçme
Her formatın kendine ait bir Actor'ü vardır ve gerçek bir projede genellikle uzantıya göre yönlendirme yapmak gerekir.
Bunun için DetermineFileFormat işlevine güvenmeyin: Yalnızca .lcc, .splats, .las ve .ply biçimlerini tanır; .lcc2, .sog ve .spz için None döndürür. Uzantıyı doğrudan denetlemek daha güvenilirdir:
#include "Tools/LCCUtilLibrary.h"
#include "LCCActor.h"
#include "LCC2Actor.h"
#include "SogActor.h"
#include "SpzActor.h"
#include "PlyActor.h"
ALCCActorBase* AMyLoader::LoadAnyFormat(const FString& Path)
{
if (!ULCCUtilLibrary::CheckPathValid(Path))
{
UE_LOG(LogTemp, Error, TEXT("Path does not exist: %s"), *Path);
return nullptr;
}
const FString Ext = FPaths::GetExtension(Path).ToLower();
UClass* ActorClass = nullptr;
if (Ext == TEXT("lcc")) ActorClass = ALCCActor::StaticClass();
else if (Ext == TEXT("lcc2")) ActorClass = ALCC2Actor::StaticClass();
else if (Ext == TEXT("sog")) ActorClass = ASogActor::StaticClass();
else if (Ext == TEXT("spz")) ActorClass = ASpzActor::StaticClass();
else if (Ext == TEXT("ply")) ActorClass = APlyActor::StaticClass();
if (!ActorClass)
{
UE_LOG(LogTemp, Error, TEXT("Unsupported format: %s"), *Path);
return nullptr;
}
ALCCActorBase* Actor = GetWorld()->SpawnActor<ALCCActorBase>(
ActorClass, FVector::ZeroVector, FRotator::ZeroRotator);
if (Actor)
{
Actor->Load(Path);
}
return Actor;
}
Blueprint'te uzantıyı doğrudan alan bir düğüm yoktur, bu nedenle bir dize denetimi kullanın:
[Custom Event: LoadAnyFormat]
Path (String)
│
▼
[Check Path Valid]
Path = Path
│ Return Value ──┐
▼ │
[Branch] ◀───────────────┘
│ True
▼
[Ends With]
Source String = Path
In Suffix = ".sog"
Search Case = Ignore Case
│ Return Value ──┐
▼ │
[Branch] ◀───────────────┘
│ True
▼
[Spawn Actor from Class]
Class = SogActor
│ Return Value ──┐
▼ │
[Load] ◀─────────────────┘
Target = (Return Value)
String = Path
(the False branch keeps checking ".spz", ".ply", ".lcc2", ".lcc" with Ends With)
Notlar
- Bu üç biçimde LOD seviyesi yoktur. Yükleme, tek seviyeli ve tek düğümlü bir ağaç oluşturur (toplam seviye sayısı 1, alt düğümü olmayan kök düğüm). Bu nedenle
StartLevel,EndLevelveLevelFactorgibi LOD parametreleri okunmaya devam eder, ancak seçilecek seviye bulunmadığından etkisi olmaz. Performans esas olarakMaxSplatNumveSplatScaleile kontrol edilir. - Bu üç biçim çarpışma verisi içermez. Alternatifler için Çarpışma - Alternatives for Single-file Formats sayfasına bakın.
- Büyük bir dosya tek seferde tamamen yüklenir ve video belleği kullanımı sabit kalır, görünüme göre değişmez. Yükleme sınırı ve hesaplanma biçimi için Görüntüleme - Loading Limits of Single-file Formats sayfasına bakın.
- Üçünün Ayrıntılar panelinde
bSyncLoadAtRuntimeseçeneği görünür (varsayılan olarak etkindir). Bu seçenek, paketlenmiş bir derlemenin BeginPlay sırasında eşzamanlı yükleme yapıp yapmayacağını belirler. Bkz. ULCC2Component. - LCC2 görüntüleme hattını kullandıkları için temel sınıftaki çoklu görüntü alanı arayüzleri bunlara uygulanmaz.
- Üçü de oluşturulurken Component üzerindeki
bUseMipFilterdeğerinifalseyapar (temel sınıfta varsayılan değertrue'dur) ve Actor dönüşünü(0, 0, 90)olarak ayarlar. .plybiçiminin birkaç alt biçimi vardır ve eklenti, 3DGS özelliklerini taşıyan türü destekler. Normal geometri mesh'i içeren bir.plydosyasının yüklenmesi başarısız olur.
Ayrıca Bakın
- ALCCActorBase: devralınan tüm arayüzler
- ULCC2Component: bu üç Actor'ın dahili olarak kullandığı bileşen
- ULCCUtilLibrary: biçim algılama ve yol doğrulama
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:

