Làm thế nào để khắc phục Collada xấu do FBX sản xuất?


10

Tôi đã cố gắng sử dụng SDK FBX (2011.3.1) để tải các tệp FBX và lưu chúng dưới dạng tệp Collada để có thể nhập các tệp FBX trong Panda3D. Thật không may, các tệp Collada kết quả không thể sử dụng được vì một số lý do, trong số đó:

  • Có một kỹ thuật phụ cụ thể của Maya

khuếch tán

<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>
  • Nó gán tên kênh texcoord không được tham chiếu ở bất kỳ nơi nào khác trong tệp (trong mẫu mã trước đó, không có hình học nào sử dụng "CHANNEL0" ...)

  • Mỗi đa giác được xuất hai lần, lần đầu tiên với một vật liệu cơ bản (chỉ màu khuếch tán, màu đặc trưng, ​​v.v.) và lần thứ hai với vật liệu có kết cấu -> điều này làm tăng gấp đôi số lượng đa giác của mỗi mô hình mà không có lý do có giá trị

Dù sao, tệp Collada kết quả có thể được mở chính xác bằng "dae2egg" của OpenCOLLADA hoặc Panda3D.

Bất cứ ai cũng có bất kỳ kinh nghiệm nào về cách "sửa chữa" nó và làm cho nó trở nên dễ hiểu bởi các nhà nhập khẩu Collada phổ biến và có uy tín như OpenCOLLADA?


3
Đây là một vấn đề lớn mà tôi đã tìm thấy với Collada: nó thực sự không hữu ích lắm cho việc vận chuyển dữ liệu giữa các công cụ tùy ý yêu cầu hỗ trợ cho nó, bởi vì nó là một định dạng quá mức. Nó có thể chứa dữ liệu của gần như bất kỳ lược đồ nào và vẫn là tệp Collada hợp lệ, tuân thủ tiêu chuẩn mà nhà nhập khẩu cụ thể bạn đang sử dụng không thể thực sự xử lý. Nó rất hữu ích như một định dạng trao đổi dữ liệu khi bạn có nhiều quyền kiểm soát hơn đối với nhà nhập khẩu / nhà xuất khẩu hoặc các công cụ xảy ra để sản xuất Collada mà bạn thích.

1
@Josh: Ít nhất nó có thể đọc được bằng con người, không giống như các định dạng nhị phân đóng. Ít nhất là với Collada, bạn có thể tạo các công cụ và tập lệnh có thể dịch từ bộ dữ liệu này sang bộ dữ liệu khác. Interop ít nhất là có thể , ngay cả khi nó đòi hỏi phải làm thêm.
Nicol Bolas

Câu trả lời:


2

Công cụ AC # là bạn của bạn ở đây - bạn có thể nhanh chóng viết một cái gì đó bằng cách sử dụng khung .NET System.Xml lặp lại tệp đầu vào, phát hiện ra các phần bạn không thích và loại bỏ (hoặc chỉnh sửa) chúng khỏi tài liệu trước khi viết lại ra một lần nữa. Thực tế đó là những gì XSLT làm, nhưng trong thực tế, tôi luôn thấy việc viết mã C # để mô tả sự biến đổi dễ dàng hơn là tìm cú pháp XSLT khó hiểu để làm điều tương tự.

Những gì bạn cần làm là xem xét các trường hợp 'xấu' và phát hiện ra những điểm chung của chúng. Ví dụ: nếu tất cả các kỹ thuật khuếch tán có kết cấu sử dụng texcoord = "CHANNEL0", thì điều đó thật dễ tìm. Bạn chỉ cần lặp lại tất cả các đối tượng và đối với từng đối tượng, hãy kiểm tra tất cả các kỹ thuật của nó cho thuộc tính vi phạm. Nếu bạn không tìm thấy nó, hãy thêm nút vào tài liệu đầu ra và tiếp tục. Nếu bạn không nhận ra nút, hãy thêm nó vào đầu ra và tiếp tục. Nếu bạn tìm thấy nó, đừng bận tâm thêm nó vào tài liệu đầu ra và nó sẽ bị xóa một cách hiệu quả.

Tuy nhiên, việc phát hiện các đa giác trùng lặp là khó khăn hơn một chút, vì bạn phải phân tích từng cặp đa giác cho tương đương. Sẽ đơn giản hơn nhiều nếu bạn có thể quyết định một quy tắc, chẳng hạn như "Tôi không quan tâm đến đa giác màu phẳng, chỉ đa giác có kết cấu", sau đó bạn có thể loại bỏ các đa giác thích hợp.

Tuy nhiên, có vẻ rất kỳ lạ với tôi rằng bạn đang thực sự bị trùng lặp; Sao chép hình học là một điều không nên lớn vì những lý do rõ ràng, vì vậy tôi rất ngạc nhiên FBX sẽ làm điều đó. Tôi chỉ từng sử dụng Collada với Maya / Max, vì vậy không thể đảm bảo cho những gì FBX tạo ra. Nhưng tôi hỏi, bạn có chắc chắn chắc chắn rằng thực sự không có hình học trùng lặp trong tệp FBX không?


Cảm ơn câu trả lời của bạn. Tất nhiên tôi đã có thể sửa nó trong nhà nhập khẩu của riêng mình, tôi chỉ tìm kiếm một người đã gặp phải và khắc phục chính xác vấn đề đó để tôi có thể khắc phục tiêu chuẩn và có thể áp dụng các bản sửa lỗi cho các sự cố mà tôi chưa phát hiện ra.
David

0

Tìm hoặc viết một nhà xuất khẩu khác, hoặc có lẽ (vì các tệp Collada chỉ là XML) sử dụng [XSLT] [1] để chuyển đổi dữ liệu không mong muốn đi hoặc ở dạng tổng quát hơn?


Đó là chắc chắn những gì tôi đang làm, nhưng tôi đang tìm kiếm một người đã làm điều đó (không phát minh lại bánh xe, phải không?)
David
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.