cloud_table
cloud_table copied to clipboard
3D generative design with deep learning
CloudTable

ETH DFAB 2018 Mini-project for Frame Möbel by Nicolas & Yuta
Exercice to design a metal-fdm printed join for a space frame, aimed at a table.
The exercice was taken as an oportunity to explore a possible way of sharing the work of designing, between a machine (computer system) and a human.
Given the short timeframe of this exploration, it was choosen from the start to split the design in two parts.
The main idea is to have as little human input as possible for the global design of the table (general shape and derived space-frame).
The join in contrast has a strong emphasize on the human intent (no form-finding strategies).
It is of note that this strict separation is not necessarly the best option, but merely a starting point in this research on human-machine intergration for design tasks, that some others may continue.
Contents
- train_auto_encoder
Training of an auto encoder based on PointNet. - python
Python program to tweak point clouds for table manipulation. - pointcloud2mesh
C++ program to create a mesh from a point cloud. - grasshopper
Grasshopper scripts as a client to call the programs above. - processing_app
Processing applications as a client. - cloudtable_docker
Docker environments hosting this project.
Environments

The easiest way to set up this environment is to use Docker.
For the first time
- Clone this repository
- Build a docker image (takes around 5 mins)
cd cloud_table/cloudtable_docker && docker build ./ -t cloud_table - Run and log into a docker container (mount all files in this repository with the container)
docker run -it --name cloud_table -v {ABSOLUTE_PATH_OF_THIS_REPOSITORY}:/cloud_table -p 9997-9999:9997-9999 cloud_table
From the next time
- Start the docker container
docker start -i cloud_table
Apps
tweak_latent_vector / Processing app

In the docker container, run python3 /cloud_table/python/socket_app.py then open tweak_latent_vector. Note that you need to restart its socket connection every time before running the Proceeing app.
semantic_morphing / web app - DEMO

In the docker container, run python3 /cloud_table/python/webapp.py then browse http://127.0.0.1:9997/semantic_morphing with some modern browser
weather_table / web app - DEMO

In the docker container, run python3 /cloud_table/python/webapp.py then browse http://127.0.0.1:9997/weather_table with some modern browser
Data Source
- Point clouds
1 point-cloud with 2048 points per model from ShapeNet.
Workflow
Training Process
Manipulation Process
- Select a base table
- Tweak its latent vector
- create a mesh from the point cloud
- Apply a joint system between connected edges
Dependences
- Docker
- Rhinoceros 6
- Processing 3
Neural Nets
- Python 3.6.5
- PyTorch 0.4.1
- CUDA 9.0 (for training an auto encoder)
Mesh Generator
- C++14 (GNU++14)
- libc++
- CGAL 4.13
References
Papers
- deep cloud The Application of a Data-driven, Generative Model in Design
- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
- Three-Dimensional Alpha Shapes
Codes
Fabricated table

Misc
- Algorithm for generating a triangular mesh from a cloud of points
- Using CGAL and Xcode
- 3D Alpha Shapes
- Everything You Always Wanted to Know About Alpha Shapes But Were Afraid to Ask
- VAE with PyTorch
- Intuitively Understanding Variational Autoencoders
- What The Heck Are VAE-GANs?
- robust algorithm for surface reconstruction from 3D point cloud?
- Eigenchairs