X3D logo

Extensible 3D (X3D)
Part 1: Architecture and base components

6.23 LatticeXvl component

[PROPOSED]

[NOTE: Globally replace 6.23 with the correct section number.]

 

--- X3D separator bar ---

 

6.23.1 Topics

This subclause describes the LatticeXvl component of this International Standard. Table 6.23.1 provides links to the major topics in this subclause.

 Table 6.23.1:  Topics in this subclause

6.23.1 Topics

6.23.2 Concepts

6.23.3 Node reference

6.23.4 Support levels

 

6.23.2 Concepts

[NOTE: Not sure if this is what you are looking for.  Please advise.]

6.23.2.1 Overview of LatticeXvl

LatticeXvl is an extension to X3D that enables the use of Lattice surfaces in X3D scenes.  Since these surfaces are generated parametrically, only a small amount of data need be provided for describing complex surfaces.  This provides a highly compressed format for storage and transmission of geometric data.

6.23.2.2 Lattice Structure

The Lattice structure consists of a Lattice Surface and a Lattice Mesh.  A Lattice Surface is free-form surface data represented by Gregory patches.  A Lattice Mesh is a polygon mesh that consists of faces, edges, vertices and rounding weights. These meshes have the same topology.  Based on an invertible rounding algorithm, a Lattice Mesh can be transformed into a Lattice Surface and vice versa.


This figure illustrates a Lattice structure.  The feft model is Lattice Mesh and the right model is Lattice Surface.  Both models share the same topology.

6.23.2.3 LatticeXvl Representation

LatticeXvl contains a single geometry node, XvlShell, which encapsulates all of the attributes necessary to specify a Lattice structure.  This includes Lattice Mesh data such as face and edges and tesselation data such as shell type and rounding weight.

6.23.2.3.1 Shell Type

LatticeXvl supports two shell types: POLYGON_MESH and LATTICE_MESH.  POLYGON_MESH shells are Lattice Meshes, that is, Lattice Shells without rounding.  LATTICE_MESH shells are Lattice Shells with rounding.

Shell Type

LatticeXvl Data

 

Representation on Browser

POLYGON_MESH

(Polygon Mesh without rounding)


Consists of straight lines and surfaces.


Display Lattice Mesh as it is.

LATTICE_MESH

(Polygon Mesh with rounding)


Consists of straight lines, surfaces and Rounding weights.


Generate Lattice Surface and display Gregory Patch.

6.23.2.3.2 Rounding Weight

LatticeXvl supports rounding weights on edges and vertices. The rounding weight of a component specifies how closely that component attracts the underlying surface.


Rounding Weights of all edges = 0.5.


Rounding Weights of all edges = 1(default).


Rounding Weights of all edges = 1.5.


Rounding Weights of all vertices = 0.5.


Rounding Weights of all vertices = 1(default).


Rounding Weights of all vertices = 1.5.

  

6.23.3 Node Reference

6.23.3.1 Node Index

Table 6.23.3.1 lists the nodes of the LatticeXvl component.

 Table 6.23.3.1:  Index of LatticeXvl component nodes

 

6.23.3.2 XvlShell

 

6.23.3.2 XvlShell

XvlShell : GeometryNodeType {
  field []       SFString       shellType              # initial value: “LATTICE_MESH”;
                                                       #  valid values: “LATTICE_MESH”, “POLYGON_MESH”
  field []       SFInt32         numberOfDivisions      # initial value: 4; valid values: 2,4,6,8,…
  field []       SFNode          coord                  # initial value: NULL
  field []       SFNode          texCoord               # initial value: NULL
  field []       MFFloat         vertexRound            # initial value: []
  field []       MFInt32         edgeBeginCoordIndex    # initial value: []; valid range: [-1, inf)
  field []       MFInt32         edgeEndCoordIndex      # initial value: []; valid range: [-1, inf)
  field []       MFFloat         edgeRound              # initial value: []
  field []       MFVec3f         edgeBeginVector         # initial value: []
  field []       MFVec3f         edgeEndVector          # initial value: []
  field []       MFInt32         faceCoordIndex         # initial value: []; valid range: [-1, inf)
  field []       MFInt32         faceTexCoordIndex      # initial value: []; valid range; [-1, inf)
  field []       MFInt32         faceEmpty              # initial value: []
  field []       MFInt32         faceHidden             # initial value: []
}

The XvlShell node describes a LatticeXvl surface.  An XvlShell node defines a polygonal mesh of faces and a set of tesselation parameters.  It defines the faces in the same way as an IndexedFaceSet – as sets of coordinate indexes referencing vertices in a child Coordinate node.  The tesselation parameters include type of interpolation (smooth or polygonal), rounding weights (on faces, edges and vertices), and number of divisions.  The XvlShell may optionally include a TextureCoordinate child node and texture coordinate values that are interpolated across the LatticeXvl surface.

The XvlShell fields are as follows:

·        shellType specifies the type of interpolation.  Setting shellType to “LATTICE_MESH” generates a smoothly interpolated LatticeXvl surface, while “POLYGON_MESH” turns off interpolation and merely returns the given polygonal mesh.

·        numberOfDivisions specifies how many times to subdivide each edge in the mesh.  It should be a positive even integer.  A value of 2 will yield 4 patches per face, 4 will yield 16 patches per face, etc.

·        vertexRound specifies the rounding weights for each vertex.   If NULL, each vertex is given the default rounding weight (1.0).

·        edgeBeginCoordinateIndex and edgeEndCoordinateIndex specify the begin and end coordinates for each edge.

·        edgeRound specifies the rounding weights for each edge.  If NULL, each edge is given the default rounding weight  (1.0).

·        edgeBeginVector and edgeEndVector specify the begin and end surface normal vectors for each edge.  If NULL, each edge is given the default surface normal vector (0,1,0) for its beginning and end.

·        faceCoordIndex specifies the mesh faces.  It is similar to IndexedFaceSet:coordIndex.

·        faceTexCoordIndex specifies the texture coordinates of the mesh faces.  It is similar to IndexedFaceSet:texCoordIndex.

·        faceEmpty specifies the solidity of each face.  A value of True specifies that the given face is empty – that is, that it is a hole in the surface; while a value of False specifies that the face is solid – that is, that it is part of the surface.  If NULL, all faces are assumed to be solid.

·        faceHidden specifies the visibility of each face.  A value of True specifes that the given face is visible; False specifies that it is invisible.  If NULL, all faces are assumed to be visible.

 

 

6.23.4 Support levels

The LatticeXvl component provides 1 level of support as specified in Table 6.23.4.

Table 6.23.4 -- LatticeXvl component support levels

Level

Prerequisites

Nodes/Features

Support

1

Core 1
Geometric property 1
Texturing 1

 

 

 

 

XvlShell

All fields

[NOTE: Are the prerequisites correct?  XvlShell is a geometry node that uses coordinates and texture coordinates.] 

 

 

--- X3D separator bar ---