We have been looking for a way to convert BIM models for simulation and we were able to do so through the use of Autodesk Forge APIs. In doing so we were able to create a better and more meaningful visualization.
What it does
Extraction and translation: Starting with data from BIM360, our extraction tool takes the geometry of a model and converts it into a format called OBJ. This format is then voxelized and stored in a JSON file which can be run through a simulator. The output from the simulator is then parsed into a form which can be visualized.
Simulation: Our labs’ simulator, Cadmium, has a CO2 dispersion model which we used for this project. The model classifies the space as cells of different types, impermeable objects (used for walls), CO2 sources, workstations (used for chairs+desks) and air. Most of the model is occupied by air cells and all air cells start with a constant equilibrium value of CO2 concentration. The workstations start off unoccupied and a few steps into the simulation they are replaced by a CO2 source and that is when the CO2 level changes can be seen. The CO2 sources occupy the workstations for a period of time to show what it looks like when the space has been fully staffed for an extended period of time, after which they return to being unoccupied for some time before the end of the simulation. This shows the amount of time it takes for the CO2 levels to return roughly to equilibrium.
Visualization: It uses PointCloud for the visualization purpose. It reads the simulation output data in CSV format (using D3-fetch) and plot the x-coordinate and y-coordinate on the PointCloud (using THREE.js). There is a use of the ShaderMaterial which provides us with various material properties such as point size, vertexColors, load textures and many more. It makes use of custom shader material such as vertex shader and fragment shader. There is a color gradient legend (using D3.js) to reflect the color change of the CO2 concentration level in different time frames.
How we built it
Challenges we ran into
Data extraction: A lack of precision when converting model information to Cadmium’s input format causes some details to be lost. Some doors become too narrow while some passages are walled off. This was corrected by accessing the resultant file and modifying cells manually.
Simulation Large 3D models take excessive amounts of time to run using Cadmium in its current state. To remedy this issue, we intercepted the model information after parsing and manually combined information from several layers into one. We then used this single 2D layer to run the simulator. This is out of scope for the hackathon.
Visualization Autodesk Forge uses THREE.js version 71 and we had difficulties in using the latest extensions and we had to look around to implement newer elements. We went back and forth between PointCloudMaterial and ShaderMaterial for defining custom shaders. This was an issue because the THREE.js version.
Accomplishments that we're proud of
Our team is very proud of the accomplishment as undergraduate and graduate students made a significant contribution to the API's implementation. Our goal was to extract data from the BIM model in a format acceptable to our Cadmium simulator, and this is successfully implemented. The Cadmium simulator ran a large BIM model for the first time and took more time than practical to complete. But it performs a quick simulation on 2D models. We used the CO2 simulation results for a 2D model in order to visualize results in a timely manner. Though the extraction is not complete in its entirety, it is still a functioning prototype that will be developed further. As a team, we are proud that we were able to integrate the connection between the simulator and BIM models during the hackathon.
What we learned
We learned that hackathons are a great resource of information and a hub for connecting with a variety of professionals. We were able to dive into technologies that provide a platform for processing and visualizing large amounts of data. The hacking experience was crazy, chaotic, and hectic, but we were able to meet our goals and have fun.
What's next for BIM-to-DEVS
Visualizing the simulation of CO2 levels or the spread of a pandemic in building models on a large scale like a campus will give contextual information to understand the phenomena. Our goal is to refine data extraction and make the file loading process take less time. Our future goal is to deconstruct large BIM models for appropriate data extraction and run a quick simulation. In the future, we hope to improve our simulator, Cadmium, to be able to handle large, 3-dimensional models in a much more time effective manner.