Importation de Modèles Google Sketchup dans Mathematica

le Sketchup de Google est un modeleur D'objets 3D simple et agréable. En outre Google a un énorme entrepôt d'objets 3D de sorte que vous n'avez pas à faire beaucoup de modélisation vous-même si vous n'êtes pas particulièrement doué dans ce domaine. Beaucoup des bâtiments 3D dans Google Earth sont faites avec Sketchup. La possibilité d'importer les fichiers SKP de Sketchup dans Mathematica serait très agréable, mais hélas, ce n'est pas encore le cas.

gratuit version de Sketchup doesn't exportez vers d'autres formats que les formats KMZ (Google Earth) et Dae (Collada). Bien que MMA puisse lire des fichiers KMZ/KML, il ne lit pas ceux qui contiennent des objets 3D. Les fichiers Dae sont des fichiers Collada zippés qui peuvent être lus en XML par L'Import de MMA. L'arborescence XML qui en résulte est assez complexe, tout comme le définition de la Collada et en arriver à la géométrie de l'objet est loin d'être négligeable (j'ai réussi à forcer la de coordonner un ensemble d'un modèle).

Ma question est: Comment convertir des fichiers SKP dans une structure propre basée sur un polygone dans Mathematica?

je préfère un le convertisseur d'importation cela fournit à MMA cette capacité d'importation, mais d'autres routes sont également les bienvenues. Je posterai la méthode plutôt indirecte que j'utilise actuellement comme réponse demain.

18
demandé sur Mooseman 2011-06-06 02:41:49

4 réponses

ce n'est probablement pas exactement ce que vous cherchez, mais j'ai une bibliothèque python appelée pycollada. Vous pouvez l'utiliser pour exporter au format de Mathematica. J'ai aussi travaillé sur un import/export/convertir utilitaire appelé meshtool que vous pouvez écrire un module pour que l'exportation vers le format de Mathematica.

4
répondu jterrace 2011-06-05 22:56:34

voici le code qui a réussi à importer un très simple .fichier dae produit par la version libre de SketchUp 8.0 dans Mathematica 8. Ce code ne détecte pas ou n'agit pas sur les transformations, il ne regarde que les coordonnées et les triangles, donc n'attendez pas trop.

data = Import[SystemDialogInput["FileOpen"], "XML"]; 

points = Map[( Partition[ReadList[StringToStream[#[[1]] ], Number], 
3]) &, (Map[Part[#, 3] &, (Partition[
Cases[data, XMLElement["float_array", _, _], Infinity], 
2][[All, 1]])] ) ];

triangles = Map[Partition[1 + ReadList[StringToStream[#[[1]]], Number],3] &, 
Map[Part[#, 3, 2, 3]&, 
Cases[data, XMLElement["triangles", _, _], Infinity]]];

Graphics3D[Map[GraphicsComplex[#[[1]], Polygon[#[[2]]]] &, 
Transpose[{points, triangles}]], Boxed -> False]
4
répondu christopher purcell 2012-10-12 18:53:18

la route que je suis actuellement comporte un certain nombre d'étapes:

  1. télécharger le fichier SKP à partir du Google référentiel
  2. ouvrez - le dans le version gratuite de Sketchup
  3. Exporter à partir de là que DAE
  4. le convertir au format FBX en utilisant le convertisseur gratuit AutoDesk fbx (au fond de la page ici)
  5. en utilisant le même programme, convertissez le fichier FBX juste créé en DXF ou OBJ
  6. Importer dans Mathematica.

les résultats sont assez bons, bien que vous semblez perdre les textures. Les Figures ci-dessous montrent les résultats. A gauche: le modèle original de Sketchup, au milieu: conversion / importation via DXF, à droite: conversion / importation via OBJ.

enter image description here

évidemment, vous ne voulez pas faire cela trop souvent, et pour l'application spécifique sur laquelle je travaille, je voudrais une solution que les utilisateurs qui ne sont pas très experts en informatique peuvent gérer. trop.


mise à Jour:

depuis la version 10.4 Mathematica a la capacité d'importer et d'exporter des fichiers DAE: https://reference.wolfram.com/language/ref/format/DAE.html

4
répondu Sjoerd C. de Vries 2016-03-01 21:39:12

La réponse dépend de ce que vous voulez faire exactement. Si vous voulez juste pour voir l'image vous pouvez exporter un .fichier obj (fichier de tessellation, pas de code objet!).

Essayez ceci par exemple:

bunny = Import["http://graphics.stanford.edu/~mdfisher/Data/Meshes/bunny.obj", "OBJ"]

si vous voulez réellement travailler avec elle comme un modèle solide, vous allez avoir un moment plus difficile. Les modèles solides ont des structures de données assez complexes pour représenter la topologie aussi bien que la géométrie. Vous pourriez être en mesure d'obtenir les surfaces de modèle pour exemple, mais vous devrez avoir une certaine topologie de dire quelle partie de la surface est utilisée par un visage.

2
répondu Codie CodeMonkey 2011-06-06 07:25:18