2009-02-25 27 views
7

Tôi đang viết một trò chơi trong JOGL và cần đại diện cho nhân vật trong trò chơi. Tôi dự định sử dụng hoạt hình xương cho các chuyển động của nhân vật, và tất nhiên nhân vật sẽ được làm da. Tôi dường như không thể tìm thấy bất kỳ trình tải mô hình tốt nào cho JOGL vì vậy tôi dự định tự tải mẫu lên, dựa trên thông số kỹ thuật hoặc thứ gì đó. Tôi cũng có kế hoạch sử dụng Blender làm người lập mô hình 3D của tôi, vì vậy một số loại tồn tại ở đó sẽ là tốt nhất.Loại mô hình 3D được đề xuất cho mô hình nhân vật trong trò chơi, được tải theo cách thủ công?

Bạn đề xuất loại tệp nào? .trộn? .x, .3ds, .md2/3/5, ... ?? Hãy nhớ rằng tôi muốn một cái gì đó với một định dạng rõ ràng để tôi có thể viết bộ nạp mà không cần phải deobfuscate một số định dạng tập tin ngẫu nhiên, và nó cần phải hỗ trợ các tính năng nói trên. Bất kỳ thông tin nào khác mà bạn có thể đưa ra liên quan đến lý do bạn chọn nó và tại sao nó tốt nhất cũng sẽ rất hữu ích!

Cảm ơn!

EDIT: Tôi sẽ viết một nhà xuất khẩu Blender MS3D. Khi tôi hoàn thành, tôi sẽ đăng nó here.

Trong khi đó, hãy xem câu trả lời được đánh dấu của tôi bên dưới; nhưng nhiều hơn nữa đã diễn ra kể từ đó. Tôi sẽ không giữ cập nhật này với những gì tôi đang làm, nhưng về cơ bản tôi đã tìm thấy jMonkey Engine và nó đã có một nhà nhập khẩu ms3d và các hệ thống phụ khác mà tôi đã bắt đầu viết tay. Mặc dù các công cụ scenegraph (đó là lý do tại sao tôi đã tránh Java3D) Tôi nghĩ rằng nó sẽ là đặt cược tốt nhất của tôi để tham gia lực lượng với nó, vì vậy đó là những gì tôi đang lên đến.

Trả lời

2

Trước hết, cảm ơn hai người trả lời khác.Ngoài ra basszero bạn đã đúng về các tập tin pha trộn, và tôi nên đã kiểm tra Wikipedia đầu tiên! Nó là một phân vùng nhị phân gần như vô dụng của bộ nhớ của Blender.

Không lâu sau khi viết câu hỏi này, tôi quyết định tiếp tục và viết trình tải OBJ, vì 1) nó sẽ cho tôi trải nghiệm tải định dạng tệp 3D và 2) có vẻ như là định dạng đẹp, thường được sử dụng mà còn dễ tải. Nó đã kết thúc là một quyết định tuyệt vời, bởi vì nó làm tôi nhận ra, tôi đã không thực sự biết sự khác biệt giữa một đối tượng và một nhóm, và tôi cũng không biết nhiều về vật liệu. Nó giúp tôi thiết lập mã cho các cấu trúc 3D này.

Cả hai câu trả lời đều đề xuất định dạng dựa trên XML. Tôi không muốn một định dạng XML. Tôi không tin đây là nơi thích hợp cho XML. Tôi tin rằng các định dạng đó được tạo ra bởi vì XML là linh hoạt, phổ quát và dễ tạo các lược đồ, nhưng đó không phải là những gì tôi đang tìm kiếm. Tôi muốn một định dạng tải nhanh (XML không phải là, tương đối nói), nó không phải là linh hoạt hoặc có thể đọc được con người, và cái gì đó mà tôi có thể viết một nhà nhập khẩu, thay vì dựa vào các thư viện XML. basszero thậm chí còn nói, "với chi phí là XML", và anh ta hoàn toàn đúng; đó là một chi phí mà tôi không cảm thấy có giá trị gánh nặng.

