Mesh

AMD: require(["geoscene/geometry/Mesh"], (Mesh) => { /* 代码 */ });
ESM: import Mesh from "@geoscene/core/geometry/Mesh";
类: geoscene/geometry/Mesh
继承于: Mesh Geometry Accessor
起始版本: GeoScene API for JavaScript 4.22

格网是一种常规的客户端 3D 几何类型,由具有属性的折点组成。折点包括地理位置、影响照明/阴影的法线以及可用于将图像映射到格网的 uv 坐标。折点被组合成 3D 基元以渲染场景中的格网(目前仅支持三角形基元)。

格网几何可以具有决定其显示方式的固有材料。与场景图层中的 3D 对象类似,格网几何使用包含 FillSymbol3DLayer 的 MeshSymbol3D 符号进行符号化。

为了支持多种材质(复杂 3D 模型通常就是这种情况),格网可以定义为格网中的特定区域定义材质的组件。除了支持多种材质外,组件还可以重用折点,否则这些折点将被复制以形成三角形。

创建简单的格网几何基元

格网几何类具有许多用于创建简单基元形状的便利功能。这些形状可以帮助您开始了解格网几何。

// 创建盒子格网几何
let mesh = Mesh.createBox(location, {
  size: {
    width: 100,
    height: 50,
    depth: 50
  },
  material: {
    color: "red"
  }
});

// 创建图形并将其添加到视图中
let graphic = new Graphic({
  geometry: mesh,
  symbol: {
    type: "mesh-3d",
    symbolLayers: [ { type: "fill" } ]
  }
});

view.graphics.add(graphic);

手动创建格网几何

可以通过指定顶点属性组件来手动创建网格几何图形,如以下示例所示:

// 创建表示金字塔的格网几何
let pyramidMesh = new Mesh({
  vertexAttributes: {
    // 巴黎卢浮宫金字塔的折点位置
    position: [
      // 折点 0 - 金字塔的底部,南
      2.336006, 48.860818, 0,

      // 折点 1 - 金字塔的底部,东
      2.336172, 48.861114, 0,

      // 折点 2 - 金字塔的底部,北
      2.335724, 48.861229, 0,

      // 折点 3 - 金字塔的底部,西
      2.335563, 48.860922, 0,

      // 折点 4 - 金字塔的顶部
      2.335896, 48.861024, 21
    ]
  },
  // 添加带有索引折点的面的单个组件
  // 因此我们只需要定义一次 
  components: [
    {
      faces: [
        0, 4, 3,
        0, 1, 4,
        1, 2, 4,
        2, 3, 4
      ]
    }
  ],
  // 如果折点的位置不在 WGS84 中,请指定空间参考
});

// 将折点几何添加到图形
let graphic = new Graphic({
  geometry: pyramidMesh,
  symbol: {
    type: "mesh-3d",
    symbolLayers: [ { type: "fill" } ]
  }
});

view.graphics.add(graphic);

注意:从版本 4.11 开始,格网几何不再支持自动转换。

示例:

构造函数

new Mesh(properties)
参数:
properties Object
optional

所有可传入构造函数的属性列表,请参见属性

属性列表

可以设置、检索或监听的任何属性。参见使用属性主题。
展示继承属性 隐藏继承属性
名称 类型 描述
Object更多信息

缓存用于存储从几何图形中计算的值,这些几何图形需要在突变时清除或重新计算。

更多信息Geometry
MeshComponent[]更多信息

一组格网组件,可用于将材质应用于同一格网的不同区域。

更多信息Mesh
String更多信息

类名。

更多信息Accessor
Extent更多信息

格网几何的 3D 范围。

更多信息Mesh
Boolean更多信息

指示几何是否具有 M 值。

更多信息Geometry
Boolean更多信息

指示几何是否具有 z 值(高程)。

更多信息Geometry
SpatialReference更多信息

几何的空间参考。

 
更多信息Geometry
String更多信息

表示几何类型的字符串值。

更多信息Mesh
Accessor更多信息

描述格网的每个折点的属性的对象。

更多信息Mesh

属性详细说明

cache Objectreadonly inherited

缓存用于存储从几何图形中计算的值,这些几何图形需要在突变时清除或重新计算。 例如,面的范围。

