2012-11-28 38 views
26

Nếu bạn muốn:Các định dạng tệp và thư viện đồ họa được khuyến nghị để nhập mô hình 3D vào dự án OpenGL/C++?

  • lập mô hình đối tượng trong trình chỉnh sửa 3D, ví dụ: Máy xay sinh tố, Maya, vv
  • xuất mô hình sang một định dạng dữ liệu/file
  • nhập khẩu mô hình thành một dự án sử dụng OpenGL và C/C++

Sau đó: Định dạng

  • tập tin gì sẽ bạn khuyên bạn nên xuất sang, tức là về tính đơn giản, tính di động và khả năng tương thích (tức là phổ biến/phổ biến)?
  • Bạn nên sử dụng thư viện đồ họa nào để nhập mô hình vào dự án OpenGL C/C++ của bạn (tức là nguồn mở tốt nhất)? Ngoài ra, có định dạng dữ liệu/tệp cũng chụp hoạt ảnh, tức là định dạng "hoạt hình", chẳng hạn như hoạt ảnh có thể được mô hình hóa trong trình chỉnh sửa 3D và bằng cách nào đó được gọi bên trong mã (ví dụ: khả năng truy cập vào khung trong chuỗi hoạt ảnh hoặc một số mô hình khác để lưu/tải chi tiết liên quan đến thay đổi theo thời gian)?

Nói chung, tôi đang tìm kiếm sự đơn giản là ưu tiên, tức là giúp bắt đầu kết hợp hình nền của tôi trong cả nghệ thuật và khoa học máy tính. Tôi là một chuyên gia về khoa học máy tính tại UMass, đồng thời là một nghệ sĩ lớn "giả" trong lĩnh vực nghệ thuật bằng cách lấy môn tự chọn trong thiết kế đồ họa tại trường đại học của tôi cũng như các lớp học tại Viện Nghệ thuật Boston vào mùa hè/mùa đông. Nói cách khác, tôi không phải là một người mới hoàn thành, nhưng đồng thời tôi không thực sự muốn các tùy chọn quá tải với cấu hình nâng cao điên rồ khiến việc bắt đầu với một dự án trình diễn cơ bản trở nên quá khó khăn; tức là bước đầu tiên để hiểu cách thu hẹp khoảng cách giữa hai thế giới này, ví dụ: tạo một chương trình có tính năng 3D mà người dùng có thể tương tác.

+2

+1, câu hỏi rất hay. Đối với "định dạng dữ liệu/tập tin cũng chụp hoạt hình", [Alembic] (http://alembic.io) được thiết kế khá nhiều cho điều đó. Chúc may mắn xây dựng nó nếu bạn đang trên Windows mặc dù ;-) – Cameron

+0

OK, tôi sẽ kiểm tra xem. (Xây dựng trên Mac OSX qua dòng lệnh.) Cảm ơn! : D – Simone

Trả lời

12

COLLADA (Tôi đang nói nó có chữ "ah" ở cuối) và Assimp (ple as that).

Và vì vậy, tại sao COLLADA? Đơn giản:

  • COLLADA là chuẩn mở do Khronos (Sony cụ thể) tạo. Vẻ đẹp của một định dạng chuẩn mở là nó là một tiêu chuẩn! Bạn có thể yên tâm rằng bất kỳ đầu ra nào của sản phẩm tuân thủ tiêu chuẩn cũng sẽ được đọc chính xác bởi một sản phẩm tuân thủ tiêu chuẩn khác. Tuy nhiên, điều đáng buồn là một số sản phẩm mô hình 3D không phải là đặc biệt trong các biện pháp của họ về sự phù hợp tiêu chuẩn cho COLLADA. Nhưng vẫn được yên tâm: Máy xay sinh tố, Maya, 3ds Max và tất cả các tên tuổi lớn khác trong mô hình 3D có hỗ trợ tốt cho định dạng.
  • COLLADA sử dụng XML. Điều này làm cho nó đơn giản hơn nhiều cho bạn nếu bạn lập kế hoạch để tạo ra người đọc hoặc nhà văn của riêng bạn.
  • BỔ SUNG: COLLADA là, tôi nghĩ, định dạng duy nhất không gắn với một công ty cụ thể. Đây là một điều rất tốt cho chúng tôi, bạn biết đấy.
  • BỔ SUNG 2: Được biết rằng COLLADA chậm được phân tích cú pháp. Đung. Nhưng hãy nghĩ về nó: tất cả các định dạng không nhị phân khác (như fbx) cũng có cùng vấn đề. Đối với nhu cầu của bạn, COLLADA là đủ.
  • BỔ SUNG 3: COLLADA hỗ trợ hoạt ảnh!

Đối với thư viện nhà nhập khẩu, tôi khuyên bạn nên sử dụng Assimp. Tại sao?

  • Assimp hỗ trợ mọi định dạng phổ biến mà bạn có thể tưởng tượng. Nó có một giao diện thống nhất cho tất cả các định dạng để chuyển sang định dạng khác ít đau hơn.
  • Assimp có thể mở rộng. Do đó, bạn có thể nhập định dạng độc quyền của mình và vẫn không sửa đổi mã của mình.
  • BỔ SUNG 4: Assimp là mã nguồn mở! Hãy hỗ trợ phần mềm nguồn mở!
+0

Collada chậm phân tích cú pháp, đặc biệt đối với các mô hình phức tạp;) –

