1. iTwin.js 显示系统

iTwin.js 显示系统负责生成和渲染图形,以实现 iTwin 内容的可视化。这些内容可以包括 iModel、实景模型、物联网传感器数据、地图图像和其他数据源。应用程序还可以通过 DecoratorsTilegraphicsproviders 提供自己的图形。

显示系统分为两个子系统:

  • 在前端运行的基于 WebGL 的渲染器,负责显示视口 (Viewports) 的内容;
  • 在后端运行的本机代码瓦片生成器,负责从 iModel 的内容生成 imodel 瓦片(tiles) 格式。

可以在前端和后端子系统之间引入缓存层(Cacheing Layer),以提供先前生成的瓦片;或者后端可以维护自己的内部缓存。

本文档主要涉及显示系统的前端部分;后端瓦片生成器的文档仅限于 iModel 瓦片格式的概述。

1.1. 特性

1.2. 配置

渲染器的职责分为两个对象:

  • TileAdmin 协调对瓦片的请求,并管理其生命周期以限制内存消耗。可通过 IModelApp 访问。tileAdmin,并在启动时通过 IModelAppOptions.tileAdmin 进行配置。
  • 渲染系统(RenderSystem)通过 WebGL 与图形硬件通信,以分配资源,如渲染图形和渲染纹理,并将视口的内容绘制到屏幕上。可通过 IModelApp.renderSystem 访问,并在启动时通过 IModelAppOptions.renderSys 进行配置。

1.3. WebGL

由于渲染器在浏览器环境中运行,因此它在引擎盖下使用 WebGL 与图形硬件通信。但是,WebGL 上下文不会公开供应用程序使用。相反,GraphicBuilderRenderSystem 等抽象提供了更高级别的 API,用于间接使用 WebGL 资源。

渲染器支持任意数量的视口(Viewports),所有视口共享一个 WebGL 上下文,以减少着色器、纹理和平铺等资源的重复。视口可以相对于彼此自由定位,可以重叠,也可以不重叠。

渲染器将尝试使用 WebGL 2,它提供了比 WebGL 1 更多的功能和更好的性能;但在缺少 WebGL 2 支持的设备上,将退回到 WebGL 1。在撰写本文时,Safari 浏览器终于获得了对 WebGL 2 的官方支持(在 macOS Monterey 和 iOS 15 中),这使得 WebGL 2 几乎得到了普遍支持。尽管如此,渲染器的某些高级功能在某些设备上可能不受支持;请咨询兼容性检查器,以确定哪些功能可能在您的设备上不可用。

支持主要的现代浏览器,包括 Firefox、Safari 和基于 Chrome 的浏览器(Chrome、Electron、Brave、“new”Edge 等)。在基于 chromium 的浏览器中可以观察到最佳的图形性能。不支持 Internet Explorer 和旧版的 Edge,可点击此处进行检查是否支持 WebGL 2。

1.4. 可选项

WebGL 只公开了现代图形硬件功能的一小部分。通过利用 Bentley Systems 的 iTwin for Unrealsample Unity exporter 导出网格,分别供 Unreal Engine 和 Unity 使用,可以生成 iModels 的更多照片级真实感可视化。或者,您可以使用 IModelDb.exportGraphics 导出编写您选择的格式。

results matching ""

    No results matching ""