一组格网组件,可用于将材质应用于同一格网的不同区域。组件有三种常见的使用模式。

  1. 为整个格网指定材质。在这种情况下,请使用仅具有材质的单个组件(将面保留为 null)。
  2. 重用折点属性。对连续曲面进行建模时,只需指定一次折点,然后简单地引用它们,这样会很方便。在这种情况下,请使用设置了面的单个组件来索引形成三角形的折点属性。
  3. 为同一格网指定多个材质。在这种情况下,请使用多个组件,其面确定组件的材料应用于格网的哪个区域。
declaredClass Stringreadonly inherited

类名。类的名称声明格式为 geoscene.folder.className

extent Extentreadonly

网格几何的 3D 范围。范围是根据存储在 vertexAttributes中的顶点位置位置计算的。3D 范围是按需计算和缓存的。如果手动修改顶点属性,则必须调用 vertexAttributesChanged() 以确保重新计算范围。

指示几何是否具有 M 值。

指示几何是否具有 z 值(高程)。

在地理或公制坐标系中定义的

Z 值是 以米单位。 但是,在使用投影坐标系的局部场景中,假定垂直单位与服务指定的水平单位相同。

几何的空间参考。

 
默认值:WGS84 (wkid: 4326)
type Stringreadonly

表示几何类型的字符串值。

对于 Mesh 类型始终为 "mesh"

vertexAttributes Accessorautocast

描述格网的每个折点的属性的对象。折点属性是平面数值数组,用于描述每个折点的位置(强制)、法线(用于照明计算和着色)和 uv(用于将材质图像映射到格网表面)。

折点属性可以通过组件属性中指定的索引进行寻址。如果格网不包含任何组件,或者组件未指定任何面,则折点属性将被解释为好像每个连续的折点三元组组成一个三角形。

属性:
position Float64Array
自动转换自 Number[]|Float32Array

折点位置的平面数组。折点位置具有 x、y 和 z 坐标,并且它们应位于几何的空间参考系统中。

optional
自动转换自 Number[]|Float64Array

折点 uv 坐标的平面数组(每个折点 2 个元素)。

normal Float32Array
optional
自动转换自 Number[]|Float64Array

折点法线的平面数组(每个折点 3 个元素,范围从 -1 到 1)。

color Uint8Array
optional
自动转换自 Number[]|Uint8ClampedArray

Since: 4.9

折点颜色的平面数组(每个折点 4 个元素,范围从 0 到 255)。折点颜色乘以组件材料颜色(如果已定义)。

tangent Float32Array
optional
自动转换自 Number[]|Float64Array

Since: 4.11

折点切线的平面数组(每个折点 4 个元素,范围从 -1 到 1。第 4 个元素是一个符号值(-1 或 +1),表示切线基的偏手性)。折点切线用于法线映射,请参见 MeshMaterial.normalTexture

示例代码:
let mesh = new Mesh({ spatialReference: SpatialReference.WebMercator });

// 指定围绕给定点组成正方形的两个三角形的折点。
// 设置 Uv 坐标以从角到角覆盖从 (0, 0) 到 (1, 1) 的正方形。
mesh.vertexAttributes = {
  position: [
    pt.x - 10, pt.y - 10, 100,
    pt.x + 10, pt.y - 10, 100,
    pt.x + 10, pt.y + 10, 100,

    pt.x - 10, pt.y - 10, 100,
    pt.x + 10, pt.y + 10, 100,
    pt.x - 10, pt.y + 10, 100
  ],
  uv: [
    0, 0,
    1, 0,
    1, 1,

    0, 0,
    1, 1,
    0, 1
  ]
};

方法列表

展示继承方法 隐藏继承方法
名称 返回值类型 描述
更多信息

将组件添加到格网中。

更多信息Mesh
Mesh更多信息

将格网居中于指定位置,而不更改其比例。

更多信息Mesh
Mesh更多信息

创建 Mesh 对象的深度克隆。

更多信息Mesh
Mesh更多信息

创建表示框的格网。

更多信息Mesh
Mesh更多信息

创建表示圆柱体的格网。

更多信息Mesh
Promise<Mesh>更多信息

从 url 参数引用的 glTF 模型创建新的格网几何。

更多信息Mesh
Mesh更多信息

从面几何创建新的格网几何。

更多信息Mesh
Mesh更多信息

创建表示平面的格网。

更多信息Mesh
Mesh更多信息

创建表示球体的格网。

更多信息Mesh
*更多信息

创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象的值对其进行初始化。

更多信息Geometry
Mesh更多信息

