OpenGL ile 3B animasyon yazılımında oluşturma arasındaki fark


16

OpenGL ve benzeri ile "gerçek zamanlı" 60 FPS oldukça şaşırtıcı görünümlü şeyler yapabilirsiniz. Ancak, aynı sahnenin bir videosunu Maya veya 3ds Max'te yapmaya çalışırsam, aynı çözünürlük ve FPS olmasına rağmen çok daha uzun sürebilir.

Bu iki tür oluşturma neden aynı sonuç için farklı zaman süreleri alıyor?

Not: Evet, 3D animasyon yazılımının gerçek zamanlı olarak yapılabileceklerden çok daha üstün görüntüler üretebileceğini anlıyorum. Fakat bu soru için eşit karmaşıklıkta bir sahneye atıfta bulunuyorum.


1
Kısa cevap, OpenGL'nin kısayollar almasıdır.
user253751

Yanıtlar:


9

Temel fark, OpenGL ile bir video oyununda, temelde sahnenin hangi bölümünü gördüğünüzü belirlemeye özen gösteren rasterleştirme adı verilen bir işleme sahip olacağınızdır .

Hızlı olması gerekir, böylece gerçek zamanlı olarak deneyimleyebiliriz.

Bu nedenle algoritma birkaç basit adım gerçekleştirir.

  • sahnenin belirli bir kısmının benim görüşümde olup olmadığını kontrol et

    Frustum Toplama

  • önünde bir derinlik tamponu kullanılarak oluşturulması gerekebilecek bir şey olup olmadığını kontrol edin

    Derinlik Tamponu

  • çizdiğimiz nesneleri sipariş et

  • onları ekrana yansıtarak çizin
  • onları dokular / gölgelendiriciler / ışıklar / ...

Öte yandan bir oluşturma yazılımı (Blender / Max / Maya / ...) büyük olasılıkla bir çeşit raytracing kullanır

Bu, daha yüksek bir gerçekçilik derecesi elde etmek için çok daha fazla matematik içerir. Temel olarak aynı şekilde çalışır:

  • önünde bir kamera ve bir görüntü düzlemi oluşturun
  • her pikselden bir ışın (veya birden çok örnek ışın) çekin
  • ışının sahnede herhangi bir şeye çarpıp çarpmadığını kontrol et
  • en yakın vuruş sonunda pikselde çizilecek vuruş (derinlik tamponu gibi)
  • verilen nokta için ışığı hesapla Işık Hesaplama

....

Raytracing'in kalktığı nokta burası burada listelemeyi bırakacağım.

Sadece bir noktanın vurulup vurulmadığını kontrol etmek yerine, çoğu raytracer şimdi hesaplamaya başlar:

  • bir yüzeyin nüfuz ettiği ışık miktarı
  • ne kadar ışık yansıtılır
  • bir ışık kaynağına çarpana kadar isabet noktasından sahneye yeni ışınlar attı

Sahnedeki belirli bir noktanın ışığını hesaplamak için kullanılabilecek farklı gerçekçilik derecelerine sahip bir ton teknik vardır.

TL; DR Öz, bir ışın izleyicinin aydınlatma söz konusu olduğunda çoğunlukla fiziksel olarak doğru olmaya çalışması ve bu nedenle piksel başına (bazen binlerce ışın çekmesi) daha fazla hesaplamaya sahip olması ve diğer yandan oyunların hızlarını daha basit ışık hesaplamaları ve gerçekçi görünmesini sağlayan çok sayıda gölgelendirici püf noktaları ile ekranın daha büyük parçalarını çizmek.


7

Elmaları portakallarla karşılaştırıyorsunuz

Oyun, modelleme uygulamanızdaki görünüm bağlantı noktası gibidir. Görünümü oluşturmak için görünüm penceresini kullanabilirsiniz ve aynı 60 fps hızları elde edersiniz.

Maya veya 3DS Max gibi modelleme yazılımlarından çok iyi olan gerçek zamanlı grafikler elde edememenizin bir nedeni yoktur. Birçok oyun ile eşit sonuçlar. Oyunlarda olduğu gibi görünüm gölgelendiricileri var. Çerçeveleri diske izin verdiği kadar hızlı parçalayan bir görünüm oluşturma seçeneği de var (Maya'dan 30 fps'de full HD renderlar yaptım). Yapmanız gereken tek şey sağlanan yazılım raytracer'ları kullanmayı bırakmak.

Yine de bazı farklılıklar var. Birincil fark, bir kullanıcı olarak oyun geliştiricileri kadar bir şeyleri optimize etmemenizdir (optimizasyon kitaptaki tüm hileleri kullanıyor). İkincisi, animasyon ilkelleriniz CPU üzerinde çalışıyor çünkü esnekliğe ihtiyacınız var. Oyunlarda optimizasyonlar yapılabilir. Sonuçta bir programlama ekibinin yanında olmamanız için ödeme yaparsınız.

Aslında pek çok şey önceden hesaplanmış olabilir, bu yüzden çok daha hızlı değil daha iyi organize edilmişlerdir. Dolaylı aydınlatmanızı pişirmek her gün pişirilmemiş sonuçları yenecektir.

