You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A volumetric multi-material modeling language and compiler developed by the [Matter Assembly Computation Lab](https://www.matterassembly.org/) at the University of Colorado Boulder. OpenVCAD is an automatable volumetric design framework that can fully leverage multi-material fabrication. OpenVCAD provides a scriptable suite of constructive solid geometry and functional design methods that enable the representation of complex objects with hundreds of materials. OpenVCAD allows for full spatial control over the material composition of an object. Additionally, it provides functional grading and convolutional blending techniques to generate parts with dynamic mechanical characteristics. This research tool is intended to be used for the design and development of new meta-materials, digital allows, and compliant mechanisms.
6
6
7
-
# A multi-material geometry compiler
8
-
The OpenVCAD project defines a parametric scripting language and compiler that can be used to express and export volumetric designs. The image below shows the volumetric design workflow that is provided by OpenVCAD. Designers express their objects using the [OpenVCAD modeling language](https://github.com/MacCurdyLab/OpenVCAD#language-overview-usage). These designs are compiled into an OpenVCAD tree that can be exported to various volumetric formats, such as PNG stacks for inkjet 3D-printing. The power of OpenVCAD is the [material nodes](https://github.com/MacCurdyLab/OpenVCAD/wiki/Material-Nodes) that allow complex material transitioning, digital alloying, and image processing techniques to be applied to child geometry. This replaces the traditional 3D-printing workflow of repressing multiple materials using a composite of single material surface meshes. Similarly, using OpenVCAD designers can express objects that vary their composition internally such as lattice structures and meta-materials.
OpenVCAD employees a node-based modeling language that is similar to the [OpenSCAD](http://www.openscad.org/) language. The key difference is that OpenVCAD was designed to support multi-material designs. OpenVCAD files, or simply `.VCAD` files are simple text files that express a hierarchical tree of nodes similar to [abstract syntax trees (ASTs)](https://en.wikipedia.org/wiki/Abstract_syntax_tree) or [constructive solid geometry (CSG)](https://en.wikipedia.org/wiki/Constructive_solid_geometry). The OpenVCAD modeling language has three categories of nodes: geometric primitives, composition, and material. The figure below shows how OpenVCAD nodes can be used to generate multi-material designs.
13
-

14
-
15
-
OpenVCAD designs are expressed using a scripting language. The language is a simple text file that contains a `root()` with any number of child nodes. The following example shows an OpenVCAD script that generates a simple one material object using two geometric primitive nodes and a composition node.
OpenVCAD supports cartesian, cylindrical, and spherical coordinates systems in all expressions. See [Coordinate Systems](https://github.com/MacCurdyLab/OpenVCAD/wiki/Coordinate-Systems) for more information.
31
-
32
-
### Nodes
33
-
OpenVCAD's three node types are documented in the following pages:
34
-
35
-
1.[Geometric Primitive Nodes](https://github.com/MacCurdyLab/OpenVCAD/wiki/Geometric-Primitive-Nodes): provides an overview of the geometric primitives (leaf nodes) that can be used in OpenVCAD
36
-
2.[Composition Nodes](https://github.com/MacCurdyLab/OpenVCAD/wiki/Composition-Nodes): provides an overview of the composition nodes (transforms & boolean operations) that can be used in OpenVCAD
37
-
3.[Material Nodes](https://github.com/MacCurdyLab/OpenVCAD/wiki/Material-Nodes): provides an overview of the material nodes (convolution & functional grading) that can be used in OpenVCAD
7
+
# Documention
8
+
Please see the [wiki](https://github.com/MacCurdyLab/OpenVCAD-Public/wiki) for full documentation on how to use OpenVCAD.
38
9
39
10
## Gallery & Benchmarking
40
11

@@ -47,27 +18,8 @@ c. shows a soft actuator that consists of a functional geometry node and graded
47
18
48
19
d. shows a mug that is designed using multiple functional geometry nodes and boolean operations
49
20
50
-
### Timing Results
51
-
|**Example**|**Object Size (mm)**|**Voxels**|**Evaluation Time (s)**|**Slicing Time (s)**|**Voxels per second**|
> See [Gallery and Results page](https://github.com/MacCurdyLab/OpenVCAD-Public/wiki/Gallery) for more info.
57
22
58
-
### Functionally Graded Gyroidal Wing
59
-
OpenVCAD's functional geometry node is well suited to express triply periodic geometry like the gyroid pattern in the figure below. Functional patterns can be clipper with a boundary mesh to form infill patterns. Additionally, geometric features can be parameterized on spatial location. In the below example, the unit cell size is linearly decreased along the x-axis. The example was generated using 8 line OpenVCAD script.
60
-

Pre-compiled binaries of the OpenVCAD compiler can be found in [releases](https://github.com/MacCurdyLab/OpenVCAD/releases). These include two versions:
@@ -78,7 +30,7 @@ Pre-compiled binaries of the OpenVCAD compiler can be found in [releases](https:
78
30
We welcome contributions to OpenVCAD from the community! Below outlines the process for contributing to the project.
79
31
80
32
### Getting the Code/ Open Source Contributions
81
-
The OpenVCAD code is open-source under a non-comercial license. As such, we encourage contributions from the community.
33
+
The OpenVCAD code is open-source under a [non-comercial license](https://github.com/MacCurdyLab/OpenVCAD-Public/blob/main/LICENSE). As such, we encourage contributions from the community.
82
34
83
35
The code is hosted on a private GitHub repository that you can request access to by using this form: [https://forms.gle/MAjCmG66xZ6p1JcE9](https://forms.gle/MAjCmG66xZ6p1JcE9)
0 commit comments