Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://github.com/EPFL-LGG/Cshells
25 March 2024, 19:20:46 UTC
  • Code
  • Branches (1)
  • Releases (0)
  • Visits
    • Branches
    • Releases
    • HEAD
    • refs/heads/main
    No releases to show
  • 868c2b9
  • /
  • README.md
Raw File Download Save again
Take a new snapshot of a software origin

If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.

Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.
swh spinner

Processing "take a new snapshot" request ...

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
  • revision
  • snapshot
origin badgecontent badge
swh:1:cnt:6fb2fd18e0359fe507fcfcde65b722297accde88
origin badgedirectory badge
swh:1:dir:868c2b94f72603c58dd0a10ca8100944390d090b
origin badgerevision badge
swh:1:rev:77e2afd6b5dec26bddf79ff82d2ff5a1d2d62618
origin badgesnapshot badge
swh:1:snp:0948be26199bbbdb485c76ff0360b02c213eb3af

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
  • revision
  • snapshot
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
Tip revision: 77e2afd6b5dec26bddf79ff82d2ff5a1d2d62618 authored by qbecky on 19 March 2024, 14:38:04 UTC
Add representative images
Tip revision: 77e2afd
README.md
<!-- PROJECT LOGO -->
<p align="center">

  <h1 align="center"><a href="https://go.epfl.ch/c-shells">C-shells: Deployable Gridshells with Curved Beams</a></h1>

![Teaser](./release/zoo.jpg)

  <p align="center">
    ACM Transactions on Graphics (Proceedings of SIGGRAPH Asia), December 2023.
    <br />
    <a href="https://people.epfl.ch/quentin.becker?lang=en"><strong>Quentin Becker</strong></a>
    ·
    <a href="https://people.epfl.ch/seiichi.suzuki?lang=en"><strong>Seiichi Suzuki</strong></a> 
    ·
    <a href="https://people.epfl.ch/yingying.ren?lang=en"><strong>Yingying Ren</strong></a>
    ·
    <a href="https://scholar.google.com/citations?user=JnocFM4AAAAJ&hl=en"><strong>Davide Pellis</strong></a>
    ·
    <a href="http://julianpanetta.com/"><strong>Julian Panetta</strong></a> 
    ·
    <a href="https://people.epfl.ch/mark.pauly?lang=en"><strong>Mark Pauly</strong></a>
    <br />
  </p>

  <p align="center">
    <a href='https://infoscience.epfl.ch/record/305959?ln=en'>
      <img src='https://img.shields.io/badge/Paper-PDF-red?style=flat-square' alt='Paper PDF'>
    </a>
    <a href='https://go.epfl.ch/c-shells' style='padding-left: 0.5rem;'>
      <img src='https://img.shields.io/badge/Project-Page-blue?style=flat-square' alt='Project Page'>
    </a>
  </p>
</p>

## About

This repository contains the source code and data for the paper C-shells: Deployable Gridshells with Curved Beams, published at SIGGRAPH Asia 2023. 

A C-shell is composed of curved flexible beams connected at rotational joints that can be assembled in a stress-free planar configuration. When actuated, the elastic beams deform and the assembly deploys towards the target 3D shape.

## Getting started

### Setup for elastic_rods

Before cloning the repository, make sure you have installed all the dependencies required by [elastic rods](https://github.com/EPFL-LGG/Cshells/tree/main/ext/elastic_rods#c-code-dependencies). The design optimization and planarization parts of the code also depend on the commercial optimization package [`knitro`](https://www.artelys.com/solvers/knitro/); these will be omitted from the build if `knitro` is not found.

### Cloning the repository

Start by cloning the repository:

```bash
git clone --recursive git@github.com:EPFL-LGG/Cshells.git
cd Cshells
```

### Python environment

The dependencies can be installed as follow

```bash
conda create -n cshell_env python=3.8
conda activate cshell_env
conda install -y pytorch=2.0 -c pytorch
conda install -y scipy matplotlib
conda install -y 'jupyterlab>=3.2'
pip install geomdl==5.3
```

To deactivate the environment, simply execute:

```
conda deactivate
```

### Build instructions
You can build the project as follow (**you need to have the environment activated**):

```
mkdir build && cd build
cmake .. -GNinja
ninja
```

### Setting up jupyter lab

Install `pythreejs` using

```bash
conda install -y pythreejs -c conda-forge
jupyter lab build
```

If this fails, you can try to install the source. Go to the `ext/` folder and clone:

```
git clone https://github.com/jpanetta/pythreejs
cd pythreejs
pip3 install -e .
cd js
jupyter labextension install .
```

### Running a jupyter notebook

To run a notebook, first launch jupyter lab in the one of the parent folders:

```
jupyter lab
```

Make sure you have activated the environment first.

## Running code

Three main actions can be performed on C-shells: deployment, design optimization, and planarization.

### Deployments

A `CShell` object (defined in `python/CShell.py`) can be instanciated and deployed as shown in the notebook `notebooks/deployments/deployments.ipynb`. A plurality of designs to deploy can be found under `data/models`. A linkage can be deployed either by specifying an attraction surface (see `src/AverageAngleSurfaceAttractedLinkage.hh`) or by fixing some degrees of freedom (see `src/AverageAngleLinkage.hh`). We show different deployment strategies in `notebooks/deployments/deployments_torus_symmetric.ipynb`

### Design Optimization

Once deployed, a `CShell` can be optimized towards a prescribed target surface while keeping the elastic energy in the deformed state low. Some examples can be found under `notebooks/design_optimizations`. In particular `optim_torus_symmetric.ipynb` shows an example of radially symmetric design. The notebook `optim_hexagon_xshell.ipynb` optimizes a design using the [X-shell](https://julianpanetta.com/publication/xshells/) method in the current code framework.

### Planarization

If a target surface in the form of a B-spline surface is known in advance, one may apply the planarization algorithm as shown in `notebooks/planarizations`. The joints are laid out in a plane and optimized so that the C-shell formed by connecting the joints is a good initial guess for further design optimization towards the user defined target surface.

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API