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] :)
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] :)
number of vertices (3 per triangle). Since: Phase 1
defn
mesh-index-count
(mesh-index-count [m : 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] :)
x component of vertex i. Since: Phase 1
defn
mesh-get-vy
(mesh-get-vy [m : int i : int] :)
y component of vertex i. Since: Phase 1
defn
mesh-get-vz
(mesh-get-vz [m : int i : int] :)
z component of vertex i. Since: Phase 1
defn
mesh-get-nx
(mesh-get-nx [m : int i : int] :)
x component of normal at vertex i. Since: Phase 1
defn
mesh-get-ny
(mesh-get-ny [m : int i : int] :)
y component of normal at vertex i. Since: Phase 1
defn
mesh-get-nz
(mesh-get-nz [m : int i : int] :)
z component of normal at vertex i. Since: Phase 1
defn
mesh-get-index
(mesh-get-index [m : int i : int] :)
vertex index i (identity for flat mesh). Since: Phase 1
defn
mesh-free
(mesh-free [m : int] :)
free a Mesh returned by mc-extract. Since: Phase 1