2011-10-09 27 views
9

Motive
Tôi đang cố tạo một ứng dụng demo nhỏ bằng WebGL. Tôi đã chọn để sử dụng SceneJS, bởi vì nó có vẻ là một khuôn khổ dễ dàng và sẽ nhiều hơn đủ cho mục đích này.Chuyển đổi mô hình 3D sang JSJ SceneJS, bao gồm kết cấu

Tôi đã tải xuống một vài mô hình .blend (Amy Rose, trong số những người khác) và xuất chúng dưới dạng tệp Collada (.dae) bằng Máy xay sinh tố. Sau đó, tôi sử dụng scenejs-pycollada để chuyển đổi chúng thành một mô hình json.

Tôi vừa dành một vài giờ để chuyển đổi scenejs-pycollada hoạt động. Rõ ràng nhận được những phụ thuộc Python để làm việc trong Windows không phải là dễ dàng nếu bạn chưa bao giờ sử dụng Python trước đây. ;)

Sự cố
Nhưng bây giờ tôi bị kẹt (lại). Vấn đề của tôi là các mô hình không có bất kỳ kết cấu hay vật liệu nào.

Tôi đã sử dụng Seymour Plane Example của SceneJS. Mô hình tôi chuyển đổi hầu như không nhìn thấy được. Nó có màu đen và dường như không phản ứng với ánh sáng trong cảnh. Nếu tôi nạp mặt phẳng và mô hình lại với nhau, tôi có thể thấy mô hình được nạp, bởi vì cánh tay và chân của nó đang bám vào mặt phẳng.

Bây giờ tôi đã làm theo một vài hướng dẫn cho phép tôi xuất kết cấu dưới dạng hình ảnh PNG. Sau đó tôi đã sửa đổi tên tệp kết cấu trong mô hình JSON để khớp với tên tệp, nhưng nó không giúp ích gì. Vì vậy, tôi hy vọng một người nào đó có thể giúp tôi tìm cách xuất các mô hình Máy xay sinh tố (hoặc các mô hình 3D phổ biến khác) sang định dạng JSON được SceneJS sử dụng, bao gồm cả kết cấu.

Bất kỳ phương thức tải mô hình nào khác trong SceneJS cũng sẽ hoạt động, miễn là nó hoạt động.

Nếu ai có liên kết để tải xuống miễn phí các mô hình JSON hình/cơ thể, điều này sẽ hữu ích cho bây giờ, nhưng tôi thích tìm hiểu cách hoạt động của nó. :)

Tôi đang sử dụng

  • Windows 7 Home Premium 64bit
  • Python 2.7 (Windows 32bit)
    tôi đã chọn phiên bản 32 bit, vì hỗ trợ dường như tốt hơn cho các thư viện, và nhiều trình cài đặt có sẵn hơn. Lúc đầu, tôi trộn 32 và 64 bit và nó gây ra rắc rối cho tôi, nhưng bây giờ mọi thứ dường như hoạt động (ngoại trừ kết cấu, đó là).
  • Blender 2.59
  • SceneJS 0.8.0

công việc của tôi
Trong Blender tôi xuất khẩu các mô hình để Collada (* .dae) tập tin, và sau đó chuyển đổi chúng sang Raw JSON sử dụng scenejs- pycollada. Điều này cho tôi một tệp JSON với hai đối tượng trong đó. Đầu tiên có vẻ là cảnh, người thứ hai là người mẫu. Tôi giữ thứ hai và đặt nó trong một biến Javascript được sử dụng trong mã của ví dụ SceneJS. Mô hình kết thúc bằng thuộc tính , "type": "library", "parent": "Scene" mà tôi cần xóa khỏi mã để làm cho nó tải hoàn toàn.

Trả lời

7

Tôi thực sự là tác giả của scenejs-pycollada.Hãy để tôi xem liệu tôi có thể giúp bạn không :)

Tôi thấy bạn đang sử dụng phiên bản 0.8 của SceneJS ... Mọi thứ trở nên dễ dàng hơn, vì vậy thực sự có thể dễ dàng nhất để kéo 2.0 branch of SceneJS from github và scenejs-pycollada từ personal repo của tôi . Tôi đã cơ bản nhắm mục tiêu SceneJS 0.9 cho bản phát hành đầu tiên của scenejs-pycollada, nhưng phiên bản đó chưa bao giờ được phát hành chính thức. Ngoài ra, về lâu dài, bạn sẽ không phải viết lại mọi thứ nếu bạn chỉ chuyển đổi ngay bây giờ ...

Việc biên dịch cửa sổ có vấn đề cũng là một cái gai lớn, tôi thực sự mong các nhà phát triển sần sùi sửa lỗi này cho bạn cửa sổ dân gian. Khi SceneJS 2.0 được phát hành, tôi sẽ phát hành phiên bản scenejs-pycollada chính thức đi kèm với tất cả các phụ thuộc cần thiết cho các cửa sổ.

Vì vậy, vui lòng nhận xét về câu trả lời này hoặc cập nhật câu hỏi của bạn. Tôi sẽ cố gắng để mắt đến nó.

P.S. Ngoài ra, nếu bạn đang thực sự thất vọng tôi thực sự có một nhà xuất khẩu máy xay sinh tố thứ hai tại https://github.com/rehno-lindeque/Blender-WebGL-exporter, nhưng tôi không khuyên bạn nên sử dụng cái này - nó rất lỗi thời. Chỉ có một nhà xuất khẩu collj khác xuất hiện trong một thời gian dài.

P.P.S. Ngoài ra còn có ví dụ và một số mô hình thử nghiệm trong scenejs-pycollada. Nếu bạn chỉ muốn một mô hình nhanh để chơi với, hãy xem https://github.com/rehno-lindeque/scenejs-pycollada/tree/master/example mặc dù phải thừa nhận rằng đó không phải là mô hình đẹp nhất từ ​​trước tới nay.

P.P.P.S. Trên thực tế, một trong những lý do tại sao mô hình Amy Rose không hoạt động tốt cho bạn là vì scenejs-pycollada không hỗ trợ nhiều tài liệu. Tôi nhanh chóng thêm một số hỗ trợ cho tối nay.

+0

Cảm ơn bạn! Dường như nó hoạt động với phiên bản scenejs-pycollada và SceneJS 2.0 của bạn. Không cần phải biên dịch lại bất cứ điều gì, vì vậy đó là tốt. ;) Tôi không đổ lỗi cho các anh chàng Numpy rất nhiều, nó là rất nhiều lỗi của riêng tôi để cài đặt các phiên bản không tương thích của các thư viện khác nhau. Tại thời điểm này, tôi đang cố gắng GLGE, người mà bạn nên dùng. (nó tải tập tin .dae mà không cần phải chuyển đổi chúng). Bây giờ tôi cần làm demo của mình, nhưng tôi hy vọng tôi sẽ tìm thời gian sớm để tái điều tra SceneJS. Cảm ơn một lần nữa. – GolezTrol

+0

Không vấn đề gì, thêm bất kỳ lỗi nào cho tôi biết :) –

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