FBX tarafından üretilen kötü Collada nasıl düzeltilir?


10

FBX dosyalarını Panda3D'ye aktarabilmek için FBX dosyalarını yüklemek ve Collada dosyaları olarak kaydetmek için FBX SDK'yı (2011.3.1) kullanmaya çalıştım. Maalesef sonuçta elde edilen Collada dosyaları, aralarında çeşitli nedenlerle kullanılamaz:

  • Maya'ya özgü ekstra bir teknik var

diffüz

<diffuse>
    <texture texture="Map__2-image" texcoord="CHANNEL0">
        <extra>
            <technique profile="MAYA">
                <wrapU sid="wrapU0">TRUE</wrapU>
                <wrapV sid="wrapV0">TRUE</wrapV>
                <blend_mode>ADD</blend_mode>
            </technique>
        </extra>
    </texture>
</diffuse>
  • Dosyada başka herhangi bir yere başvurulmayan bir texcoord kanal adı atar (önceki kod örneğinde, hiçbir geometri "CHANNEL0" kullanmaz ...)

  • Her çokgen iki kez ihraç edilir, ilk kez temel bir malzeme ile (sadece dağınık renk, aynasal renk, vb.)

Her neyse, ortaya çıkan Collada dosyası OpenCOLLADA veya Panda3D'nin "dae2egg" ile doğru bir şekilde açılamaz.

Herkes nasıl "düzeltmek" ve OpenCOLLADA gibi yaygın ve saygın Collada ithalatçıları tarafından anlaşılabilir hale getirmek konusunda herhangi bir deneyime sahip?


3
Bu Collada ile bulduğum büyük bir problem: aslında destek talebinde bulunan rastgele araçlar arasında veri taşımak için çok kullanışlı değil, çünkü bu aşırı genelleştirilmiş bir format. Neredeyse tüm şemaların verilerini içerebilir ve kullandığınız belirli ithalatçının gerçekten işleyemeyeceği geçerli, standart uyumlu bir Collada dosyası olabilir. İthalatçı / ihracatçı üzerinde daha fazla kontrole sahip olduğunuzda veya istediğiniz Collada'yı üretmenin araçları olduğunda, veri alışverişi biçimi olarak marjinal olarak daha kullanışlıdır.

1
@Josh: En azından kapalı ikili biçimlerin aksine, insanlar tarafından okunabilir. En azından Collada ile, bir veri kümesinden diğerine çeviri yapabilen araçlar ve komut dosyaları oluşturabilirsiniz. Birlikte çalışma, ekstra çalışma gerektirse bile en azından mümkündür .
Nicol Bolas

Yanıtlar:


2

AC # aracı burada arkadaşınız - giriş dosyası üzerinde yinelenen, sevmediğiniz parçaları tespit eden ve geri yazmadan önce bunları belgeden kaldıran (veya düzenleyen) .NET System.Xml çerçevesini kullanarak hızlıca bir şeyler yazabilirsiniz. tekrar. Etkili bir şekilde XSLT bunu yapar, ancak pratikte her zaman aynı şeyi yapmak için şifreli XSLT sözdizimini bulmaktan ziyade dönüşümü tanımlamak için C # kodu yazmanın daha kolay olduğunu gördüm.

Yapmanız gereken şey, 'kötü' vakalara bakmak ve ortak yönlerini tespit etmektir. Örneğin, texcoord = "CHANNEL0" kullanan bir dokuya sahip tüm yaygın tekniklerin bulunması kolay olur. Sadece tüm nesneleri tekrarlıyorsunuz ve her nesne için tüm tekniklerini rahatsız edici nitelik açısından kontrol ediyorsunuz. Bulamazsanız, düğümü çıktı belgesine ekleyin ve devam edin. Düğümü tanımıyorsanız, çıkışa ekleyin ve devam edin. Bunu bulursanız, çıktı belgesine eklemek için uğraşmayın, etkin bir şekilde silinecektir.

Yinelenen çokgenleri tespit etmek biraz daha zordur, çünkü her bir çokgen çiftini denklik için analiz etmeniz gerekir. "Düz renkli çokgenler, sadece dokulu çokgenler umurumda değil" gibi bir kurala karar verebiliyorsanız çok daha basit olurdu, o zaman uygun çokgenleri atabilirsiniz.

Ancak aslında kopyaları dışarı atmak bana çok garip geliyor; geometrinin tekrarı bariz nedenlerden dolayı büyük bir hayır-hayır, bu yüzden FBX'in bunu yapmasına şaşırdım. Collada'yı sadece Maya / Max ile kullandım, bu yüzden FBX'in ürettiklerine kefil olamazdım. Ama şunu soracağım, FBX dosyasında gerçekten yinelenen geometri olmadığından iki kat emin misiniz?


Cevabınız için teşekkürler. Tabii ki kendi ithalatçımda düzeltebiliyordum, sadece standart bir düzeltmeye sahip olabilmem ve belki de henüz keşfetmediğim sorunlar için düzeltmeler uygulayabilmem için aynı problemle karşılaşmış ve düzeltilmiş birini arıyordum.
David

0

Farklı bir ihracatçı bulma veya yazma, ya da (Collada dosyaları sadece XML olduğu için) istenmeyen verileri uzaklaştırmak veya daha genel bir forma dönüştürmek için [XSLT] [1] kullanın?


Ne yaptığımdan eminim, ama bunu zaten yapan birini arıyordum (tekerleği yeniden icat etme, değil mi?)
David
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.