MeshGeom包含PATCH、NORMAL和TEXCOORD三类关键字。

PATCH

包含一个或多个几何信息,每个几何信息之间使用,进行分隔。几何类型只允许:
  • Point
  • LineString
  • Polygon
  • MultiPoint
  • MultiLineString
  • MultiPolygon
  • IndexSurface
  • TriangleStrip
  • TriangleFan

NORMAL

包含一组法向量信息,类型为三维点坐标,坐标串间使用,进行分隔,使用()对每一个几何对象进行包裹,坐标点数必须与Patch中顶点个数一致。

TEXCOORD

包含一组纹理坐标信息,类型为二维点坐标,坐标串间使用,进行分隔,使用()对每一个几何对象进行包裹,坐标点数必须与Patch中顶点个数一致。

-- 2 patches, 1 is point and 2 is indexsurface
MESHGEOM(
  PATCH(POINT(0 0 1),
     INDEXSURFACE(VERTEX(0 0 1,0 10 2,10 10 3,10 0 4), INDEX((0,1,2),(1,2,3)))
    )
)

-- With Norma and texcoord
MESHGEOM(
  PATCH(
    TRIANGLESTRIP(0 0 1,0 10 2,10 10 3,10 0 4)
  ),
  NORMAL(
    (0 0 0, 1 1 1,2 2 2, 3 3 3)
  ),
  TEXCOORD(
    (0 0, 1 1, 2 2, 3 3)
  )
)

同样支持Z和M维度,要求Meshgeom中所有patch的维度必须一致。

-- 2 patches, 1 is point and 2 is indexsurface
MESHGEOM(
  PATCH(
    POINT M(0 0 1),
     INDEXSURFACE M(VERTEX(0 0 1,0 10 2,10 10 3,10 0 4), INDEX((0,1,2),(1,2,3)))
    )
  )

Meshgeom支持对其他meshgeom对象的引用,包含schema、table、column和key四个关键字,其中后三个为必须的内容,字符串使用@ 进行包裹。

/*
具体格式如下
MESHGEOM(
   schema(@schema_name@),
    table(@table_name@),
    column(@column_name@),
    key(@where_clause@)
   )
*/

  MESHGEOM(
   schema(@public@),
    table(@mytable@),
    column(@mycolumn@),
    key(@id=1@)
   )