将格网几何偏移指定的距离(以 x、y 和 z 为单位)。

更多信息Mesh
更多信息

从格网中移除组件。

更多信息Mesh
Mesh更多信息

围绕其 x、y 和 z 轴旋转格网几何(按该顺序)。

更多信息Mesh
Mesh更多信息

按指定系数缩放格网几何。

更多信息Mesh
Object更多信息

将此类的实例转换为其 GeoScene portal JSON 格式。

更多信息Geometry
更多信息

通知需要重新计算依赖于折点属性的任何缓存值。

更多信息Mesh

方法详细说明

addComponent(component)

将组件添加到格网中。

参数:
自动转换自 Object

要添加的组件。

centerAt(location, params){Mesh}

在指定位置居中格网而不改变其比例。 格网将就地修改。要改为修改格网副本,请在调用 centerAt() 之前使用 clone()

参数:
规范:
location Point

格网居中的位置。

params Object
optional

其他参数。

规范:
geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则应用于格网中心的平移在笛卡尔系统中相对于地球上的局部坐标系完成,并以米为单位指定。

origin Point
optional

要居中的原点。如果未指定,格网将在格网范围中心居中。

返回值:
类型 描述
Mesh 修改后的格网。
clone(){Mesh}

创建 Mesh 对象的深度克隆。

返回值:
类型 描述
Mesh Mesh 对象的新实例,该实例等于用于调用 .clone() 的对象。
createBox(location, params){Mesh}static

创建表示框的格网。生成的格网的空间参考与其放置位置相同。

框 UV 坐标空间

框几何将具有根据以下方案生成的 UV 坐标:

参数:
规范:
location Point

框的底部中心位置。

params Object
optional

其他参数。

规范:
size Number|Object
optional

统一大小值或包含单个值”宽度“、”高度“和”深度“的对象。大小值的单位派生自所提供位置的空间参考,除非指定了单位。

规范:
width Number
optional

创建的格网的宽度。

depth Number
optional

创建的格网的深度。

height Number
optional

创建的格网的高度。

geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则在笛卡尔系统中相对于地球上的局部坐标系创建格网,并以米为单位指定大小。

unit String
optional

大小的单位(默认为位置空间参考的单位)。

可选值"millimeters"|"centimeters"|"decimeters"|"meters"|"kilometers"|"inches"|"feet"|"yards"|"miles"|"nautical-miles"|"us-feet"

optional
自动转换自 Object

用于格网的材质。

imageFace String
optional

用于生成图像 uv 坐标的面。 默认情况下,会为所有面生成一组未包络的 UV 坐标。 通过将 imageFace 参数设置为 eastwestnorthsouth 之一,updown,指定的面将具有完整大小的 UV 坐标,而其他面将属于其常规未包络的 UV 坐标。 这对于仅将图像应用于框的单个面很有用。 提供的 material 参数将应用于指定的 imageFace。 生成的格网将有两个组件,第一个包含选定的图像面,第二个包含框的其他面。

返回值:
类型 描述
Mesh 生成的格网。
示例代码:
let mesh = Mesh.createBox(point, {
  size: {
    width: 10,
    height: 100,
    depth: 20
  },
  material: {
    color: "green"
  }
});
let mesh = Mesh.createBox(point, {
  imageFace: "top",
  material: {
    colorTexture: new MeshTexture({ url: "./url-to-image.png" })
  }
});
createCylinder(location, params){Mesh}static

创建表示圆柱体的格网。生成的格网的空间参考与其放置位置相同。

圆柱 UV 坐标空间

圆柱体几何将具有根据以下方案生成的 UV 坐标(示例如 8 个折点圆柱体所示):

参数:
规范:
location Point

圆柱体底部中心的位置。

params Object
optional

其他参数。

规范:
size Number|Object
optional

统一大小值或包含单个值”宽度“、”高度“和”深度“的对象。大小值的单位派生自所提供位置的空间参考,除非指定了特定单位。

规范:
width Number
optional

创建的格网的宽度。

depth Number
optional

创建的格网的深度。

height Number
optional

创建的格网的高度。

geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部地和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则在笛卡尔系统中相对于地球上的局部坐标系创建格网,并以米为单位指定大小。

unit String
optional

大小的单位(默认为位置空间参考的单位)。

可选值"millimeters"|"centimeters"|"decimeters"|"meters"|"kilometers"|"inches"|"feet"|"yards"|"miles"|"nautical-miles"|"us-feet"

