web-dev-qa-db-fra.com

Comment convertir un objet en fichier json pour le chargeur de modèle three.js

Je crée un jeu par navigateur avec three.js et je veux charger un modèle de Maya 2013 dans ma scène. J'ai exporté le modèle sous forme de fichier obj.

Maintenant, je dois savoir comment le convertir en un fichier JS pour le three.js-chargeur.

Voici mon chargeur jusqu'à présent:

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

Merci d'avance

16
user2259103

Si vous ne voulez pas utiliser Blender, mrdoob (made threejs) a un simple script python pour convertir obj en json. Exécutez simplement - ce script - dans le terminal comme ceci:

python convert_obj_three.py -i infile.obj -o outfile.js
13
captDaylight

Utilisez Blender.

Blender 3D

Installez ensuite cet addon:

exportateur Three.js

11
Hobbes

C'est une réponse assez tardive. J'ai écrit un convertisseur pour lire les fichiers obj et les convertir au format JSON pris en charge par ThreeJS: https://github.com/theMaxscriptGuy/Windows_Programs/tree/master/Obj_To_ThreeJS

Téléchargez tous les fichiers au format Zip et exécutez converter.exe ...

6
Videep Mishraa

Remarque: le script de convertisseur python a été mis à jour vers un outil basé sur js https://github.com/mrdoob/three.js/tree/dev/utils/converters =

Usage:

node obj2three.js model.obj

6
Karl Rosaen

Lors de l'exportation de modèles 3ds max vers three.js à l'aide du [convert_obj_three.py][1] script, un petit degré d'automatisation peut être atteint avec la commande suivante dans 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

J'ai écrit un script 3ds max qui imprimera la commande de script phyton pour plusieurs modèles et également un json avec les URL et coordonnées relatives des modèles. Le json est utile pour placer plusieurs modèles à la bonne position dans la scène.

(
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"
)
  • Créez un nouveau fichier txt, renommez-le en coordinates.mcr et faites glisser et déposez le fichier dans la fenêtre 3ds max. Il ouvrira automatiquement la fenêtre du MaxScript Listener et imprimera les résultats. Copiez collez la commande python en cmd. Utilisez le json imprimé pour charger par lots vos modèles dans votre projet.
  • De plus, des scripts peuvent être attribués à des boutons dans les barres d'outils de 3dsMax, pour un accès rapide.
  • Le script ci-dessus pourrait utiliser des ajustements supplémentaires. Ce n'est pas la meilleure solution, mais au moins cela accélère les choses, espérons-le.
  • Utilisez le script de Jos Balcaen pour exportation de fichiers obj par lots (3ds Max)

Modifier:

Après avoir expérimenté un peu avec le script, j'ai fait une configuration qui me permet d'exporter mes modèles (en comptant plus de 20) en moins d'une minute de 3ds max pour ouvrir l'onglet du navigateur. Bien sûr, vous devrez peut-être ajuster la sortie json à votre convenance. J'espère que cela vous sera utile.

3
Adrian Moisa

Créez un fichier Python nommé conversion.py avec le contenu suivant: cliquez ici pour le voir .

Et puis exécutez cette commande dans votre terminal:

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