使用 3D 符号可视化点
3D 模型可用于符号化 SceneView 中的点。例如,包含树位置的数据集可以可视化为真实的树。对于城市中的街道设施,如长凳或公共汽车站,可以使用逼真的 3D 模型。
3D 模型可以作为 Web 样式(从 GeoScene Pro 发布到 GeoScene Online 或 Enterprise 的样式)中的符号加载到 GeoScene API for JavaScript 中,也可作为 glTF 模型加载。使用 Web 样式部分介绍了如何向应用程序添加 Web 样式以及如何自定义符号。GeoScene 提供了一组 3D 模型作为 Web 样式符号,您可以立即在应用程序中使用这些符号。以下是这些模型的完整列表,其中包含用于将其添加到应用的代码片段。如果要查找的 3D 符号不在此列表中,则可以使用几种方法将您自己的 3D 模型用作符号:
使用 Web 样式
作为 Web 样式提供的 3D 符号
您可以使用 WebStyleSymbol 类向场景中添加逼真的逻辑示意图 3D 符号。此类提供对 API 中立即可用的数百个符号的访问。只需引用符号的 styleName 和 name 即可创建所需的可视化。
有关有效 styleNames
及其符号名称的完整列表,请参阅 Web 样式符号指南页面。
更改 WebStyleSymbol 大小和颜色
WebStyleSymbol 没有典型的符号属性,如 size
和 color
。可将其看做一个包装器,用于创建具有 ObjectSymbol3DLayer 或 IconSymbol3DLayer 的 PointSymbol3D 对象。要修改任何符号属性,必须首先使用 WebStyleSymbol.fetchSymbol() 将 WebStyleSymbol 转换为常规符号。
使用真实 WebStyleSymbols 可视化要素示例演示了此工作流。
使用视觉变量时,WebStyleSymbols 不需要转换为 PointSymbol3D 实例。使用逼真的 3D 符号可视化要素演示了如何将视觉变量应用于引用 WebStyleSymbols 的渲染器,以根据实际测量值缩放逼真符号的大小。
将自定义 3D 模型发布为 Web 样式符号
从 GeoScene Pro 1.2.1 开始,您可将 3D 模型作为 Web 样式符号发布到 GeoScene Online 和 GeoScene Enterprise 1.6。您可以阅读 GeoScene Pro 文档,以了解如何共享 Web 样式。阅读此博客文章,了解如何使用 3D 符号发布 Web 样式。
发布 Web 样式后,可以使用 WebStyleSymbol 类在应用程序中加载其任何符号:
该模式与 GeoScene 提供的 3D Web 样式符号相同。有关详细信息,请参阅使用 Web 样式部分。
使用 glTF 格式的自定义 3D 模型
glTF 是一种基于 JSON 的 3D 模型开放标准,许多 3D 建模应用程序均支持该标准。支持 glTF 的软件的完整列表可以在官方 GitHub 存储库中找到。此外,还可以在一些网站中下载现成的 glTF 模型,其中一些是免费的。
从 GeoScene API for JavaScript 4.11 版本开始,在应用程序中可利用两个选项使用 glTF 模型:
- 作为使用 ObjectSymbol3DLayer 进行符号化的资源
- 导入到 Mesh 几何实例中
使用 ObjectSymbol3DLayer
glTF 格式的 3D 模型可以作为 ObjectSymbol3DLayer.resource 的 href 属性的源引用。如果要将模型用作点(例如树、长凳、飞机等)的符号,请使用此选项。
在 GeoScene API for JavaScript 中,您可以通过在服务器上托管 3D glTF 模型并将 ObjectSymbol3DLayer.resource 的 href 属性指向样式的 URL 来使用它们。该 URL 可以指向引用外部二进制资源(.bin 文件和纹理)的 glTF 文件 (.gltf)或单个二进制文件(.glb)。
使用格网几何
加载 glTF 模型的另一种方法是使用 createFromGLTF() 方法将其作为 Mesh 几何导入。当模型表示 3D 几何(例如建筑物或地质模型)时,请使用此方法。导入时应指定模型的地理位置。导入后,Mesh 几何可以在图形中使用,并添加到 GraphicsLayer 或 view.graphics 中。您可以使用 offset()、rotate() 和 scale() 等方法进一步修改模型的位置。
GeoScene API for JavaScript 中的 glTF 支持
- 仅支持 glTF 版本 2.0。
- glTF 文件必须包含单个场景。
- 场景可以包含任意数量的节点、格网和
TRIANGLE
、TRIANGLE_STRIP
或TRIANGLE_FAN
基元类型。不支持POINTS
和LINES
。 - 仅支持 Metallic-Roughness 类型的材料。
- 通过 MSFT lod 扩展支持多个细节级别。
- 不支持动画、皮肤和照相机定义。
注:在版本 4.11 之前,可以通过使用 GeoScene Pro SDK 从 3D 模型导出 Web 3D 对象来添加客户端 3D 模型。尽管此方法仍然有效(请参阅 GeoScene Pro SDK 存储库中的详细信息),但建议您使用 glTF 格式的 3D 模型。