mesh/marching-cubes
src/mesh/marching-cubes.tur
CPU Marching Cubes mesh extraction from an SdfExpr.
Since: Phase 1
defn
mc-extract
(mc-extract [sdf :int res :int bx0 :float by0 :float bz0 :float bx1 :float by1 :float bz1 :float] :int)
run Marching Cubes and return a triangle mesh.
Parameters
| sdf | SdfExpr handle | |
| res | voxel resolution per axis (e.g. 32, 64) | |
| bx0 by0 bz0 -- bounding-box minimum | ||
| bx1 by1 bz1 -- bounding-box maximum |
Returns
Opaque :int Mesh handle, or 0 on failure. Free with mesh-free.
Example
(mc-extract sphere 32 -2.0 -2.0 -2.0 2.0 2.0 2.0)
Since: Phase 1
defn
mesh-vertex-count
(mesh-vertex-count [m :int] :int)
number of vertices (3 per triangle). Since: Phase 1
defn
mesh-index-count
(mesh-index-count [m :int] :int)
number of triangles * 3 (same as vertex count for flat mesh). Since: Phase 1
defn
mesh-get-vx
(mesh-get-vx [m :int i :int] :float)
x component of vertex i. Since: Phase 1
defn
mesh-get-vy
(mesh-get-vy [m :int i :int] :float)
y component of vertex i. Since: Phase 1
defn
mesh-get-vz
(mesh-get-vz [m :int i :int] :float)
z component of vertex i. Since: Phase 1
defn
mesh-get-nx
(mesh-get-nx [m :int i :int] :float)
x component of normal at vertex i. Since: Phase 1
defn
mesh-get-ny
(mesh-get-ny [m :int i :int] :float)
y component of normal at vertex i. Since: Phase 1
defn
mesh-get-nz
(mesh-get-nz [m :int i :int] :float)
z component of normal at vertex i. Since: Phase 1
defn
mesh-get-index
(mesh-get-index [m :int i :int] :int)
vertex index i (identity for flat mesh). Since: Phase 1
defn
mesh-free
(mesh-free [m :int] :void)
free a Mesh returned by mc-extract. Since: Phase 1