Işın izleyiciler neden daha yavaş?

Onlar değil *, sadece bir ışın izleyici üzerinde daha fazla iş yapma eğilimindedir çünkü kolay. Özelliklerine göre hesaplama döngülerinde çok daha yavaş değildirler. Örneğin, ikincil ışınları dökmek için bir ışın izleyiciye gerek yoktur (bu durumda ışın izleyicileri geometriyi keser, hatta yüklemez, aslında zihinsel ışın bunu yapar). Bu genellikle yapılır, çünkü bunu yapmak önemsizdir ve bu, ışın izleyicilerin açık avantajıdır. Hatta bazı durumlarda CPU üzerinde çalışacak şekilde yapılandırabilirsiniz. Sadece farklı şeyler için optimize edilmiştir:

  1. Sadece kareler değil tüm veriler diske veri yayar. Çoğu oyunun hızını anında bozacak bir şey.

  2. Genel donanım üzerinde çalışmak. GPU için optimize ettiğinizde GPU, bazı şeyler için çok daha hızlıdır. Ancak tüm yükler için çalışmaz, aslında bir Intel CPU, genel olarak hesaplamada GPU'dan daha hızlıdır. GPU, CPU'nun olmadığı büyük ölçüde paraleldir. GPU'da kalabilir ve aktarımı en aza indirip GPU mimarisi için optimize edebiliyorsanız mimari kazanır.

Böylece esneklik ve kullanım kolaylığı için ödeme yaparsınız. Ama evet, hem Maya hem de Max'in aşırı yaşlılık yaşadığını kabul edeceğim. Böylece daha hızlı olabilirler.

TL; DR Fark çoğunlukla optimizasyonda (çok sayıda püf noktası okuyun) ve mevcut harici kaynaklarda.

Not: Bunun daha fiziksel olarak doğru olması nedeniyle bir yanlış kanı var. Kesinlikle olabilir, ancak ışın izleyici, ortalama oyununuzdan veya başka bir hesaplamadan fiziksel olarak daha doğru değildir. Aslında pek çok oyun gerçekten iyi modeller kullanır, ancak birçok modelci kullanmaz.

* Bkz. Http://www.graphics.cornell.edu/~bjw/mca.pdf


2
Üzgünüm, ama bu tamamen yanlış. OpenGL ve DirectX, hassas ışın izlemeden doğal olarak daha hızlı olan yaklaşık değerleri kullanır. Hızlandırılmış 3D grafiklerin asıl amacı, gerçekçilik ve hız arasında denge sağlayan, en pratik kullanımlar için yeterince iyi görünen algoritmalara sahip
olmaktır

2
@IMil OpenGL ışın izleme için kullanılabilir. Daha hızlıdır çünkü söz konusu donanım için optimize edilmiştir. Ama Maya'nın izini sürmesine gerek yok. Maya ve Max, oyununuz kadar openGL ve directX'i de kullanabilir. Mayas (ve 3ds) görüntü alanı opengl veya directX (seçiminiz). İşlemcinizin belirli paralel işleme yüklerinde daha yavaş olması başka bir şeydir. Yani cevap duruyor. Maya'nın standart ayarları, standart bir tarama çizgisinden daha gerçekçi değildir.
joojaa

5

Gerçek Zamanlı Önizleme

Endüstrinin VFX tarafında çalışmak, üretim renderlemesinden değil, gerçek zamanlı görünüm önizlemelerinden bahsediyorsanız, Maya ve 3DS Max genellikle OpenGL'yi (veya muhtemelen DirectX'i kullanır).

VFX animasyon yazılımı ve oyunlar arasındaki temel kavramsal farklılıklardan biri, yapabilecekleri varsayımların seviyesidir. Örneğin, VFX yazılımında, sanatçının yüz binlerce ila milyonlarca çokgeni kapsayan tek ve kesintisiz bir karakter ağı yüklemesi nadir değildir. Oyunlar, bir tekne yükü basit, optimize edilmiş kafeslerden (her biri binlerce üçgen) oluşan büyük bir sahne için en uygun hale getirme eğilimindedir.

Üretim İşleme ve Yol Takibi

VFX yazılımı, aynı zamanda gerçek zamanlı önizlemeye değil, ışık ışınlarının her seferinde bir tane simüle edildiği üretim sunumuna vurgu yapar. Gerçek zamanlı önizleme genellikle yüksek kaliteli üretim sonucunun bir "önizlemesi" dir.

Oyunlar son zamanlarda gerçek zamanlı alan derinliği, yumuşak gölgeler, dağınık yansımalar vb. ışık ışınlarını simüle etmek yerine yansımalar).

içerik

Bu konuya dönersek, bir VFX yazılımı ve oyun arasındaki içerik varsayımları çok farklıdır. Bir VFX yazılımının ana odağı, olası her türlü içeriğin oluşturulmasına izin vermektir (en azından bu idealdir, ancak pratikte genellikle hiçbir yere yakın değildir). Oyunlar çok daha ağır varsayımlarla içeriğe odaklanır (tüm modeller binlerce üçgen aralığında olmalı, sahte detaylara normal haritalar uygulanmalı, aslında 13 milyar parçacık olmamalı, karakterler aslında kas tarafından canlandırılmamalıdır kuleler ve gerginlik haritaları, vb.).

