Rapid Render: Gerçek Zamanlı 3D Ürün Konfigüratörü
Hızlı Özet
- Rol: Yazılım Geliştirici (core 3D engine, asset pipeline, V-Ray SDK entegrasyonu)
- Süre: Şubat 2021 – Ocak 2022
- Platform: Unity WebGL + Desktop
- Çekirdek Teknolojiler: Unity 2020 LTS, URP, C#, Python, V-Ray SDK, glTF, Draco
- Çıktı Tipleri: Realtime WebGL önizleme, 1080p offline render, JSON sahne export
- Verified Evidence: Open-source: DracoPy Pull Request #17. Performance: WebGL load <3 sn / 60 FPS — test: [device_class], [browser], [scene: tri_count=[tri_count], texture_count=[texture_count], avg_asset_mb=[avg_asset_mb]]. Offline render: V-Ray 1080p ~15 dk — ayarlar: [samples], [denoise], [machine/spec], [render_farm?]
RapidRender 3D Konfigürasyon ve Rendering Motoru
Sugar Technology bünyesinde RapidRender’ın çekirdek 3D engine’ini geliştirdim. Unity’nin realtime rendering kabiliyetlerini V-Ray’in production-quality ray tracing yaklaşımıyla birleştirerek hem etkileşimli tasarım hem de yüksek kaliteli final çıktıları aynı platformda üreten hybrid bir yapı kurdum.
Problem ve Kısıtlar
- WebGL’de ağır sahneleri düşük yükleme süresiyle açma hedefi.
- Heterojen 3D asset formatlarını tek bir standarda normalize etme ihtiyacı.
- Realtime önizleme ile offline photorealistic çıktı arasında görsel tutarlılık beklentisi.
- Render job kuyruklama ve offline pipeline gecikme maliyeti.
- Tarayıcı/GPU çeşitliliği ve performans kısıtları.
Çözüm Özeti
Hybrid bir pipeline tasarladım: Unity realtime sahne üretimi + V-Ray offline render. Unity sahnesi JSON ara formatı üzerinden Python ile V-Ray SDK’ya aktarıldı; glTF/Draco asset pipeline ile web performansı korunurken kalite tutarlılığı sağlandı.
Mimari Genel Bakış
- Unity scene -> JSON interop -> Python -> V-Ray SDK -> 1080p render output.
- WebGL runtime: Unity build + asenkron asset streaming + kontrol paneli entegrasyonu.
- JSON serialization ve versiyonlama ile sahne şeması geriye dönük uyumlu tutuldu.
Asset Pipeline (glTF/glb + Draco)
- Farklı üretici formatları glTF/glb’ye normalize edildi; UV unwrap, texture baking ve metadata enjeksiyonu otomatikleştirildi.
- Pygltflib tabanlı validasyon ve kural setleriyle veri tutarlılığı sağlandı.
- UnityGLTF ile asenkron yükleme ve progressive streaming uygulandı.
- Draco sıkıştırma ile WebGL teslim boyutu optimize edildi.
Performans ve Optimizasyon
- Shader Graph ve custom HLSL shader’larla materyal, cam ve outline efektleri üretildi.
- Draw call batching, GPU instancing, texture atlasing ve LOD stratejileri uygulandı.
- Unity Profiler + Frame Debugger ile iteratif performans tuning yapıldı.
V-Ray Pipeline (Render Jobs)
- Unity sahnesi JSON olarak export edildi; Python ile V-Ray SDK’ya aktarıldı.
- Kamera/ışık/materyal eşlemesi korunarak offline çıktı tutarlılığı sağlandı.
- Adaptive sampling ve denoising ile kalite/süre dengesi kuruldu.
- Render job’lar kuyruklanarak otomasyon script’leriyle yönetildi.
Open-Source Katkı (Verified Evidence)
DracoPy’ye texture coordinates ve normal desteklerini ekleyen PR #17’yi hazırladım; katkı open-source toplulukta kabul edilerek ana dalda birleştirildi.
Etki / Sonuçlar
- WebGL sahne yükleme süresi — <3 sn — bağlam: [device_class], [browser], [scene: tri_count=[tri_count], texture_count=[texture_count], avg_asset_mb=[avg_asset_mb]], ölçüm: [profiling_tool].
- Realtime akıcılık — 60 FPS — bağlam: [device_class], [resolution], [scene: tri_count=[tri_count]], ölçüm: [profiler].
- Offline render süresi — 1080p ~15 dk — ayarlar: [samples], [denoise], [machine/spec], [render_farm?].
- Draco sıkıştırma etkisi — (metrik eklenebilir: paket boyutu azalma oranı) — ölçüm: [build_size_report].
- Asset doğrulama hataları — (metrik eklenebilir) — ölçüm: pipeline validation logları.
Tech Stack (Kategoriler)
- Engine: Unity 2020 LTS, URP, Shader Graph
- Diller: C#, Python 3.8, Cython
- Rendering: V-Ray 5, V-Ray SDK, HDRI, IES
- Formatlar: glTF 2.0, glb, Draco, Assimp
- Web: WebGL, WebAssembly, gzip/Brotli, CDN
- Veri/Interop: JSON, Newtonsoft.Json
- Araçlar: Visual Studio, PyCharm, Unity Editor, Git
SSS
Neden Unity + V-Ray hibrit yaklaşımı?
Realtime etkileşim ve offline photorealistic çıktı ihtiyacını aynı platformda karşılamak için.
Neden glTF/glb seçildi?
Web uyumluluğu, geniş araç desteği ve stabil standardizasyon sağladığı için.
Draco neden kritik?
WebGL’de yükleme süresini ve paket boyutunu düşürmek için.
WebGL’de 60 FPS nasıl korundu?
Batching, instancing, LOD, shader optimizasyonu ve profiler tabanlı tuning ile.
Render farm job orchestration nasıl yönetildi?
Python script’leri ve job queue yaklaşımıyla önceliklendirme/yeniden deneme akışları kuruldu.
Versiyonlama ve migration nasıl yönetildi?
JSON schema versioning ve otomatik migration script’leriyle.
Asset pipeline kalitesi nasıl güvence altına alındı?
Pygltflib validasyonları ve metadata kurallarıyla.
İlgili Projeler
- Kayra Export: Marketplace & E-Ticaret Platformu
- ABC Logistics: Gerçek Zamanlı GIS Takip Platformu
- Dunelm: LiDAR Destekli AR “View-in-Room” Deneyimi
Proje Künyesi
- Şirket: Sugar Technology
- Pozisyon: Yazılım Geliştirici
- Sektör: Mimarlık & İç Tasarım Teknolojileri
- Platform: Unity WebGL & Desktop
- Çekirdek Teknolojiler: Unity 3D, C#, Python, V-Ray
- 3D Formatları: glTF/glb, Draco Compression
- Open-Source: DracoPy Texture Coordinates & Normals Support (PR #17)
- Süre: Şubat 2021 – Ocak 2022
- Konum: İstanbul, Türkiye
- GitHub Contribution: DracoPy Pull Request #17