场景类拼图参考 - Soft8Soft
Description: 如何用Verge3D拼图对场景和渲染执行各种操作。

# 场景 | Scenes

此类拼图用于操作场景和渲染。

## 内容

- 拼图参考
  - load scene + percentage
  - append scene + percentage
  - unload scene
  - is scene loaded
  - enable rendering
  - disable rendering
  - create environment
  - batch geometry
  - export to gltf
  - export to usdz
  - raycast
  - add fog

#

## 拼图参考

#

### load scene + percentage

当此拼图被触发时，当前场景将被卸载，并从指定的 .gltf 文件中加载一个新的场景。

有关使用示例，请查看 Load Unload 演示（也可在资源商店中找到）。

在加载完成后，触发 "when loaded do" 插槽中的拼图。此外，还有一个可选的 "on progress do(在过程中执行...)" 插槽。放在这个插槽里的拼图会在加载过程中被持续触发，并且可以利用 "percentage(百分比)" 拼图。场景被加载时会被分配一个名称，可用于通过各种与对象相关的拼图来访问和操作场景。默认情况下，指定的场名称等于指定的场景URL（例如："path/to/scene.gltf" ）。如果启用 "alias(别名)" 选项，就可以手动设置名称。

另一个可选的 "on error do" 插槽在加载错误（比如丢失glTF文件）的情况下会触发。

#

### append scene + percentage

当此拼图被触发时，一个新的场景会从指定的 .gltf 文件中加载并附加到当前场景中。

有关使用示例，请查看 Load Unload 演示（也可在资源商店中找到）。

在加载完成后，触发 "when loaded do" 插槽中的拼图。此外，还可以启用 "on progress do" 插槽。放在这个插槽里的拼图会在加载过程中被持续触发，并且可以利用 "percentage(百分比)" 拼图。默认情况下，"append scene(附加场景)" 拼图不会从新场景中加载摄影机和灯光。这一行为可以在拼图的选项中改变。

场景被加附加时会被分配一个名称，可用于通过各种与对象相关的拼图来访问和操作场景。默认情况下，指定的场名称等于指定的场景URL（例如："path/to/scene.gltf" ）。如果启用 "alias(别名)" 选项，就可以手动设置名称。

另一个可选的 "on error do" 插槽在加载错误（比如丢失glTF文件）的情况下会触发。

#

### unload scene

从应用中卸载指定的场景或其部分。 使用空的文本值来卸载所有场景。

#

### is scene loaded

检查指定场景是否已被加载。当文本值为空时，用于检查主场景是否已加载。

#

### enable rendering

恢复之前禁用的渲染。

#

### disable rendering

禁用渲染。停止更新图形渲染，但继续捕获用户事件以及推进动画时间线。

可以使用禁用渲染来降低性能消耗，以在移动设备 或笔记本电脑上节省电量消耗，或降低台式机上风 扇噪音。您也可以启用 anti-alias 选项，以 显著提高渲染质量并补偿性能的损失。这个选项针 对的是渲染停止后的下一帧。

#

### create environment

创建一个新的基于图像的照明，并为场景指定背景。此拼图还创建了一个新的材质，其名称是作为第一个参数指定的，并将其添加到场景中。您可以用这个材质来替换环境的纹理或颜色。

第二个参数可以是：

- color - 环境照明将基于默认的256×128的HDR图像，背景将基于默认的灰色值。
- texture - 环境照明和背景都将基于默认的256×128 HDR图像。

#

### batch geometry

合并指定的一组网格的几何图形，以提高渲染性能。在执行时，拼图会收集具有类似属性的网格，比如使用中的材质、阴影设置、渲染顺序等，然后创建一个新的合并对象并追加到场景中。不能合并在一起的对象则保持原样。

要观察批处理是否运行成功，请打开 浏览器控制台：

在每行 "Adding batch object(添加批处理对象)..." 中，都可以看到所创建的批处理对象的名称。这个名称由构成批处理的材质名称、代表被合并网格数量的 'x' 因子和 "_batch" 后缀合并组成。

例如：

`Adding batch object: big_table_wood_x6_batch`

这一行表示：6个带有 "big_table_wood" 材质的网格被合并到一个新的批处理对象 "big_table_wood_x6_batch" 。

由于批处理的部分会被"固定"在一起，请确保不要批处理打算移动、做动画的对象，或者将它们单独批处理。

#

### export to gltf

将您的场景、模型或一组模型导出为glTF 2.0格式。指定 only visible 选项，只导出可见对象，而 binary 选项则用于导出为GLB（glTF二进制）格式。

为了获得最佳效果，以及创建标准的可以被第三方glTF查看器（例如微软Windows 10的默认glTF查看器）打开的glTF文件（没有Soft8Soft/Verge3D的扩展名），我们建议您使用glTF兼容的材质。请分别查看如何在 Blender， 3ds Max， 或 Maya中创建glTF兼容性材质。

有关使用示例，请查看 GLTF Compat 演示（也可在资源商店中找到）。

#

### export to usdz

将场景或模型导出为通用场景描述（USDZ）格式。

通过此拼图，您可在Apple设备以AR模式预览场景。为此，请在应用页面上创建 <a> HTML 元素，并将导出的 USDZ 资产的链接指定为其 href 参数。

有关使用示例，请查看 Augmented Reality 演示（也可在资源商店中找到）。

为取得最佳效果，应为模型使用与 glTF 兼容的材质。了解如何在 Blender, 3ds Max 及 Maya 中创建此类材质。

#

### raycast

从源点（或对象）向给定的方向投射一条射线，并返回所有交点（如果有的话）的列表。拼图的第三个参数用于减少相交的对象。在此处使用 none 或指定场景名称，以相交位于加载场景中的所有对象。

返回的列表包含一串具有下列信息的字典：

- object - 被相交对象的名称
- distance - 到相交点的距离
- point - 相交点的XYZ坐标（矢量）。
- normal - 交点的法线的XYZ坐标（矢量）。
- uv - 交点的UV坐标。

交点的列表按距离排序，最近的在前。

#

### add fog

在场景中添加距离雾效。此效果通常在大型室外环境中用于增强远距离对象的视觉效果，或隐藏(LOD)对象，或用于遮掩场景中视觉瑕疵（例如地形网格的边界等）。

Exponential(指数型) 雾使用 density(密度) 控制。将 density(密度) 设置为0，即可禁用已添加的雾效。

Linear(线性) 雾通过 near 和 far 属性控制。将 near 设置为零，或将 far 设置为负数即可禁用已添加的雾效。

## 在使用拼图时遇到困难？

欢迎您随时在 论坛上提问！您还可以加入中文用户社区QQ群(171678760)，在线寻求帮助。