Trình tải OBJ của tôi được thực hiện. Tôi tách nó ra khỏi các lớp mô hình thực tế, và thực hiện nó với một giao diện MeshFactory để tôi có thể trong tương lai viết một bộ tải khác nếu tôi muốn ... Đó là kế hoạch. Tôi đã nghiên cứu thêm vài ngày qua và quyết định định dạng ms3d.

Định dạng ms3d hỗ trợ gian lận xương (khớp) và hoạt ảnh xương khung chính, và hơn nữa hỗ trợ bản đồ kết cấu và bản đồ alpha. Ngoài ra, nó là một định dạng nhị phân dễ đọc trên máy tính, không lãng phí dung lượng (như XML và OBJ) với các thẻ và nhãn có thể đọc được của con người và như vậy.

Máy xay sinh tố, thật không may, không có tập lệnh xuất ms3d (hoạt động), vì vậy tôi sẽ tự viết một kịch bản. May mắn thay, nó không phải là một quá trình khó khăn, và bạn có thể đọc qua tài liệu của Blender và sử dụng các nhà xuất khẩu khác làm ví dụ. Tôi sẽ phải chải lên Python của tôi, nhưng nếu không nó có vẻ rất đơn giản, từ những gì tôi đã nhìn thấy của các kịch bản khác.

Mặt Java của mọi thứ phải dễ dàng, trên thực tế nó sẽ dễ dàng hơn định dạng OBJ vì ms3d được cấu trúc nhiều hơn. Tôi tìm thấy specifications cho định dạng ms3d trực tuyến, theo kiểu C (thiên tài!) Để chúng cực kỳ tự giải thích và tôi không có thêm câu hỏi nào về định dạng. Tôi sẽ căn cứ vào việc triển khai thực hiện thông số này, mặc dù sau này tôi có thể triển khai các biến thể của riêng mình; đó là điều tuyệt vời khi viết nhà nhập khẩu và xuất khẩu của riêng tôi, tôi có thể sửa đổi định dạng như tôi thấy phù hợp.

Tất cả trong tất cả, tôi đã quyết định đây là giải pháp tốt nhất.

Và basszero, bạn hoàn toàn đúng, như tôi đã thấy từ bộ tải OBJ của tôi: "Một khi bạn đã đọc tất cả, tổ chức dữ liệu (danh sách hiển thị, kết cấu, mảng đỉnh, bộ đệm đỉnh, v.v ...) và dựng hình là một con thú hoàn toàn khác. "

Cruachan: không có Java3D cho tôi, tôi đang gắn bó với JOGL. Tôi thực sự sở hữu cuốn sách đó (mặc dù nó không thể truy cập tại thời điểm này) mặc dù tôi không nhớ làm thế nào ông nạp các mô hình, nhưng tôi khá chắc chắn ông đã sử dụng các trình tải định dạng Java3D tự động làm điều đó. Không phải thứ tôi định dùng ... Xin lỗi!

-Ricket

3

Nếu bạn có thể sống chỉ với hình học hoặc chuẩn bị để xử lý họa tiết của riêng mình, thì .obj có lẽ là định dạng tệp 3D đơn giản và được hỗ trợ rộng rãi nhất. Về cơ bản nó là ascii của mô hình 3D.

Nếu không, tôi muốn hướng tới vrml. Nó cũng được xác định và có ít nhất một số mã xung quanh để giúp bạn bắt đầu. Tôi đã tải thành công các mô hình vrml vào java3D bằng cách sử dụng mã có sẵn miễn phí. Kích thước tệp gốc có xu hướng lớn, nhưng có thể được giải quyết bằng cách sử dụng định dạng nén.

Tôi không khuyến nghị .3ds. Thời gian duy nhất tôi xử lý một trình đọc cho định dạng này là trong Delphi Pascal, và nó lộn xộn, không xác định, khó xử lý và có xu hướng có nhiều 'biến thể' như vậy mặc dù tôi đã quản lý 3D-MAX chính nó tốt nó từ chối nhiều mô hình từ các gói khác mà tuyên bố là ở định dạng 3DS nhưng không được hình thành đúng cách.

