2015-06-01 27 views
5

Vì vậy, tôi đang viết một trình phân tích cú pháp cho các tệp mô hình obj dạng sóng và có một số bất thường mà tôi không chắc chắn về cách xử lý.Định dạng OBJ dạng sóng -> Nhóm & lệnh usemtl

Vì vậy, dựa tắt của đọc sách của tôi, một lưới có thể được chia nhỏ thành các nhóm bằng cách sử dụng lệnh 'g' và một loại vật liệu có thể được gán cho mỗi nhóm sử dụng lệnh 'usemtl'

Vì vậy, một tập lý tưởng sẽ trông như thế này:

g group1 
usemtl material1 
//vertices 
//UV coords 
//faces 

g group2 
usemtl material2 
//vertices 
//UV coords 
//faces 

etc.... 

Tuy nhiên trong một số file obj tôi đã tải về (từ những nơi như Turbosquid), tôi đã nhìn thấy một nhóm duy nhất chứa nhiều "usemtl" như thế này:

g group1 
usemtl material1 
//vertices, faces, etc 
usemtl material2 
//vertices, faces, etc 

g group2 
usematerial material3 
//vertices, faces, etc 

Vì vậy, nếu có thể có nhiều tài liệu cho mỗi nhóm thì điểm của nhóm là gì?

Những tệp này được coi là "không chuẩn" hay bị hỏng?

Thay vào đó, tôi có nên nhóm các khuôn mặt dựa trên tài liệu được chia sẻ thay vì nhóm được chia sẻ không?

Có nhiều tài liệu cho mỗi nhóm sẽ làm phức tạp nhiều mã của tôi (ví dụ: giả sử tôi phải tạo một nhóm N mẫu ngẫu nhiên trên một nhóm hình tam giác/khuôn mặt với một tài liệu nhất định. Tôi chỉ có thể tra cứu các hình tam giác trong nhóm đó và tạo ra các mẫu, nhưng nếu nhóm đó chứa một số hình tam giác với vật liệu chính xác và một số không có, tôi sẽ phải kiểm tra vật liệu lạ trên đầu nhóm kiểm tra Đây chỉ là một ví dụ - có những trường hợp khác cũng trở thành vấn đề)

Trả lời

0

Các mắt lưới có thể được nhóm không chỉ thành các mục nhóm (g), nhưng đối tượng (o) và vùng mịn. Cách dễ nhất là làm cho khuôn mặt tham chiếu đến tài liệu hiện tại được chỉ định bởi usemtl hoặc chỉ nhóm theo usemtl

+0

làm cho nó giống như mã giải thích hơn – Gahan

Các vấn đề liên quan