The current process for modelling a real life room in 3D is taking a scanned model and separating each individual object manually. The process is tedious and time-consuming, so we looked for a way to automate it. Especially due to the rapidly growing progress on installing 3D cameras on smartphones, we hope to provide a simple and efficient way of rearranging already-existing furniture in people's homes.
What it does
It takes a 3D model of a room and separates the walls/floors from other objects.
How we built it
The only free 3D modelling tool with scripting built in available to us was Blender, so naturally we picked it up. Because Agisoft Photoscan doesn't offer any APIs, we don't have any way to automate the process of getting the 3D model of the room, so we get the 3D model manually.
We then wrote some Python scripts that process the vertices of the 3D model to calculate the most likely plane the wall/floor is on. From that, we find which parts of the model should be an object and which part should be a wall.
While we were not able to finish building the software, we have a basic working prototype that takes a 3D model and outputs a table of vertices that are not part of a detected wall/floor.
Challenges we ran into
First, none of us have ever done any project remotely similar to this, so it was a completely new concept to us. The mathematical concepts that were involved in some features we wanted to include were also too challenging for us to understand and implement.
Another big challenge was trying to work with Blender, since it is quite lacking in documentation.
Accomplishments that we're proud of
We were able to successfully create a 3D model and we also processed the vertices and separate out the wall vertices from the object vertices. The python script in Blender was expanded to take in as many input files and output a corresponding data set.
What's next for Wall Object Separator 2000
If we were able to continue working on this project, we would research more on the actual splitting process of the 3D model since we were puzzled by how this task could be accomplished with our OBJ file (it was not provided in Blender's official documentation). Then, we would build a basic prototype of the software that would accomplish the tasks in practice, not just in theory. Moreover, we would also hope to create a user-friendly app that could easily be accessed by anyone in need for furniture rearrangement (but without the physical work!)