densificationFactor Number
optional

用于生成表示圆柱体的格网的附加细分数。致密化因子参数 0 将生成默认值 16 个折点以近似于圆柱体。致密化因子为 1 将生成 32 个折点,依此类推。致密化因子越大,格网就越接近完美的圆柱体(以处理和渲染性能为代价)。

optional
自动转换自 Object

用于格网的材质。

返回值:
类型 描述
Mesh 生成的格网。
createFromGLTF(location, url, params){Promise<Mesh>}static
起始版本: GeoScene API for JavaScript 4.22

url 参数引用的 glTF 模型创建新的格网几何。 生成的格网的空间参考与 location 参数相同。 有关支持的 glTF 功能的更多信息,您可以阅读使用 3D 符号可视化点 指南主题。 目前不支持动画。

参数:
规范:
location Point

模型原点的位置。如果位置不包含 z 值,则假定 z 为 0

url String

<p>glTF 模型的 URL。URL 应指向 glTF 文件(.gltf 或 .glb),该文件可以引用其他二进制文件 (.bin) 和图像文件(.jpg,.png)。</p>

params Object
optional

其他参数。

规范:
geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则在笛卡尔系统中相对于地球上的局部坐标系创建格网,并以米为单位指定大小。

signal AbortSignal
optional

一个 AbortSignal 中止加载过程。 如果取消,promise 将被拒绝,并出现名为 AbortError 的错误。 另请参阅 AbortController

返回值:
类型 描述
Promise<Mesh> 解析为表示加载的 glTF 模型的格网几何的 promise。
createFromPolygon(polygon, params){Mesh}static

从面几何创建一个新的格网几何。 生成的格网仅包含一个位置折点属性和一个带有面的组件。 默认着色将设置为 flat。 生成的格网的空间参考与输入面相同。 生成的格网将不包含任何 uv 或法线折点属性。

参数:
polygon Polygon

输入面。

params Object
optional

可选参数。

规范:
optional
自动转换自 Object

用于格网的材质。

返回值:
类型 描述
Mesh 表示三角化面的新格网。
createPlane(location, params){Mesh}static

创建表示平面的格网。生成的格网的空间参考与其放置位置相同。平面由两个三角形组成,在创建时可以方便地定向。

平面 UV 坐标空间

平面几何将具有根据以下方案生成的 UV 坐标

参数:
规范:
location Point

平面底部中心的位置。

params Object
optional

其他参数。

规范:
size Number|Object
optional

统一大小值或包含单个值”宽度“和”高度“的对象。大小值的单位派生自所提供位置的空间参考,除非指定了单位。

规范:
width Number
optional

创建的格网的宽度。

height Number
optional

创建的格网的高度。

facing String
optional
默认值: "up"

平面朝向的方向。

可选值:"east"|"west"|"north"|"south"|"up"|"down"

geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则在笛卡尔系统中相对于地球上的局部坐标系创建格网,并以米为单位指定大小。

unit String
optional

大小的单位(默认为位置空间参考的单位)。

可选值:"millimeters"|"centimeters"|"decimeters"|"meters"|"kilometers"|"inches"|"feet"|"yards"|"miles"|"nautical-miles"|"us-feet"

optional
自动转换自 Object

用于格网的材质。

返回值:
类型 描述
Mesh 生成的格网。
createSphere(location, params){Mesh}static

创建表示球体的格网。生成的格网的空间参考与其放置位置相同。

Sphere UV coordinate space

球体几何将具有根据以下方案生成的 UV 坐标(示例如 8x8 顶点球体所示):

参数:
规范:
location Point

球体底部中心的位置。

params Object
optional

其他参数。

规范:
size Number|Object
optional

统一大小值或包含单个值"宽度"、"高度"和"深度"的对象。大小值的单位派生自所提供位置的空间参考,除非指定了单位。

规范:
width Number
optional

创建的格网的宽度。

depth Number
optional

创建的格网的深度。

height Number
optional

创建的格网的高度。

geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则在笛卡尔系统中相对于地球上的局部坐标系创建格网,并以米为单位指定大小。

unit String
optional

大小的单位(默认为位置空间参考的单位)。

可选值:"millimeters"|"centimeters"|"decimeters"|"meters"|"kilometers"|"inches"|"feet"|"yards"|"miles"|"nautical-miles"|"us-feet"

