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

LCC for Unity Kullanım Kılavuzu · Özellik Geliştirme Kılavuzu

Yüksek Çözünürlüklü Görüntüleme Geliştirme Kılavuzu

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

LCC Unity SDK, yüksek çözünürlüklü görüntülemeyi, yani ekran çözünürlüğünü aşan sahne görüntülerinin oluşturulmasını destekler. Örneğin ekran çözünürlüğü 1920×1080 olduğunda LCC Unity SDK yine de 3840×2160 (4K), 2560×1440 (2K), 1920×1080 (1080p), 1280×720 (720P) ve diğer çözünürlüklerde görüntüler oluşturabilir. Çeşitli çözünürlüklerde görüntüler oluşturulduktan sonra bunlar yüksek çözünürlüklü görüntü ve video üretiminde kullanılabilir. Aşağıda, 4K bir görüntüyü oluşturup JPG olarak kaydetme örneği üzerinden yüksek çözünürlüklü görüntülemenin tüm adımları açıklanmaktadır.

Adım 1: Sahneyi ve GameObject'leri Oluşturma

Unity'de yepyeni bir sahne oluşturun. Unity varsayılan olarak Main Camera ve Directional Light oluşturur.

Main Camera Ayarlama

Hierarchy penceresinde Main Camera nesnesini seçin ve özelliklerini Inspector penceresinde aşağıda gösterildiği gibi ayarlayın.

Main Camera özelliklerini ayarlama

Main Camera özelliklerini ayarlama

LCCManager Oluşturma

Hierarchy penceresinde boş bir alana sağ tıklayın, açılan menüden Create Empty seçeneğini seçerek boş bir GameObject oluşturun, adını LCCManager yapın, Transform değerini normalleştirin ve Add Component ile bu nesneye LCCManager betiğini ekleyin.

LCCManager GameObject'ini oluşturun ve LCCManager betiğini ekleyin

LCCManager GameObject'ini oluşturun ve LCCManager betiğini ekleyin

LCCRenderer Oluşturma

Hierarchy penceresinde boş bir alana sağ tıklayın, Create Empty seçeneğini seçerek boş bir GameObject oluşturun, adını LCCRenderer yapın ve Transform değerlerini Rotation.x = -90 ve Scale.x = -1 olarak ayarlayın.

LCCRenderer Oluşturma ve Transform Ayarlama

LCCRenderer oluşturma ve Transform ayarı (Rotation.x = -90, Scale.x = -1)

Not:

LCCRenderer GameObject'inin Transform ayarları (Rotation.x = -90, Scale.x = -1) onu LCC veri koordinat sistemiyle hizalar. Koordinat sistemi hizalaması hakkında ayrıntılar için Unity SDK'ya Giriş belgesindeki "LCC Veri Koordinat Sistemi" bölümüne bakın.

Adım 2: Yüksek Çözünürlüklü Görüntüleme Betiğini Yazma

Aşağıdaki kodla HDRecord.cs adında yeni bir C# betiği oluşturun:

using System.IO;
using System.Collections;
using LCCCore;
using UnityEngine;

