J'ai créé un modèle par google SketchUp
et je veux l'exporter vers three.js
pour gagner du temps, car je pense qu'il faut utiliser SketchUp
est plus facile que three.js
Quelqu'un pourrait-il me dire comment faire ? Merci beaucoup !
Réponses
Trop de publicités?Vous pouvez exporter des collada (.DAE) à partir de SketcUp. Puis utiliser le Three.js ColladaLoader. Je pense que la version gratuite de SketchUp ne permet pas l'exportation de collada, mais dans tous les cas, vous pouvez exporter vers Google Earth (.KMZ), le renommer en .ZIP, l'ouvrir dans n'importe quel programme d'archivage, vous devriez y trouver un .DAE.
Il n'est pas à toute épreuve, mais il fonctionne en grande partie. Quelques conseils :
-
Dans les paramètres d'exportation, laissez l'option Trianguler les faces activée. Il est généralement préférable d'utiliser les faces recto-verso, mais il est parfois préférable de ne pas le faire.
-
Il se peut que vous deviez ensuite redimensionner les fichiers de texture pour qu'ils ne soient pas des puissances de deux dimensions (par exemple 256x512).
-
Il est conseillé d'éclater/dégrouper TOUS vos composants et groupes pour éviter les problèmes de ColladaLoader. Sélectionnez tout (Ctrl+A), éclatez à partir du menu contextuel. Répétez l'opération jusqu'à ce qu'il n'y ait plus rien à exploser. Ou utilisez un plugin pour cela, comme http://www.smustard.com/script/Bombe SketchUp lui-même éprouve des difficultés à décomposer des modèles très complexes et peut donner l'impression de se figer. C'est très regrettable, et il n'y a pas grand-chose à faire, si ce n'est supprimer les parties les plus complexes de votre modèle. Ou attendre, cela peut prendre entre une seconde et plusieurs jours.
-
Du côté de Three.js, il se peut que vous souhaitiez parcourir l'objet importé et régler les matériaux sur DoubleSide.
-
SketchUp utilise des unités en pouces lors de l'exportation (même lorsque l'interface utilisateur ou le projet est réglé sur l'échelle métrique), vous pouvez donc vouloir mettre à l'échelle le modèle importé en conséquence. Three.js n'a pas d'échelle prédéfinie, mais par exemple si vous considérez que l'unité 1.0 de Three.js est 1.0 mètre, vous devez définir obj.scale.x = obj.scale.y = obj.scale.z = 0.02539999969303608 ;
Dans threejs si vous voulez placer l'objet chargé à partir d'un fichier collada à un certain endroit, vous devez convertir le décalage en unités de droite, par exemple :
Je veux placer l'objet en (600, 1800, 0) mm, et le fichier est exporté en pouces.
var dae;
dae = collada.scene;
...
...
var x = 600;
var y = 1800;
var z = 0;
convertedX var = x * 0.0393700787 * dae.scale.x;
convertedY var = y * 0.0393700787 * dae.scale.y;
convertedZ var = z * 0.0393700787 * dae.scale.z;
dae.position.set (convertedX, convertedY, convertedZ);