-
Giriş
- Oyunlarda dış hat işleme, estetik nedenler veya oyun oynanışını desteklemek için sıklıkla kullanılır. Örneğin, oyun Sable bu teknikle çizgi roman benzeri bir stil oluştururken, The Last of Us oyununda düşmanları vurgulamak için kullanılır.
-
Rim etkisi
-
Yöntem
- Fresnel efektini kullanarak nesnenin kenarlarında dış hat işlenebilir; bu etki, nesnenin kenarlarında daha belirgindir.
-
Uygulama
- Fresnel efektini uygulayan özel bir shader ile nesnenin dış hatları render edilir. Bu yöntem, küre veya kapsül gibi pürüzsüz nesneler için uygundur; ancak küp gibi keskin nesneler için uygun değildir.
-
Vertex dışa itme
-
Yöntem
- Orijinal nesnenin bir kopyasını kullanarak dış hat oluşturulur. Kopyanın vertexlerini genişleterek orijinalden daha büyük hale getirilir.
-
Ekstrüzyon yönü
- Vertexlerin taşınacağı yönü seçerek nesnenin boyutu ayarlanır. Vertexler, nesne uzayında taşınarak dış hat oluşturulur.
-
Ekstrüzyon alanı
- Vertexleri nesne uzayında taşımakla clip uzayında taşımak arasında seçim yapılabilir. Clip uzayında yapılan taşıma daha homojen bir dış hat sağlar.
-
Maskeleme
- Kopyalanmış mesh'in yalnızca arka yüzlerini bırakmak için yüzeyi keskin hale getirme yöntemiyle ön yüzü kaldırılır, böylece sadece dış hat görünür olur.
-
Blur buffer
-
Yöntem
- Nesnenin siluetini bir tamponda render eder, ardından bunu bulanıklaştırarak dış hat oluşturur.
-
Siluet tamponu
- Nesneyi tek bir renk ile render ederek siluet tamponu oluşturulur.
-
Bulanıklaştırma geçişi
- Siluet tamponunu genişletmek için blur pass kullanılır. Kutu bulanıklığı veya Gaussian blur ile performans iyileştirilir.
-
Dış hat geçişi
- Blur uygulanmış siluet orijinal sahne ile birleştirilerek dış hat oluşturulur.
-
Jump Flood algoritması
- Jump Flood algoritması, dış hatları düşük performans maliyetiyle geniş şekilde render etmek için kullanılır.
-
Kenar tespiti
-
Yöntem
- Tüm ekran geçişi kullanılarak sahnedeki süreksizlikler algılanır ve dış hat render edilir.
-
Süreksizlik tespiti
- Roberts cross veya Sobel operatörleriyle süreksizlikler tespit edilir.
-
Süreksizlik kaynağı
- Derinlik, normal ve renk dokularındaki süreksizlikler tespit edilerek dış hatlar oluşturulur.
-
Kenar tespitini ayarlama
- Süreksizlik tespiti için kullanılan eşik değeri ayarlanarak artefaktlar kaldırılır.
-
Özel süreksizlik kaynağı
- Dış hatları kontrol etmek için özelleştirilmiş bir süreksizlik kaynağı sağlanabilir.
-
Sonuç
- Dış hat çizecek beş yöntem vardır; bunlar performans, görsel doğruluk ve manuel ayar arasında bir denge sağlar.
1 yorum
Hacker News Yorumları
Jump Flood Algorithm hakkındaki makaleyi çok ilginç buldum; piksel düzeyinde farklı yaklaşımlar düşünmek gerçekten keyifli.
Modeli tek bir renkte renderlayıp kenar algılama ile kontur çıkarma yolunu öneriyor. Ek bir render pass gerekiyor.
Stilize edilmiş 3D grafikler için bir Ar-Ge projesi üzerinde çalışmak ilgimi çekiyor. Çözülmemiş birçok soru var.
Astral Divide oyununda blur buffer benzeri bir teknik geliştirdiler. Kenarları anti-aliasing ile oluşturuyorlar. Performans açısından ucuz ve uygulanması kolay.
Teknik sanatlara tutkulu ve Godot'un compute shader pipeline'ının ilerlemesini özlüyorlar; mevcut compositor plugin ayarları biraz karmaşık.
Unity'nin fiyat tartışması sonrası geliştiricilerin Unreal ve Godot'a geçip geçmediğini merak ediyorum.
VR uygulama geliştirmeden web geliştirmeye geçtim ama 3D grafik, çarpışma ve shader işindeki o sihirli hissettiğim şeyleri özlüyorum.
Kenar algılama render sonuçları çok tatmin edici; bir sahnesi gibi görünüyor, tıpkı Hollanda çizgi romanı Franka'dan bir kare gibi.
Mars First Logistics geliştiricisinin önerdiği kenar algılama tekniğiyle ilgili harika bir not buldum.
Kontur çizimi için basit bir teknik önerisi