public class HDRecord : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;
    public Camera m_camera;

    private LCCCore.Renderer m_renderer;

    private const int HD_WIDTH = 3840;
    private const int HD_HEIGHT = 2160;
    private const string OUTPUT_DIR = @"G:\output";

    void Start()
    {
        m_manager.SetPlatformType(PlatformType.PC);
        m_manager.SwitchRenderPass(ActiveRenderMode.SingleRender);

        if (m_camera == null)
            m_camera = Camera.main;

        m_manager.SetMainCamera(m_camera);

        Debug.Log("[HDRecord] Started, loading data...");
        m_renderer = m_manager.GetRender(this.transform);
        m_renderer.Load(m_FilePath, onProgress, onComplete);
    }

    private void onProgress(float _progress)
    {
        Debug.Log($"[HDRecord] Load progress: {_progress:P1}");
    }

    private void onComplete()
    {
        Debug.Log("[HDRecord] Load complete, enabling 4K record mode...");

        float verticalFov = m_camera.fieldOfView;
        m_manager.SetRecordMode(true, new Vector2(HD_WIDTH, HD_HEIGHT), verticalFov);
        StartCoroutine(CaptureFrame());
    }

    private IEnumerator CaptureFrame()
    {
        // Wait some time to ensure the camera has finished rendering the scene at 4K resolution
        yield return new WaitForSeconds(10);

        RenderTexture tempRT = RenderTexture.GetTemporary(HD_WIDTH, HD_HEIGHT, 24);
        RenderTexture preTarget = m_camera.targetTexture;
        Rect preRect = m_camera.rect;

        m_camera.targetTexture = tempRT;
        m_camera.rect = new Rect(0, 0, 1, 1);

        yield return new WaitForEndOfFrame();
        yield return new WaitForEndOfFrame();
        yield return new WaitForEndOfFrame();

        RenderTexture.active = tempRT;
        Texture2D tex = new Texture2D(HD_WIDTH, HD_HEIGHT, TextureFormat.RGB24, false);
        tex.ReadPixels(new Rect(0, 0, HD_WIDTH, HD_HEIGHT), 0, 0);
        tex.Apply();
        RenderTexture.active = null;

        m_camera.rect = preRect;
        m_camera.targetTexture = preTarget;
        RenderTexture.ReleaseTemporary(tempRT);

        byte[] jpgData = tex.EncodeToJPG(95);
        Destroy(tex);

        if (!Directory.Exists(OUTPUT_DIR))
            Directory.CreateDirectory(OUTPUT_DIR);

        string timestamp = System.DateTime.Now.ToString("yyyyMMdd_HHmmss");
        string filePath = Path.Combine(OUTPUT_DIR, $"HD4K_{timestamp}.jpg");
        File.WriteAllBytes(filePath, jpgData);

        Debug.Log($"[HDRecord] 4K image saved: {filePath} ({jpgData.Length / 1024}KB)");

        m_manager.SetRecordMode(false, new Vector2(Screen.width, Screen.height), m_camera.fieldOfView);
        Debug.Log("[HDRecord] Record mode disabled, restored normal rendering.");
    }
}

Not:

  • Kayıt modu LCC sahnesinin yüklenmesi tamamlandıktan sonra etkinleştirilmelidir. Bu nedenle SetRecordMode(true, ...), onComplete geri çağrısında çağrılır.
  • Kayıt moduna girildikten sonra SDK sabit bir çözünürlük ve dikey FOV ile görüntüleme yapar. Sahnenin hedef çözünürlükte görüntülenmesinin tamamlandığından emin olmak için kareyi yakalamadan önce birkaç kare/saniye beklemeniz önerilir.
  • Yakalama işleminden sonra normal görüntülemeye dönmek için SetRecordMode(false, ...) çağırın.
  • Betik dosyasının adı sınıf adıyla eşleşmelidir (HDRecord.cs, class HDRecord sınıfına karşılık gelir). Aksi halde betik bir GameObject'e eklenemez.
  • Örnekteki HD_WIDTH ve HD_HEIGHT çıktı çözünürlüğünü belirler. Gerektiğinde 2K (2560×1440), 1080p (1920×1080), 720P (1280×720) vb. olarak değiştirilebilir. OUTPUT_DIR çıktı dizinidir; yazma izniniz olan bir yolla değiştirin.

Adım 3: Betiği Ekleme ve Özellikleri Ayarlama

  1. HDRecord.cs betiğini Hierarchy penceresindeki LCCManager GameObject'ine ekleyin.
  2. Inspector penceresinde LCCManager GameObject'ini betiğin Manager özelliğine sürükleyin.
  3. Betiğin File Path özelliğine LCC dosya yolunu girin.
  4. Diğer özellikler (örneğin Camera) serbestçe yapılandırılabilir. Boş bırakıldığında betik otomatik olarak Camera.main kullanır.
HDRecord betiğini ekleyin ve özelliklerini ayarlayın

HDRecord betiğini ekleyin ve özelliklerini Inspector'da ayarlayın