densificationFactor Number
optional

用于生成表示球体的格网的附加细分数。致密化因子参数 0 将生成默认值为 16 x 16 的折点以近似球体。致密化因子为 1 将生成 32 x 32 的折点,依此类推。致密化因子越大,格网就越接近完美的球体(以处理和渲染性能为代价)。

optional
自动转换自 Object

用于格网的材质。

返回值:
类型 描述
Mesh 生成的格网。
fromJSON(json){*}static

创建此类的新实例,并使用从 GeoScene 产品生成的 JSON 对象的值对其进行初始化。传递给输入 json 参数的对象通常来自对 REST API 中的查询操作的响应,或者来自另一个 GeoScene 产品的 toJSON() 方法。有关何时以及如何使用此函数的详细信息和示例,请参阅指南中的使用 fromJSON() 主题。

参数:
json Object

GeoScene 格式的实例的 JSON 表示形式。有关各种输入 JSON 对象的结构示例,请参阅 GeoScene REST API 文档

返回值:
类型 描述
* 返回一个该类的新实例。
offset(dx, dy, dz, params){Mesh}

将格网几何偏移指定的距离(以 x、y 和 z 为单位)。 x、y 和 z 的单位是空间参考的单位。 当在地理上应用偏移量时(默认为 GCS 或 WebMercator),则偏移量以米为单位进行解释。 格网将就地修改。 要修改格网副本,请在调用 offset() 之前使用 clone()

参数:
规范:
dx Number

在 x 方向上偏移几何的量。

dy Number

在 y 方向上偏移几何的量。

dz Number

在 z 方向上偏移几何的量。

params Object
optional

其他参数。

规范:
geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则在笛卡尔系统中应用相对于地球上的局部坐标系的偏移量,并以米为单位指定。

origin Point
optional

要应用偏移的原点。如果未指定,则格网将从格网范围中心偏移。

返回值:
类型 描述
Mesh 修改后的格网(此实例)。
removeComponent(component)

从格网中移除组件。

参数:
component MeshComponent

要删除的组件。

rotate(angleX, angleY, angleZ, params){Mesh}

围绕其 x、y 和 z 轴旋转格网几何(按此顺序)。 对于每个旋转角度,当从相应轴的方向看时,旋转方向为顺时针方向。 格网将就地修改。 要修改格网的副本,请在调用 rotate() 之前使用 clone()

参数:
规范:
angleX Number

绕 x 轴旋转的角度(以度为单位)。

angleY Number

旋转的角度(以度为单位)。

angleZ Number

旋转的角度(以度为单位)。

params Object
optional

其他参数。

规范:
geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则在笛卡尔系统中相对于地球上的局部坐标系应用旋转,并以米为单位指定。

origin Point
optional

要围绕其旋转的原点。如果未指定,格网将围绕格网范围中心旋转。

返回值:
类型 描述
Mesh 修改后的格网(此实例)。
示例代码:
// 将格网在水平面(围绕 z 轴)旋转 90 度,
// 并在横向垂直平面(围绕 y 轴)倾斜 20 度。
mesh.rotate(0, 20, 90);
scale(factor, params){Mesh}

按指定因子缩放格网几何。 格网将就地修改。 要改为修改格网副本,请在调用 scale() 之前使用 clone()

参数:
规范:
factor Number

缩放几何的量。

params Object
optional

其他参数。

规范:
geographic Boolean
optional

是相对于地球还是投影坐标系 (PCS) 进行地理配准。此参数仅与可在局部和全球查看模式(当前仅限 WebMercator)中使用的空间参考相关,否则将被忽略。默认值为 true。如果为 true,则在笛卡尔系统中应用相对于地球上的局部坐标系的比例。

origin Point
optional

缩放的原点。如果未指定,则将围绕格网范围中心缩放格网。

返回值:
类型 描述
Mesh 修改后的格网(此实例)。
toJSON(){Object}inherited

将此类的实例转换为 GeoScene portal JSON 格式。 有关更多信息,请参阅使用 fromJSON() 指南主题。

返回值:
类型 描述
Object 此类实例的 GeoScene portal JSON 格式。
vertexAttributesChanged()

通知需要重新计算依赖于折点属性的任何缓存值。在就地修改折点属性后使用此方法,以便相应地重新计算依赖于这些折点属性的值(例如范围的计算)。

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.