2013-04-08 33 views
13

Tôi đang xây dựng một trò chơi trình duyệt với three.js và tôi muốn tải một mô hình từ Maya 2013 vào cảnh của tôi. Tôi đã xuất khẩu mô hình dưới dạng tệp obj.Cách chuyển đổi đối tượng thành tệp json cho trình tải mô hình ba.js

Bây giờ tôi cần biết cách chuyển đổi nó thành tệp JS cho bộ tải three.js.

Đây là bộ nạp của tôi cho đến nay:

var jsonLoader = new THREE.JSONLoader(); 
jsonLoader.load("models/model.js", addModelToScene); 

Cảm ơn trước

+1

thể trùng lặp của [Làm thế nào tôi có thể chuyển đổi một tập tin vào một tập tin maya json và sử dụng nó với three.js] (http://stackoverflow.com/questions/14919219/how-can-i-convert-a-maya-file-thành-a-json-file-và-sử dụng-nó-với-ba-js) ... ngay từ thanh bên. –

+1

hoặc, vì bạn đã chuyển đổi nó thành obj, bạn có thể sử dụng OBJLoader hoặc OBJMTLLoader để tải nó thẳng vào ba.js – gaitat

+0

ive đã thử OBJLoader bt i nhận được Lỗi Loại: THREE.MTLLoader không phải là một hàm tạo. Nhưng OBJLoader được bao gồm – user2259103

Trả lời

5

Thats bài trả lời khá muộn. Tôi đã viết một chuyển đổi để đọc các file obj và chuyển đổi sang ThreeJS hỗ trợ định dạng JSON: https://github.com/theMaxscriptGuy/Windows_Programs/tree/master/Obj_To_ThreeJS

Tải về tất cả các file như zip và chạy converter.exe ...

+0

Tôi đã thử nó trên windows 8 nhưng nó không hoạt động. Bạn đã thử nghiệm nó chưa? –

+0

Hey, tôi đã không thể kiểm tra nó trên windows 8. Bạn có thể plese chia sẻ các vấn đề/ảnh chụp màn hình. –

+0

Cảm ơn bạn! Nó hoạt động, như mong đợi. Windows 8.1 btw. –

11

Nếu bạn không muốn sử dụng máy xay sinh tố , mrdoob (made threejs) có một script python đơn giản để chuyển đổi obj thành json. Chỉ cần chạy --this script-- trong thiết bị đầu cuối như vậy:

python convert_obj_three.py -i infile.obj -o outfile.js 
+0

Bất kỳ ý tưởng nào về cách tự động hóa điều này? Đó là công việc khó khăn để xuất khẩu ngay cả một vài mô hình. –

+2

liên kết không hoạt động nữa .. :( –

2

Khi xuất khẩu 3ds max mô hình để Three.js sử dụng kịch bản [convert_obj_three.py][1], một mức độ ít tự động hóa có thể đạt được với lệnh sau trong cmd Promt:

cd C:\Python27 & 
python convert_obj_three.py -i _obj\chromeBand.obj -o _json\chromeBand.js & 
python convert_obj_three.py -i _obj\controlPanelCover.obj -o _json\controlPanelCover.js 

Tôi đã viết một tập lệnh 3ds max sẽ in lệnh phyton script cho nhiều mô hình và cũng là một json với các mô hình url và tọa độ tương đối. Các json là hữu ích cho việc đặt nhiều mô hình ở vị trí chính xác trong cảnh.

(
local inputPath = "D:\Archive\Work\_Dev\_Convert\Obj\\" 
local outputPath = "C:\Server\htdocs\viewer\assets\models\my-project\\" 
local jsonPath = "assets/models/my-project/" 
local myListEntry = "\n" 

for o in selection do 
    (
     myListEntry += 
     "\"" + o.name + "\": {\n" + 
      "\t\"url\": \"" + jsonPath + o.name + ".js\",\n" + 
      "\t\"position\": {\n" + 
       "\t\t\"x\": \"" + o.position.x as string + "\",\n" + 
       "\t\t\"y\": \"" + o.position.z as string + "\",\n" + 
       "\t\t\"z\": \"" + (o.position.y * -1) as string + "\"\n" + 
      "\t}\n" + 
     "},\n" 
    ) 

myListEntry += "\n\n\n=== Run this using cmd promt: ===\n" 
myListEntry += "cd C:\Python27 &\n" 

for o in selection do 
    (
     myListEntry += "python D:\Archive\Work\_Dev\_Convert\convert_obj_three.py -i " + 
      inputPath + o.name + ".obj -o " + 
      outputPath + o.name + ".js & \n" 
    ) 

myListEntry += "exit \n" 
print myListEntry 
actionMan.executeAction 0 "40472" 
) 
  • Tạo một file txt mới, đổi tên nó để coordinates.mcr và kéo và thả các tập tin vào cửa sổ 3ds max. Nó sẽ tự động mở cửa sổ MaxScript Listener và in kết quả. Sao chép dán lệnh python trong cmd. Sử dụng json được in để tải hàng loạt các mô hình của bạn trong dự án của bạn.
  • Ngoài ra, tập lệnh có thể được gán cho các nút trong thanh công cụ 3dsMax để truy cập nhanh.
  • Tập lệnh trên có thể sử dụng tinh chỉnh thêm. Không phải là giải pháp tốt nhất nhưng ít nhất nó tăng tốc mọi thứ, hy vọng. kịch bản
  • Sử dụng Jos BALCAEN cho exporting obj files in batch (3ds Max)

Edit:

Sau khi thử nghiệm một chút với kịch bản tôi đã thực hiện một thiết lập cho phép tôi để xuất khẩu mô hình của tôi (tính hơn 20) trong ít hơn 1 phút từ 3ds max để mở tab trình duyệt. Tất nhiên, bạn có thể cần phải điều chỉnh đầu ra json theo ý thích của bạn. Hy vọng bạn sẽ thấy điều này hữu ích.

0

Tạo một file Python tên conversion.py với nội dung sau: click here to see it.

Và sau đó chạy lệnh này trong Terminal:

python conversion.py -i file.obj -o file.js 
Các vấn đề liên quan