Adım 4: Çalıştırma

Game penceresindeki Play düğmesine tıklayın. Veri yüklemesi tamamlandıktan sonra betik 4K kayıt moduna girer, bir kare yakalar ve JPG görüntü olarak çıktı dizinine kaydeder.

Bu örnekte görüntü 4K olarak oluşturulur ve doğrudan JPG görüntü olarak kaydedilir. Yüksek çözünürlüklü video olarak kaydetmek isterseniz art arda yakalanan yüksek çözünürlüklü görüntüleri video kodlama ile yüksek çözünürlüklü videoya dönüştürebilirsiniz.

Temel Adımlar

Yüksek çözünürlüklü görüntülemeyi uygulamanın temel adımları:

  1. Ana görüntüleme kamerasını SetMainCamera ile ayarlayın ve LCC verisini Renderer.Load() ile yükleyin.
  2. Sahne yüklemesi tamamlandıktan sonra (onComplete geri çağrısında) SetRecordMode(true, renderSize, verticalFov) ile kayıt moduna girin; hedef çözünürlüğü ve dikey FOV değerini belirtin.
  3. Kamerayı RenderTexture ile hedef çözünürlükte görüntüleyin, pikselleri Texture2D.ReadPixels ile geri okuyun ve kaydetmek için bir görüntüye kodlayın.
  4. Görüntüyü aldıktan sonra SetRecordMode(false, ...) ile normal görüntülemeyi geri yükleyin.

Yüksek Çözünürlüklü Görüntü Oluşturma Notları

  • Yalnızca PC/Mac'te desteklenir. SetRecordMode yalnızca PC/Mac platformlarında etkilidir.
  • Kayıt modunda kamera odak uzaklığı sabittir. Kayıt moduna girildikten sonra SDK, iletilen sabit çözünürlük ve dikey FOV ile görüntüleme yapar; değerler artık Camera bileşenine göre değişmez.
  • Normal görüntülemeyi zamanında geri yükleyin. Görüntü alma veya kayıt bittikten sonra normal çözünürlüğü geri yüklemek için SetRecordMode(false, ...) çağrısını yapın; aksi halde sonraki görüntüleme kayıt çözünürlüğünü kullanmaya devam eder.
  • Video belleği ve bellek yüküne dikkat edin. Çözünürlük arttıkça RenderTexture ve Texture2D tarafından kullanılan video belleği/bellek de artar. Yüksek çözünürlüklü görüntüleme için yüksek performanslı bilgisayarlar önerilir.

LCC Unity SDK, kayıt modu API'sini LCCManager üzerinden sunar. API, LCC sahnesinin yüklenmesi tamamlandıktan sonra (yani onComplete geri çağrısında) çağrılmalıdır.

SetRecordMode

// Return value: void
public void SetRecordMode(bool isRecord, Vector2 renderSize, float verticalFov)

Kayıt modunu ayarlar. Kayıt modunda görüntüleme sabit bir çözünürlük ve FOV kullanır; bu, yüksek çözünürlüklü görüntü ve video kaydı için uygundur.

ParametreTürAçıklama
isRecordboolKayıt moduna girilip girilmeyeceği
renderSizeVector2Kayıt çözünürlüğü (genişlik × yükseklik), örneğin (3840, 2160)
verticalFovfloatDikey FOV (görüş alanı)

Kullanım örneği:

// Enter 4K recording mode
m_manager.SetRecordMode(true, new Vector2(3840, 2160), 60f);

// End recording and restore normal rendering
m_manager.SetRecordMode(false, new Vector2(Screen.width, Screen.height), m_camera.fieldOfView);

Notlar:

  • Yalnızca PC/Mac üzerinde desteklenir.
  • Kayıt modunda kamera odak uzaklığı sabittir ve Camera bileşenine göre değişmez.
  • Kayıt bittikten sonra normal görüntülemeyi geri yüklemek için SetRecordMode(false, ...) çağrısını yapın.
  • LCC sahnesinin yüklenmesi tamamlandıktan sonra çağrılmalıdır.

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