+0

@MichaelIV Hoàn toàn đúng. Nhưng với mục đích của mình, COLLADA là nhiều hơn anh ta có thể yêu cầu. –

+1

Vì vậy, trong trường hợp này, ông cũng có thể sử dụng 3D và sử dụng lib3ds. Nhanh và đơn giản.Collada là loại trường cũ;) –

5

Thứ nhất, here bạn có thể đọc về đề nghị mô hình tải lbs.Lib Assimp là thực sự tốt và hỗ trợ nhiều formats.For ưa thích formats.Collada-I sẽ không khuyên bạn bởi vì đó là XML (văn bản) các định dạng dựa mà chậm phân tích cú pháp. Định dạng Obj cũng phổ biến nhưng bị các vấn đề tương tự như Collada. Nó vẫn tốt nếu bạn muốn viết trình phân tích cú pháp của riêng bạn vì cấu trúc của nó rất đơn giản. Nhưng thay vào đó, tôi sẽ đề xuất các hình ảnh 3D là nhị phân. Định dạng phổ biến nhất hiện nay hỗ trợ cả mạng tĩnh và hoạt hình là FBX.Bạn có thể download for free FBX SDK từ Autodesk và kết nối nó với động cơ của bạn. Lý do tôi chọn FBX là vì cả SDK và định dạng đều thực sự mạnh mẽ.Ví dụ: trong FBX bạn có thể nhúng không chỉ hình học và hình ảnh động mà còn là đối tượng cảnh như đèn, máy ảnh, vv. Các tài liệu cũng rất đẹp. Hy vọng điều đó sẽ hữu ích.

+3

+1 cho đề xuất FBX. Tôi đã sử dụng nó tại nơi làm việc và các studio trò chơi khác cũng sử dụng nó. SDK rất đẹp và hỗ trợ nhiều thứ. –

+0

Bạn tạo một trường hợp tốt cho FBX. Tôi chắc chắn sẽ khám phá FBX SDK và Assimp. Ngoài ra, cảm ơn bạn đã chỉ ra rằng bài đăng stackoverflow khác. Rất hữu dụng. :) – Simone

3

Tôi sẽ khuyên bạn nên sử dụng định dạng tùy chỉnh của riêng mình về cơ bản chỉ là kết xuất nhị phân của bộ đệm đỉnh và bộ đệm chỉ mục được sử dụng trong chương trình của bạn. (Sử dụng các thuật ngữ d3d ở đó, tôi biết opengl có cùng khái niệm nhưng không thể nhớ nếu chúng có tên khác nhau).

Sau đó tôi sẽ viết một chương trình riêng biệt bằng cách sử dụng tính năng nhận dạng có nhiều định dạng và ghi tệp theo định dạng tùy chỉnh của bạn. Sau đó, bạn có thể sử dụng collada hoặc whatver để lưu trữ các mô hình thực tế của bạn trong, nhưng không có sự phù hợp và chậm chạp của tải định dạng đó tại thời gian chạy.

+0

Có thể đó là điều cần khám phá trong tương lai nếu nó có ý nghĩa thiết thực để làm như vậy. Trước đây, tôi đã từng nghĩ rằng xây dựng thư viện của riêng mình là giải pháp tốt nhất cho "mọi thứ", nhưng chủ yếu là nó không đáng "tái tạo lại bánh xe" trừ khi bạn đang thực hiện nó cho mục đích thực tế, các giải pháp hiện có, và tất nhiên nó giúp để có một số loại kinh nghiệm với các giải pháp hiện có để thông báo cho các quyết định của bạn trong việc thiết kế một phiên bản cải tiến. Những ngày này tôi đăng ký nguyên tắc của Pareto, tức là 80-20% quy tắc, thay vì bị cuốn vào sự hoàn hảo. – Simone

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