THÊM: Tôi cũng khuyên bạn nên xem API Java3D và sách O'Reilly Killer Game Programming in Java vì ngay cả khi bạn không đi xuống tuyến đường Java3D, nó có khả năng trả lời rất nhiều câu hỏi của bạn.

+0

tôi không như vậy chắc chắn về .obj, có vẻ như vô cùng hiệu quả. tôi không cần định dạng có thể đọc được. tôi sẽ xem xét những gì làm cho vrml lớn và có thể làm cho phiên bản tinh chỉnh của riêng tôi, cảm ơn! bất kỳ ai khác? :) – Ricket

+0

Obj là không hiệu quả, nhưng nó rất chuẩn. Bạn cũng có thể sẽ xem xét Java3D và đặc biệt là cuốn sách 'Killer Game Programming in Java' của O'Reilly có thể trả lời rất nhiều câu hỏi. – Cruachan

1

Tôi tin rằng .blend chủ yếu là một kết xuất nhị phân trong cấu trúc bộ nhớ từ máy xay sinh tố, sẽ không giúp bạn nhiều bên ngoài máy xay sinh tố. Sử dụng Blender để tạo mô hình, nhưng xuất sang định dạng khác.

Có thể có một chút tiết lộ, nhưng tôi đã nghe Collada kết thúc tốt đẹp thông tin 3D rất độc đáo (với chi phí là XML). Nhược điểm là có khả năng một định nghĩa lược đồ thích hợp mà bạn có thể vượt qua JAXB dẫn đến một trình phân tích cú pháp đầy đủ với công việc không có từ bạn.

Định dạng .md * cũng có thể là một lựa chọn tốt. Chúng từ động cơ iD (q1, q2, q3, q4, doom3) và chúng được ghi lại. Chúng cũng chứa các chuỗi hình ảnh động.

Khi bạn đã đọc tất cả, tổ chức dữ liệu (danh sách hiển thị, kết cấu, mảng đỉnh, bộ đệm đỉnh, v.v.) và hiển thị là một con thú hoàn toàn khác.

0

Woah, người đàn ông, bạn sẽ phát hành xuất khẩu ms3d khi bạn hoàn thành nó? Và nếu có, nó sẽ ra sao? Tôi thực sự cần phải có được bàn tay của tôi trên một nhà xuất khẩu mà làm việc cho hình ảnh động và Fragmotion sử dụng, và nó trông giống như những gì bạn làm là hy vọng cuối cùng của tôi.

+0

Tôi chưa bắt đầu mã hóa nhà xuất khẩu máy xay sinh tố; các nghiên cứu của tôi đã khiến tôi rất bận rộn trong tuần qua. Làm thế nào về điều này: giữ một mắt trên http://rickyc.org/ms3dexporter/ và khi tôi kết thúc tôi sẽ đặt nó ở đó. – Ricket

+0

Âm thanh như một kế hoạch. Tôi sẽ theo dõi nó. –

+0

Cuối cùng tôi đã bắt đầu viết xuất khẩu MS3D. Tôi nên làm nó trong vài ngày tới. Tôi biết tôi đã đẩy nó trở lại cho đến nay (bây giờ là 3 tháng sau ...) nhưng nếu bạn vẫn có nhu cầu về nó, tôi sẽ xuất bản nó. Tôi cũng sẽ cập nhật liên kết đó với thông tin về nó và tải xuống, vì tôi biết bạn có thể không nhận được thông báo này. – Ricket

0

Có một nguồn mở.bộ đọc tệp kết hợp có thể trích xuất bất kỳ thông tin nào từ tệp .blend, bao gồm các mắt lưới, họa tiết, khung và hoạt ảnh.

Xem một số ví dụ sử dụng Ogre và Irrlicht đây: http://gamekit.googlecode.com

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