103 3D: Meshes
3D reference map · First 3D picture
procedure
(mesh3d #:id id #:vertices vertices [ #:triangles triangles #:edges edges #:vertex-ids vertex-ids #:edge-ids edge-ids #:face-ids face-ids #:normals normals #:colors colors] #:material material [ #:transform transform #:opacity opacity #:wireframe-color color #:wireframe-width width]) → mesh3d? id : symbol? vertices : vector? triangles : vector? = #() edges : (or/c #f vector?) = #f vertex-ids : (or/c #f vector?) = #f edge-ids : (or/c #f vector?) = #f face-ids : (or/c #f vector?) = #f normals : (or/c #f vector?) = #f colors : (or/c #f vector?) = #f material : material3d? transform : transform3? = identity-transform3 opacity : (and/c real? (between/c 0 1)) = 1 color : any/c = "steelblue" width : positive-real? = 2
In 'wireframe mode the stable edge order remains visible. In 'opaque mode triangles are flattened in declared order, clipped, depth-tested, and shaded with material. Flat and smooth materials use the declared face or interpolated vertex normals respectively; per-vertex colours are interpolated perspective-correctly. Material, wireframe, and per-vertex colours are color-spec? values, so literals, theme roles, and colour expressions remain part of the immutable mesh and resolve together when a renderer prepares a frame.
procedure
(mesh3d-vertices mesh) → vector?
mesh : mesh3d?
procedure
(mesh3d-triangles mesh) → vector?
mesh : mesh3d?
procedure
(mesh3d-edges mesh) → vector?
mesh : mesh3d?
procedure
(mesh3d-vertex-ids mesh) → (or/c #f vector?)
mesh : mesh3d?
procedure
(mesh3d-edge-ids mesh) → (or/c #f vector?)
mesh : mesh3d?
procedure
(mesh3d-face-ids mesh) → (or/c #f vector?)
mesh : mesh3d?
procedure
(mesh3d-vertex-id mesh index)
→ (or/c symbol? exact-nonnegative-integer?) mesh : mesh3d? index : exact-nonnegative-integer?
procedure
(mesh3d-edge-id mesh index)
→ (or/c symbol? exact-nonnegative-integer?) mesh : mesh3d? index : exact-nonnegative-integer?
procedure
(mesh3d-face-id mesh index)
→ (or/c symbol? exact-nonnegative-integer?) mesh : mesh3d? index : exact-nonnegative-integer?
struct
(struct geometry-key3d ( digest byte-length vertex-count triangle-count edge-count)) digest : bytes? byte-length : exact-nonnegative-integer? vertex-count : exact-nonnegative-integer? triangle-count : exact-nonnegative-integer? edge-count : exact-nonnegative-integer?
procedure
(mesh3d-geometry-key mesh) → geometry-key3d?
mesh : mesh3d?
struct
(struct mesh3d-semantic-key3d ( geometry vertex-ids edge-ids face-ids provenance-schema) #:transparent) geometry : geometry-key3d? vertex-ids : (or/c #f vector?) edge-ids : (or/c #f vector?) face-ids : (or/c #f vector?) provenance-schema : symbol?
procedure
mesh : mesh3d?
struct
(struct mesh-part-reference3d (kind id) #:transparent) kind : (or/c 'vertex 'edge 'face) id : any/c
struct
(struct mesh-part-provenance-entry3d ( source-part result-parts relation) #:transparent) source-part : (or/c #f mesh-part-reference3d?) result-parts : vector? relation : (or/c 'preserved 'merged 'split 'generated 'discarded 'ambiguous 'derived)
struct
(struct mesh-part-provenance3d (vertices edges faces warnings) #:transparent) vertices : vector? edges : vector? faces : vector? warnings : vector?
procedure
(make-mesh-part-provenance3d [ #:vertices vertices #:edges edges #:faces faces #:warnings warnings]) → mesh-part-provenance3d? vertices : vector? = #() edges : vector? = #() faces : vector? = #() warnings : vector? = #()
procedure
(mesh-part-provenance3d-source-results provenance source) → (or/c #f vector?) provenance : mesh-part-provenance3d? source : mesh-part-reference3d?
procedure
(mesh-part-provenance3d-result-sources provenance result) → vector? provenance : mesh-part-provenance3d? result : mesh-part-reference3d?