2013-04-08 14 views
13

Buduję grę przeglądarkową z three.js i chcę załadować model z Maya 2013 na moją scenę. Wyeksportowałem model jako plik obj.Jak przekonwertować obiekt do pliku json dla programu ładującego model three.js

Teraz muszę wiedzieć, jak przekonwertować go do pliku JS dla three.js -loader.

To moja ładowarka do tej pory:

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

góry dzięki

+1

możliwe duplikat [Jak mogę przekonwertować plik maya do pliku json i używać go z three.js] (http://stackoverflow.com/questions/14919219/how-could-i-convert-a-maya-file-into-a-json-file-and-use-it-with-three-js) ... prosto z paska bocznego. –

+1

lub, od konwersji na obj, można użyć OBJLoader lub OBJMTLLoader do załadowania go prosto do three.js – gaitat

+0

ive wypróbowałem OBJLoader bt otrzymuję błąd typu: THREE.MTLLoader nie jest ramieniem. Ale OBJLoader jest dołączony – user2259103

Odpowiedz

5

Ów dość późną odpowiedź. Pisałem konwerter do odczytu plików obj i konwersji do formatu JSON ThreeJS obsługiwane: https://github.com/theMaxscriptGuy/Windows_Programs/tree/master/Obj_To_ThreeJS

pobrać wszystkie pliki jako ZIP i uruchomić converter.exe ...

+0

Próbowałem go w systemie Windows 8, ale nie działa. Testowałeś to? –

+0

Hej, nie byłem w stanie przetestować go w systemie Windows 8. Czy możesz się podzielić problemem/zrzutem ekranu? –

+0

Dziękujemy! Działa, zgodnie z oczekiwaniami. Windows 8.1 btw. –

11

Jeśli nie chcesz użyć blendera , mrdoob (wykonane threejs) ma prosty skrypt python do konwersji obj na json. Wystarczy uruchomić --this script-- w terminalu tak:

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

Każdy pomysł, jak zautomatyzować to? To ekscytująca praca przy wyeksportowaniu nawet kilku modeli. –

+2

Link nie działa więcej .. :( –

2

Podczas eksportowania modeli 3ds max do Three.js użyciu skryptu [convert_obj_three.py][1], mały stopień automatyzacji można osiągnąć za pomocą następującego polecenia w 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 

Napisałem skrypt 3ds max, który wydrukuje polecenie skryptu phyton dla wielu modeli, a także json z odpowiednimi wzorcami adresów i współrzędnych. Json jest przydatny do umieszczania wielu modeli w prawidłowej pozycji w scenie.

(
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" 
) 
  • Utwórz nowy plik txt, zmień jego nazwę na coordinates.mcr i przeciągnij plik do okna programu 3ds Max. Automatycznie otworzy okno MaxScript Listener i wydrukuje wyniki. Skopiuj wklej polecenie Pythona w cmd. Użyj wydrukowanego json do załadowania swoich modeli w projekcie.
  • Skrypty można również przypisać do przycisków na paskach narzędzi 3dsMax, aby uzyskać szybki dostęp.
  • Powyższy skrypt może wymagać dalszych modyfikacji. To nie jest najlepsze rozwiązanie, ale przynajmniej przyspiesza, z nadzieją. Skrypt
  • Skorzystaj Jos Balcaen za exporting obj files in batch (3ds max)

Edit:

Po eksperymentach trochę ze skryptem Zrobiłem konfigurację, która pozwala mi eksportować swoje modele (licząc ponad 20) w ciągu 1 minuty od 3ds max, aby otworzyć kartę przeglądarki. Oczywiście, być może trzeba dostosować wyjście json do swoich potrzeb. Mam nadzieję, że okaże się to przydatne.

0

Utwórz plik o nazwie Python conversion.py o następującej treści: click here to see it.

A następnie uruchomić to polecenie w terminalu:

python conversion.py -i file.obj -o file.js