Skip to content

ytakzk/cloud_table

Repository files navigation

CloudTable



cloud table



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

system architecture

The easiest way to set up this environment is to use Docker.

For the first time

  1. Clone this repository
  2. Build a docker image (takes around 5 mins)
    cd cloud_table/cloudtable_docker && docker build ./ -t cloud_table
  3. 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

  1. Start the docker container
    docker start -i cloud_table

Apps

tweak_latent_vector / Processing app

tweak_latent_vector

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

semantic_morphing

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

weather_table

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

Workflow

Training Process

  1. Download point clouds from DropBox extracted from ShapeNet
  2. Train the auto encoder

Manipulation Process

  1. Select a base table
  2. Tweak its latent vector
  3. create a mesh from the point cloud
  4. 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

Codes

Fabricated table

cloud table cloud table cloud table

Misc