<model-viewer> 网络组件

向网站添加 3D 模型可能很棘手;<model-viewer> 就像编写 HTML 一样简单。

Joe Medley
Joe Medley

向网站添加 3D 模型并非易事。3D 模型最好在查看器中显示,该查看器可在所有浏览器(包括智能手机、桌面设备,甚至新型头戴式显示器)上自适应运行。查看器应支持渐进增强,以提高性能和渲染质量。它应支持所有设备上的用例,从较旧、低功耗的智能手机到支持增强现实的新设备。它应与最新技术保持同步。它应该具有良好的性能和无障碍功能。不过,构建此类查看器需要专业的 3D 编程技能,对于想要托管自己的模型而不是使用第三方托管服务的 Web 开发者来说,这可能是一项挑战。

不过,借助 <model-viewer> Web 组件,您可以声明式地向网页添加 3D 模型,同时将模型托管在您自己的网站上。 该组件的目标是让您无需了解底层技术和平台,即可向网站添加 3D 模型。该 Web 组件支持自适应设计,以及在某些设备上实现增强现实等用例。它包含无障碍、渲染质量和互动性方面的功能。

什么是 Web 组件?

Web 组件是一种使用标准 Web 平台功能构建的自定义 HTML 元素。Web 组件在所有意图和用途上的行为都与标准元素类似。它具有唯一的标记,可以具有属性和方法,并且可以触发和响应事件。简而言之,您无需了解任何特殊知识即可使用任何 Web 组件,更不用说 <model-viewer> 了。

本文介绍了 <model-viewer> 特有的功能。 如果您有兴趣详细了解 Web 组件,webcomponents.org 是一个不错的起点。

<model-viewer> 的功能

以下示例演示了 <model-viewer> 的一些功能。

基本 3D 模型

嵌入 3D 模型就像以下标记一样简单。通过使用 glb 文件,此组件可在任何主流浏览器上运行。

<!-- Import the component -->
<script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
<script nomodule src="https://unpkg.com/@google/model-viewer/dist/model-viewer-legacy.js"></script>
<!-- Use it like any other HTML element -->
<model-viewer
  id="mv-shark"
   src="shark.glb"
  camera-controls
></model-viewer>

该代码呈现如下:

添加动态效果和互动

auto-rotate 和 camera-controls 属性提供运动和用户控制。这些并不是唯一可能的属性。如需查看属性的完整列表,请参阅相关文档。

<model-viewer src="shark.glb" auto-rotate camera-controls>

使用海报图片延迟加载

所有 3D 模型都需要时间加载,添加 poster 属性意味着在模型准备就绪之前,系统会显示一张图片。您可以使用编辑器生成与 3D 渲染效果完全相同的海报图片。

<model-viewer src="shark.glb" controls auto-rotate
poster="shark.jpg">

自适应设计

该组件可处理某些类型的自适应设计,并可针对移动设备和桌面设备进行缩放。它还可以管理页面上的多个实例,并使用 Intersection Observer 在模型不可见时节省电池电量和 GPU 周期。

使用前面介绍的编辑器创建海报图片,可让该单张图片与 3D 渲染效果相匹配,即使 <model-viewer> 的宽高比会根据不同的屏幕尺寸而变化。

多张宇航服图片,代表自适应。
多张宇航服图片,代表自适应。

更多功能

如需查看更高级功能的演示,请参阅 <model-viewer> 文档。这些功能包括添加地面投影天空盒、创建动画纹理和热点。