About Mesh Nodes

Mesh nodes store polygonal geometry in a winged-edge data structure that maintains face, edge, and vertex connectivity. Permutations are also available. Thus, a vertex set or edge set can be quickly derived from a face set. The mesh node has the option of storing multiple attribute channels, although that feature is not exposed in Scenome 1.0. [A future release will expose the multi-channel feature.]

All meshes have a mesh construction history that stores refinements to the mesh geometry. These are stored persistently in the file until the mesh is flattened. The mesh construction history is non-linear, and since the construction history is hierarchy-based, it's quite easy to adjust. The mesh construction history is composed of nodes called modifiers. Modifiers are listed as the children of the mesh in which they are active.

About Mesh Geometry

By itself, a mesh doesn't really create its own geometry. A modifier creates initial mesh geometry, such as a rectangle sheet, and subsequent modifiers further refine the geometry.

The primary purpose of a mesh node is to provide a bounding box by which the mesh's contents may be culled, while providing collision detection and lighting options. A mesh is a sub-class of group, but has extra properties for collision detection, lighting, and attribute channels. Anything that applies to a group - bounding box freezing, transformations, and so forth - also applies to a mesh, so make sure that you understand how group nodes work.

Mesh Anatomy

Figure 1.1. The anatomy of a face. Triangles are used to represent surfaces. A triangle is composed of at least three edges and at least three vertices. Triangles are the most basic geometric building block and since Scenome is a polygon modeler, it has lots of tools for working with polygons. For various reasons, polygons are not displayed in the hierarchy. Polygons are vector objects, that is, they are defined by coordinate positions instead of containing “hardcoded data” like an image, but they are not parametric in the same manner as a Bezier curve because curves are stored implicitly and tessellated.

This is a picture of face, edge, and vertex anatomy.

Vertices

A vertex is a point in space, connected to at least two other vertices. Typically, each vertex stores three, double-precision coordinates that represent its Cartesian coordinates in world space. The connections between vertices are called edges, and a minimum of three vertices and three edges forms a complete polygon.

Vertex normals

Vertex normals indicate the direction from which lighting may affect surfaces using the vertices for which the vertex normals are displayed. A cube with hard shading may have vertex normals that point in the direction of the surface normal, with hard angle differences [no interpolation] between vertex normals. A cube with soft vertex normals, uses the average of the surface normals to smoothly interpolate shading across its surfaces.

Edges

An edge is the line connecting two vertices. A minimum of three edges form a complete polygon. Edges should not be co-linear, that is, occupying the same section of a line.

Faces

A polygon surface is contained within the boundary representation formed by the polygon's vertices. Each polygon has a surface normal, at its centroid, that indicates the direction the polygon faces. This direction can be reversed by changing vertex winding. Scenome allows you to select and modify polygon surfaces and/or use surfaces as "off grid" click locations while drawing or performing refinements.

Face normals

Surface normals indicate the direction a polygon faces. All valid polygons have surface normals. Surface normals can serve as a valid click location when Snap-to-Points is enabled. This can be very useful.

Polygon Conditions

Scenome is very flexible - it doesn't really care how you create polygons or what you do with them. That said, there are a few important conditions of which you should be aware.

Avoid Sliver Polygons

Sliver polygons, or polygons with all vertices in a co-linear orientation, are invalid, but do not usually cause rendering errors in Scenome. [Though their presence certainly might upset runtime products.]

Avoid Singularities

Singularities, polygons with all their vertices in the same location, are also invalid. If you need to create a singularity, use a curve instead and set both its points to the same location, or use a light.

Concave Polygons

Concave polygons are not problematic, but since the rendering system automatically triangulates them, they might not appear to render properly. Some runtime products do not allow concave polygons.

Non-Planar Polygons

Non-planar polygons are not problematic, but since the rendering system automatically triangulates them, they might not appear to render properly.

Enclosure

You cannot create non-enclosed polygons - use a curve if you need such a shape.

Vertex Precision

By default, all Scenome databases use double-precision floating point coordinates. Therefore, all polygon data [vertex coordinates, texture coordinates] is stored using double instead of float. Scenome can switch precisions on the fly. However, changing from double to single precision will result in an irreversible loss of precision that may or may not cause changes to the database such as cracks, texture shimmering, and lighting differences. For this reason, if you need to work in single precision, you should set Scenome to single precision before you begin modeling. You can switch from single precision to double precision without problems at any time. Double precision databases require more disk space.

Winding Order

Figure 1.2. Winding describes the vertex order of a polygon. Polygons with clock-wise winding face towards the viewer and are not back-facing. Polygons with counter-clockwise winding face away from the viewer and are back-facing. All the faces in a mesh must have the same winding order. One face cannot "backface" from the other faces.

This is a picture of a face showing vertex winding order and resulting surface normal orientation.

Hidden Edges

Meshes are stored as triangles. However, you can hide an edge to produce the appearance of a quadrilateral. In this case, the mesh is still stored internally as triangles, but the visual appearance does change.

Registration

Class registration and implementation information is as follows:

Category TypeInformation
ImplementationC++
ModuleGEOMETRY.DLL
CoreYes
Class HierarchyNode » Group » Mesh
Outgoing DependenciesPalette Group