2013-04-08 41 views
13

Sto costruendo un browser game con three.js e voglio caricare un modello da Maya 2013 nella mia scena. Ho esportato il modello come un file obj.Come convertire un oggetto in un file json per il loader del modello three.js

Ora ho bisogno di sapere come convertirlo in un file JS per lo three.js -loader.

Questo è il mio caricatore finora:

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

Grazie in anticipo

+1

possibile duplicato di [Come potrei convertire un file maya in un file JSON e utilizzarlo con Three.js] (http://stackoverflow.com/questions/14919219/how-could-i-convert-a-maya-file-in-a-json-file-and-use-it-with-three-js) ... direttamente dalla barra laterale. –

+1

oppure, poiché è stato convertito in obj, puoi utilizzare OBJLoader o OBJMTLLoader per caricarlo direttamente in three.js – gaitat

+0

Ive ha provato OBJLoader bt ottengo un errore di tipo: THREE.MTLLoader non è un costruttore. Ma OBJLoader è incluso – user2259103

risposta

5

Quello è un risposta piuttosto tardi. Ho scritto un convertitore per leggere i file obj e convertire in ThreeJS supportato formato JSON: https://github.com/theMaxscriptGuy/Windows_Programs/tree/master/Obj_To_ThreeJS

scaricare tutti i file come zip ed eseguire converter.exe ...

+0

L'ho provato su Windows 8 ma non funziona. L'hai provato? –

+0

Ehi, non sono stato in grado di testarlo su Windows 8. Puoi condividere il problema/screenshot. –

+0

Grazie! Funziona, come previsto. Windows 8.1 btw. –

11

Se non si desidera utilizzare frullatore , mrdoob (made threejs) ha un semplice script python per convertire obj in json. Basta eseguire --this script-- nel terminale in questo modo:

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

Qualche idea su come automatizzare questo? È un lavoro tedioso esportare anche alcuni modelli. Il collegamento –

+2

non funziona più ... :( –

2

Durante l'esportazione di 3ds max modelli per Three.js utilizzando lo script [convert_obj_three.py][1], un piccolo grado di automazione può essere raggiunto con il seguente comando 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 

Ho scritto uno script 3ds max che stamperà il comando phyton script per più modelli e anche un json con i relativi url e coordinate relativi. Il json è utile per posizionare più modelli nella posizione corretta nella scena.

(
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" 
) 
  • Creare un nuovo file txt, rinominarlo in coordinates.mcr e trascinare il file nella finestra di 3ds max. Aprirà automaticamente la finestra di Listener di MaxScript e stamperà i risultati. Copia incolla il comando python in cmd. Usa il documento stampato per caricare in batch i tuoi modelli nel tuo progetto.
  • Inoltre, gli script possono essere assegnati ai pulsanti nelle barre degli strumenti 3dsMax, per un accesso rapido.
  • Lo script precedente potrebbe utilizzare ulteriori ritocchi. Non è la soluzione migliore, ma almeno accelera le cose, speranzoso. sceneggiatura
  • Usa Jos di Balcaen per exporting obj files in batch (3ds Max)

Edit:

Dopo aver sperimentato un po 'con lo script ho fatto una messa a punto che mi permette di esportare i miei modelli (contando più di 20) in meno di 1 minuto da 3ds max per aprire la scheda del browser. Naturalmente, potrebbe essere necessario regolare l'uscita JSON a proprio piacimento. Spero che lo troverai utile

0

Creare un file Python chiamato conversion.py con il seguente contenuto: click here to see it.

e quindi eseguire il seguente comando nel terminale:

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