The virtualization of real life objects has been a hot topic for several years. As I started learning about 3d modelling in Blender3d I thought of the idea to use simple imaging on floorplans to automatically create corresponding 3d models. It is much easier than it sounds and uses a low amount of resources, enabling it to be used on low hardware. By utilizing Blender3d, all created objects will be easy to transfer to any other 3d rendering program. Such as Unity, Unreal Engine or CAD.
This repository contains the floorplan to blender library FTBL along with example scripts for converting an image to a 3d model ./create_blender_project_from_floorplan.py. The repository also contains a server that receives images and converts them into 3d models using the FTBL library. The Server contains a Swagger API gui and is monitored using a weavescope container. Read more about the server implementation here. To allow developers to utilize more functionality a Jupyter tutorial has been added to the project, explaining some of the development steps and functions of the library. Read more about the tutorial here. Stacking is now also added as a core feature read more about how to use stacking below.
This part contains information about how to setup and execute the example script.
NOTE : Using other versions of the required programs and libraries than specified in Dockerfiles might require changes in the implementation. It is only guaranteed that this implementation will work if the assigned versions and all requirements are met.
NOTE : To avoid any version related problems use the Docker implementation.
Firstly you need to install a suitable Docker environment on your device.
This project contains a
DockerFile which uses the
Ubuntu 18.04 image so make sure your docker environment is set to linux containers.
This project is linked to Docker Hub which means a maintained and prebuilt container can be pulled directly by running:
docker pull grebtsew/floorplan-to-blender
The dockerfile is divided into three modes. The script mode where the example script can be tested. The server which starts a hosting server instance with a Swagger Api. The jupyter notebook where some tutorials and examples are further explained.
By using the different docker-compose files these modes are automatically selected for you.
NOTE : For more information about how the dockerfile and docker-compose files can be used to build and run the image to add your own content read more here.
To pull and run the container together in a one line command run:
# For Script mode:
docker-compose run ftb
# For Server mode: Read more "./Server/README.md"
docker-compose -f docker-compose.server.yml up
# For jupyter mode: Read more "./Docs/README.md"
NOTE: When changing between modes the container sometimes need to be rebuild, that can be done by adding the --build flag to the commands above.
This tutorial will describe how to install this implementation directly on your device.
If you are a
Linux/Ubuntu user, look at
Dockerfile for better instructions.
These are the programs that are required to run this implementation.
Python >== 3.8.0
Clone or download this repo:
git clone https://github.com/grebtsew/FloorplanToBlender3d.git
With a suitable
python pip installed you can have
Python3 pip install all required packages by running:
pip install -r requirements.txt
This tutorial takes you through the execution of this program.
Configs folder or StackingFile in
floorplan.blender files will be saved under
NOTE : For more information about alternative ways of executing the implementation read more here.
When the implementation run the first time a
system.ini and ``default.ini` file is created.
With the new update of the implementation
ConfigFiles are added. These files describe information about each floorplan class instance. In this file model transform can be changed. If no config is added, default will be used. To generate a new default file remove or move the old one. Next to the default config file is the system default config file containing additional settings for the entire system. All configs are placed inside the
With the new update the
StackingFile was added. StackingFiles are used to create worlds of floorplans at once. Using a self developed parsing language. See the example files in the
Here we demo the program. First of we need a floorplan image to process.
example.png, see below:
Next up we execute our script and answer the questions:
Finally we can open the newly created floorplan.blender file and see the result:
NOTE: This demo only uses default settings. For instance coloring is by default random.
Here we instead use StackingFiles to create a world containing several floorplans. Show the result.
The server implementation comes with an automatically generated Swagger API page.
If you are interested in code for these demos they are accessable in another repository here.
For more information and tutorial of how to use the ftb library do checkout docs!
Vital and core functionality are tested with pytest. To run tests yourself enter
Testing-folder and run:
Let me know if you want to contribute to this project, also if you want me to add more functions or answer questions, let me know!
These are some known and relevant issues with the current implementation:
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
COPYRIGHT @ Grebtsew 2021