Basic Library | Related Projects | License | Documentation |
---|---|---|---|
Numpy,SciPy,Mayavi,geometrylab | Discrete Orthogonal Structures |
Felix Dellinger, Xinye Li, and Hui Wang* (corresponding author)
| Project Page | Full Paper | Publication Page | Documentation |
Abstract
To represent smooth geometric shapes by coarse polygonal meshes, visible edges often follow special families of curves on a surface to achieve visually pleasing results. Important examples of such families are principal curvature lines, asymptotic lines or geodesics. In a surprisingly big amount of use-cases, these curves form an orthogonal net. While the condition of orthogonality between smooth curves on a surface is straightforward, the discrete counterpart, namely orthogonal quad meshes, is not. In this paper, we study the definition of discrete orthogonality based on equal diagonal lengths in every quadrilateral. We embed this definition in the theory of discrete differential geometry and highlight its benefits for practical applications. We demonstrate the versatility of this approach by combining discrete orthogonality with other classical constraints known from discrete differential geometry. Orthogonal multi-nets, i.e. meshes where discrete orthogonality holds on any parameter rectangle, receive an in-depth analysis.
This repository contains the implementation associated with the paper "Discrete Orthogonal Structures". Please cite the paper if you use this code in your project.
@Article{DOS2023,
author = {Dellinger, Felix and Li, Xinye and Wang, Hui},
title = {Discrete Orthogonal Structures},
journal = {Computers & Graphics},
volume = {114},
pages = {126--137},
month = {June},
year = {2023},
doi = {10.1016/j.cag.2023.05.024},
url = {https://www.huiwang.me/projects/10_project/}
}
Using Anaconda to install every package.
1. Download Anaconda
2. Open Anaconda Prompt
```
$ conda create -n geo
$ conda activate geo
$ conda install mayavi traits traitsui qt pyqt vtk scipy spyder
$ conda install -c haasad pypardiso
```
3. Open Anaconda, under "geo" environment open Spyder
Once above installation failed because of versions conflict, then try below installations:
step-by-step installation.
```
$ conda create -n geo python=3.6
$ conda activate geo
$ pip install numpy scipy
$ pip install python-vtk
$ pip install mayavi --no-cache
$ conda install -c haasad pypardiso
$ conda install pyface
```
Or use the exported files within ./conda/
to set your environment
```
$ conda env create -f environment.yml
```
File notice.
-
files in geometrylab folder are basic, nothing need to be changed.
-
archgeolab/archgeometry: meshpy.py --> quadrings.py --> gridshell_new.py --> gui_basic.py --> guidedprojection_orthonet.py --> opt_gui_orthonet.py --> readfile_orthonet.py
-
run readfile_orthonet.py to test how it works; a GUI window will be opened
-
The GUI settings are in opt_gui_orthonet.py
-
The constraints settings are in guidedprojection_orthonet.py
-
if you want to add a new optimization project, please refer to archgeolab; You can create a new folder similar to the folder 'archgeolab'. Then the mesh geometry, optimization and GUI will be based on the files in geometrylab folder.
The optimizer uses Guided Projection Algorithm, a Gauss-Newton algorithm, as dissused in the paper Form-finding with polyhedral meshes made simple, in a Python environment to produce quadmesh models.
Abstract of the paper 'Form-finding with Polyhedral Meshes Made Simple'
We solve the form-finding problem for polyhedral meshes in a way which combines form, function and fabrication; taking care of user-specified constraints like boundary interpolation, planarity of faces, statics, panel size and shape, enclosed volume, and last, but not least, cost. Our main application is the interactive modeling of meshes for architectural and industrial design. Our approach can be described as guided exploration of the constraint space whose algebraic structure is simplified by introducing auxiliary variables and ensuring that constraints are at most quadratic. Computationally, we perform a projection onto the constraint space which is biased towards low values of an energy which expresses desirable "soft" properties like fairness. We have created a tool which elegantly handles difficult tasks, such as taking boundary-alignment of polyhedral meshes into account, planarization, fairing under planarity side conditions, handling hybrid meshes, and extending the treatment of static equilibrium to shapes which possess overhanging parts.
Python programming visualization for optimization problems in the Architectural Geometry / Geometry Processing area. This implementation major works on quad meshes.
If you find this codebase and paper helpful in your research, welcome to cite the paper and give a ⭐ . This project was initially developed by Davide Pellis. It is still under development. Please feel free to push issues or submit requests to contribute to our codebase. Welcome to work together to make a Grasshopper plugin if you are interested. For any commercial uses, please contact us. Hoping this codebase is helpful for your research work.
Welcome to the research collaborations!