3D grafik gösterimi için standart bir şartname var mı?


12

Bilgisayar grafikleri üzerine bir kitap okuyorum ve bir noktada .dat dosyasından oluşturulmuş bir 3D model gösteriyor.

İşte .dat dosyası oluşturmak için birkaç kural:

  • Tepe konumlarının / yüzlerinin bir listesinden yapılmıştır
  • Saat yönünün tersine yazılmıştır
  • Yüzler nokta (.) İle bitiyor
  • Kesirler de kabul edilebilir

Bunun standart olup olmadığını ve bir 3D nesneyi tanımlamanın standart yolu nedir bilmek istiyorum.

Ayrıca, bir belirtim varsa, kim tanımladı ve nerede bulabilir?

Yanıtlar:


8

Dosya formatları hakkında konuşurken, bir 3B model / geometri ile ilgili bazı verilerin devam etmesinden bahsediyoruz. Kalıcı 3D geometri için dosya formatlarında evrensel bir standart yoktur. Diğerlerinden daha baskın olan sadece birkaç biçim vardır.

Tıpkı görüntü dosyası formatlarında olduğu gibi, PNG'ler ve JPEG'ler bugün en yaygın formatlardır, ancak birini veya diğerini kullanan uygulamalar arasında evrensel bir anlaşma yoktur. Her uygulama kendi amaçları için en uygun olanı kullanır.

Aynı şey 3B veri depolayan dosya formatlarında da olur. Her 3B modelleme yazılımı genellikle bir veya bir dizi tercih edilen biçime sahip olacaktır. Çoğu, yalnızca aracın belirli sürümüyle çalışan özel biçimler tanımlar. Bu, uygulamanın iç işleyişini basitleştirmekten veya dosyaları daha hızlı yüklemekten, kullanıcıyı belirli bir araca bilerek bağlamaya kadar birçok nedenden kaynaklanabilir.

.datAçıkladığınız bu biçim, kitabın yazarları tarafından oluşturulan ve muhtemelen basitlik göz önünde bulundurularak tasarlanmış özel bir biçimdir. Wavefront OBJ formatına benzer bir metin dosyası gibi görünüyor , bu da şimdiye kadar biraz modası geçmiş olsa da, statik geometri depolamak için çok popüler bir format. Biçimin 3D model biçimlerinin .OBJolduğu söylenebilir .BMP.

Diğer popüler 3D model formatları şunları içerir:

Ve bircok digerleri. Burada daha genel açıklama .

Ayrıca başlangıçta bunların bir 3B modeli veya geometriyi çevrimdışı depolamada saklama / sürdürme biçimleri olduğunu söylemiştim. Bu, onları kullanan uygulamaların verileri, dosyayla aynı düzeni kullanarak dahili olarak bellekte depolayacağı anlamına gelmez (ve genellikle böyle değildir). Normalde, bu tür veriler, örneğin ekranda görüntülenene kadar bir dosyadan yüklendikten sonra çok fazla işleme tabi tutulur.


1
"Normalde, bu tür veriler, örneğin ekranda görüntülenene kadar bir dosyadan yüklendikten sonra çok fazla işleme tabi tutulur." orijinal biçimin ne olduğuna bakılmaksızın ekrana itilmeden önce bir görüntü piksel dizisine dönüştürülür . (donanım sıkıştırmasına rağmen)
cırcır ucube

@ratchetfreak ancak 3D formatlarının tüm kullanımları ekranda bitmiyor.
joojaa

İkili biçim olan BMP, OBJ için iyi bir karşılık değildir. Daha iyi bir eşleşme , metinsel olan XPM olacaktır .
Ruslan

5

3D modeller için standart bir format yoktur. Bazı yaygın olanlar glampert'in cevabında listelenmiştir, daha fazlası bu SE cevabında bulunabilir .

Kendi biçiminizi kendi amaçlarınız için tasarlıyorsanız (aslında oldukça yaygın bir şeydir), model verilerinizi nasıl kullandığınıza bakmak için iyi bir ilk adımdır. Örneğin, oluşturmaya odaklanıyorsanız, grafik kitaplığının beklediği biçimi kullanabilirsiniz. Yazılımınızın yükleme süresini olabildiğince azaltmak istiyorsanız, ayrıştırma ve işlem miktarını azaltmak yardımcı olabilir. Motorunuzun beklediği biçimde bir dosya çıktısı verebilen basit bir yardımcı program, dosyayı belleğe eşleyebileceğiniz ve ardından grafik kitaplığınıza bir işaretçi geçirebileceğiniz anlamına gelir.

