From: Anders F. <and...@gm...> - 2015-07-02 13:00:13
Attachments:
cells.stl
|
Hi, I have a feature request (or maybe a bug report depending on your point of view) for the .stl file importer. Let me start with a brief background. I use CADMesh (github.com/christopherpoole/cadmesh) to load meshed CAD models into a Monte Carlo simulation toolkit called Geant4 (geant4.cern.ch). Each model is essentially a collection of volume elements, aka "cells". In Geant4, I assign a material to the model and simulate how much energy is deposited in each cell when some particles pass through. I save models in .stl format. A simple example is attached. It is a 100x100x30 mm^3 slab divided into 2x2x2 cells. As you can see, the file contains eight meshes named cell1 ... cell8. Each mesh begins with e.g. "solid cell1" and ends with e.g. "endsolid cell1". CADMesh uses Assimp to load the file. Expected behavior: Loading the .stl file with Importer::ReadFile should yield a scene with eight meshes named cell1 ... cell8. Each mesh should correspond to one volume element. Observed behavior: Loading the .stl file yields only one mesh. This mesh is whichever one happened to be the first in the file (cell1 in this case) because STLLoader stops reading upon encountering the first instance of "endsolid". The mesh has no name; The name is instead assigned to the root node. I note that all the models in test/models/STL/ have exactly one mesh, so perhaps this behavior has gone under the radar so far. In my case, it is not uncommon for a model to have 100,000 meshes. I should point out that the behavior described above is for ASCII files. For binary files, it seems that all cells are loaded, but they are merged into a single mesh. I'm not exactly sure about what goes on under the hood on this one, though, because the resulting cell doesn't have the volume (physically, in mm^3) that it should. I'm probably missing some subtlety. I hope I have correctly understood the expected behavior of Assimp and I'm happy to answer any questions if my request is unclear. Thanks in advance! // Anders |