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@)
   )