Bu varsayımlar nedeniyle, oyun motorları yüksek, etkileşimli kare hızını sürdürmelerini sağlayan frustum ayıklama gibi hızlandırma tekniklerini daha kolay uygulayabilir. Bazı içeriklerin önceden durağan, pişmiş olacağına dair varsayımlar yapabilirler. VFX yazılımı, içerik oluşturmada çok daha yüksek esneklik göz önüne alındığında bu tür varsayımları kolayca yapamaz.

Oyunlar Daha İyi Yap

Bu tartışmalı bir görüş olabilir, ancak oyun endüstrisi VFX yazılımından çok daha kazançlı bir endüstridir. Tek bir oyun için bütçeleri yüz milyonlarca dolara yayılabilir ve birkaç yılda bir yeni nesil motorları piyasaya sürmeyi göze alabilirler. Ar-Ge çabaları şaşırtıcı ve her zaman yüzlerce oyun başlığı yayınlanıyor.

VFX ve CAD yazılımı ise kârlı bir yere yakın değil. Ar-Ge çoğu zaman akademik ortamlarda çalışan araştırmacılar tarafından dışarıdan tedarik edilmektedir ve endüstrinin çoğu, yıllar önce yayınlanmış teknikleri yeni bir şeymiş gibi uygulamaktadır. Dolayısıyla, AutoDesk kadar büyük şirketlerden gelen VFX yazılımı, en son AAA oyun motorları kadar "son teknoloji" değildir.

Ayrıca çok daha uzun bir mirasa sahip olma eğilimindedirler. Maya, örneğin 17 yaşında bir üründür. Çok yenilendi, ancak çekirdek mimarisi hala aynı. Bu, Quake 2'yi almaya ve 2015'e kadar güncellemeye ve güncellemeye devam etmeye benzer olabilir. Çabalar harika olabilir, ancak muhtemelen Unreal Engine 4 ile eşleşmeyebilir.

TL; DR

Her neyse, bu konunun bu tarafını biraz ele alıyor. Görünüm pencerelerinde veya prodüksiyon sunumunda gerçek zamanlı önizlemeler hakkında konuşup konuşmadığınızı anlayamadım, bu yüzden her ikisini de ele almaya çalıştım.


Bu aynı zamanda bir zaman meselesidir. 60 kare / saniyede render ve kabul edilebilir sonuçlar elde etseniz bile, optimize etmek için nadiren tava. Her kare için 3 dakika sürdüğünü ve oluşturulacak 200 çerçeveniz olduğunu varsayalım. Bir gölgelendirici yazıcı kiralayarak ve optimize ederek 60 fps elde edebilirsiniz, ancak bu en az bir veya iki gün sürüyor. Ancak 3 dakikada 200 kare yalnızca 10 saat sürer, böylece bu maliyetten tasarruf edersiniz. Uygulamada daha fazla donanım satın almak ve bu konuda çok fazla endişelenmemek daha ucuzdur. Oyunlar bu yaklaşımı alamaz.
joojaa

@joojaa Yine de biraz daha karmaşık. Maya için gerçekten iyi gerçek zamanlı gölgelendiriciler yapmak deneyimli bir gölgelendirici geliştiricisinden bile (daha az kazançla) bir yıl kadar sürebilir, çünkü orada düğüm sisteminin esnekliği üretim renderlemeye yöneliktir. Bu genel amaçlı gölgelendirici düğümleri UE 4'ün etki aralığını yakalayan gerçek zamanlı bir gölgeleme sistemine dönüştürmek için tersine mühendislik zihniyeti ve yeni tür GLSL / HLSL kod oluşturma tekniği (bir meta programlama sistemi gibi) gerekir. , ör.
Dragon Energy

@joojaa UE 4'ün gölgelendirici motoru doğrudan çok yakın bir PBR zihniyetine (Disney'in PBR gölgelendiricisinin çok küçük bir alt kümesi) yöneliktir. Malzeme sistemini bile Maya'nın malzeme sistemi gibi hiç bir şeyle (raytracing için tasarlanmış) başlamak yerine hızlı, gerçek zamanlı bir amaç için tasarladılar. UE 4'ün en parlakı VP 2.0'da çalışsa bile, bu tür şeyler yapmayı amaçlamayan bir tasarıma karşı aynı sonuçları elde etmek için muhtemelen yıllarca gece gündüz çalışmak zorunda kalacaklardı.
Dragon Energy

ancak bu bir VFX uygulamasında bu boru hattına sahip olsanız bile bir kerelik bir maliyettir, her sahnenin bu ekstra optimizasyona ihtiyacı olabilir. Maya kullanıcısının UDK'da aynı gölgelendirici geliştirme platformu için oluşturmamasının bir nedeni yoktur.
joojaa

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.