Öte yandan, oluşturma işleminiz ana endişeniz değilse ve düzenleme sizin için daha önemliyse, kanatlı kenar gibi düzenlemeye daha uygun bir biçim düşünebilirsiniz . Genel amaçlı bir model formatı kullanmak bir projenin başlangıcında amaçlarınıza uygun olabilir, ancak sonuçta 3D modellerle yapabileceğiniz birçok şey vardır ve her formatın kendi faydaları ve dezavantajları vardır, böylece sizin için en uygun olanı seçebilirsiniz .


4

3D modellerin depolanmasını tanımlayan tek bir standart yoktur. Grafik API'sı yalnızca, hangi köşelerin bir üçgen oluşturduğunu gösteren köşeler ve dizinler tarafından tanımlanan üçgenleri önemser.

Birçok şirket, farklı özellik ve hedeflerle kendi model formatlarını oluşturmuştur. En basitlerinden biri .obj (Wavefront Nesnesi) biçimidir. Köşe konumları, normaller ve doku koordinatları ve üçgenleri oluşturan indekslerin listesini içerir. Ayrıca dokular, dağınık ve aynasal renkler gibi bazı temel özelliklere sahip malzemeler içerir.

Autodesk tarafından kullanılan .fbx (FilmBox) gibi daha gelişmiş model biçimleri, modelleme yazılımı için gereken ek bilgileri içerir. Bunlar, kemikler, hiyerarşiler ve kaplamalar için kullanılan daha fazla köşe özelliğini içerebilir. Bu nedenle "standartlar" vardır, ancak her program farklı bilgi gerektirebileceğinden gerçekte birleşik değildir. Ancak wavefront çok iyi bir seçimdir, çünkü birçok modelleme uygulaması ona ihracat yapabilir ve bir ithalatçı yazmak (bulmak) kolaydır.


3

Diğer yanıtların da belirttiği gibi, 3D verileri depolamak için birçok rakip format vardır.

Bununla birlikte, bu sorunun sorulmasından bu yana, "standart" tan bekleyebileceğiniz birçok özelliğe sahip belirli bir biçim ortaya çıktı: glTF biçimi .


glTF, Khronos Grubu (OpenGL ve Vulkan'ın arkasındaki organizasyon) tarafından yayınlanan ve Collada'daki kusurları telafi etmeyi amaçlayan bir 3D standardıdır.

Başlıca avantajları:

  • Ağ üzerinden ayrıştırmayı, serileştirmeyi, okumayı ve göndermeyi çok kolaylaştıran JSON tabanlıdır.

  • Standartta çok az belirsizlik veya fazlalık vardır (bazı * olsa da). Birimler, ellilik, doku koordinat işaretleri vb. Standartlaştırılmıştır; her şey her zaman dizin tabanlıdır, yani veri yedekliliği yoktur. Bu, bir ithalatçı yazmayı gerçekten kolaylaştırır.

  • Dokümantasyon çok temiz ve eksiksiz.

  • Verilerin düzeni OpenGL / WebGL iş akışlarını temel alır, yani içe aktarılan modeller çok az tesisatla motor içi veri olarak kullanılabilir.

  • Standart Açık Kaynak'tır ve şartname Github'da barındırılmaktadır. Bu, standardın her zaman mevcut olacağı, ücretsiz olarak kullanılabileceği ve geliştirme sürecinin herkes tarafından görülebileceği anlamına gelir. Muhalefetle, kapalı kaynak standartlarının geleceğine, doğası gereği tehlikeli olan özel çıkarlar karar verir.

  • glTF, Khronos (Adobe, Google, Microsoft, Mozilla, Unity) aracılığıyla birçok endüstri devi tarafından desteklenmektedir; Blender tarafından ihraç edilebilir (Maya'dan ihracat hala resmi olarak desteklenmemektedir) ve Unreal, Unity ve Godot tarafından ithal edilebilir.

Ayrıca bakınız:

* Değişken elitlik tanjantlarının anlamsız olduğundan eminim.


2

Diğer cevaplara eklemek için aslında iki tür format vardır, ara ve çalışma zamanı. Ara formatlar (örnek: COLLADA) daha ayrıntılı / yavaştır ve araçlar arasında nihayetinde belirli bir uygulama / donanım için optimize edilmiş özel çalışma zamanı formatına dönüştürülür. Performansı fazla önemsemeyen basit uygulamalar doğrudan ara formatları kullanabilir.

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.