对象类拼图参考 - Soft8Soft
Description: 如何用Verge3D Puzzles来管理3D对象。

# 对象 | Objects

此类拼图用于对对象执行各种操作。

## 内容

- 拼图参考
  - show
  - hide
  - is visible
  - clone object
  - create object
  - remove object
  - set transform
  - get transform
  - change local transform
  - snap to object
  - parent
  - set object direction
  - get object direction
  - get objects from
  - set morph factor
  - get morph factor
  - make object from
  - add annotation
  - remove annotation
  - open annotation
  - close annotation
  - create text object
  - update text object
  - get object dimension
  - distance
  - get custom props
  - outline
  - set shadow param
  - update light probe object(s)

#

## 拼图参考

#

### show

让初始或之前隐藏的指定对象变得可见。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。如果场景中没有这样的对象，或者对象已经是可见的，则不做任何操作。

#

### hide

让指定对象不可见。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。如果场景中没有这样的对象，或者对象已经不可见，则不做任何操作。

#

### is visible

检查一个对象（或者列表中的任一对象）当前是否可见。如果是，返回逻辑值true，否则返回false。如果场景中没有这样的对象，返回false。

#

### clone object

复制一个对象，为该新对象生成一个唯一的名称，并立即将其添加到场景中。输出新的对象名称。对列表、组或 all objects 拼图不起作用。

此拼图支持通过齿轮图标激活的附加选项：

also clone materials
  默认情况下，"clone object"拼图不会执行材质克隆，因此相同的材质将被分配给克隆对象。如果您希望同时克隆材质，请启用also clone materials。
preserve object groups
  默认情况下，"clone object"拼图会重置克隆对象的对象组。启用preserve object groups可从原始对象继承组。

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

#

### create object

创建并添加一个新的对象到场景中。此拼图无需3D编辑器即可创建对象，因此对于没有或仅有最少3D建模技能的用户来说，非常适合学习可视化编程以及设计初级可视化场景。将此拼图与 make object from 结合使用，可以创建相当复杂的几何体。

对其创建的几何对象，比如立方体或茶壶，此拼图也会为其自动创建白色的电介质节点式PBR材质（roughness值设为`1`，metalness设为`0`）。使用 set color 和 set value 拼图来调整该材质。

对于plane with texture对象，此拼图会为模型指定一个虚拟的棋盘格纹理。使用 replace texture 拼图来更改此纹理。

plane with html选项用于创建渲染基于HTML资源的平面，例如网站、自定义UI或YouTube视频。

在内部，此功能使用一个3D变换的`<iframe>`元素，其宽度（以像素为单位）由res输入指定。

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

#

### remove object

从场景中删除一个指定的对象。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。如果场景中没有这样的对象，则不做任何操作。

#

### set transform

根据指定的变换数据来移动、旋转或缩放一个对象。启用offset复选框可以使对象相对于原始位置/旋转/比例进行移动/旋转/缩放。任何轴的输入都可以留空。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。

有时您需要输入一个向量（由给定的 X、Y、Z 坐标组成）。在这种情况下，您可以通过单击齿轮图标并勾选use vector复选框来修改拼图。world space复选框支持在世界空间中进行变换（以XYZ顺序进行欧拉旋转），否则在物体空间中进行变换。

#

### get transform

检索对象的位置、旋转或缩放数据。要检索世界空间中的变换，请单击齿轮图标并勾选"world space"复选框（按XYZ顺序检索欧拉旋转）。不适用于列表，组或 all objects 拼图。

#

### change local transform

根据指定的变换数据，在局部空间中移动、旋转或缩放一个对象。任何轴的输入都可以留空。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。有时你需要输入一个向量（由给定的X、Y、Z坐标组成）。在这种情况下，请点击齿轮图标并勾选use vector复选框来修改拼图。

#

### snap to object

通过复制目标对象的变换数据，将一个对象移动到另一个对象的位置。同时也复制旋转和缩放。对列表、组或 all objects 拼图不起作用。

#

### parent

在对象之间建立父子关系，使第一个对象跟随第二个对象的位置/旋转/缩放。对列表、组或 all objects 拼图不起作用。

指定 <none> 作为第二个值，以解除对象的父子关系。

#

### set object direction

使用X、Y、Z坐标的点或向量为一个对象设置方向。point复选框指定X、Y、Z坐标是属于3D空间中的某个点还是表示方向向量。lock up复选框锁定对象的上下轴，使其保持垂直于水平面。

有时您需要输入一个向量（由给定的 X、Y、Z 坐标组成）。在这种情况下，您可以通过单击齿轮图标并勾选use vector复选框来修改拼图。

例如，要使某个对象朝向摄影机，可以使用以下拼图：

#

### get object direction

返回一个对象的方向向量或数字X、Y、Z向量分量。

#

### get objects from

这个通用拼图可用于：

- 获取组中包含的对象列表，从而使其可迭代
- 将all objects拼图的输出转换为一个列表，从而使其可遍历
- 获取某个父对象的子对象
- 按对象类型（例如摄影机、灯光、注解等）、全名或部分名称过滤对象
- 将对象名称转换为唯一ID，反之亦然

通过下拉菜单可以按类型过滤对象：

- all — 获取所有对象
- annotation — 仅获取注解对象
- bone — 仅获取骨骼
- camera — 仅获取摄影机
- empty — 仅获取空对象
- mesh — 仅获取网格
- light — 仅获取灯光
- first — 获取找到的第一个对象；将此选项与名称过滤器一起使用以检索匹配名称的第一个对象

例如，您可以使用以下拼图使场景中的所有网格对象朝向摄影机：

齿轮弹出窗口中的enable name filter复选框可激活名称过滤器输入：

- equal to — 匹配全名
- starting with — 匹配以指定文本开头的名称，例如"Cube"将匹配"Cube"、"Cube.001"、"CubeGold"等
- ending with — 匹配以指定文本结尾的名称，例如"Cube"将匹配"Cube"、"MyCube"、"Green_Cube"，但不匹配"Cube.001"
- including — 匹配包含指定文本的名称，例如"Cube"将匹配"Cube"、"MyCubeIsAwesome"、"Cube2"等

名称过滤器以区分大小写的方式工作，例如"Cube"、"cube"、"CUBE"将匹配不同的对象。

齿轮弹出窗口中的return unique object ids复选框可用于检索唯一的对象ID而非名称：

当仅使用名称不足以区分对象时，此选项非常重要——例如当对象从另一个glTF文件动态追加且碰巧具有相同名称时。另一种情况是复制父对象时，其所有子对象不会停止保持其原始名称。

您可以使用此拼图获取的ID（看起来像这样：5c464bf0-043a-40ee-b864-5c026436d7de）将它们传递给其他对象拼图。

假设您刚动态加载了一个名为"NewCarScene"的场景，其中包含一个"Car"模型。但是，主场景中已经存在另一个"Car"模型。要更改新添加汽车的材质，您需要使用以下设置：

如果您简单地将"Car"传递给"assign material"拼图，它将不起作用，因为"FancyMaterial"将被错误地分配给找到的第一个模型，这可能不是您想要的。

"get objects from"拼图也可用于将对象名称转换为其ID（如果多个对象共享相同的对象名称，则为多个ID）：

反过来，要通过相应的对象ID获取对象名称，您可以这样做：

#

### set morph factor

设定一个对象的变形目标系数。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。

您可以通过将名称作为文本来设置变形目标。在这种情况下，您需要点击齿轮图标并勾选flexible target input复选框来修改拼图：

示例：

参见Parametric Models演示的源文件，以及这个视频教程解释了使用变形目标拼图的基础知识。Bilibili: 使用Verge3D，Blender和WebGL制作交互式参数化模型

#

### get morph factor

返回一个对象的变形目标系数（即值或权重）。不适用于列表，组或 all objects 拼图。

示例：

您可以通过将名称作为文本来设置变形目标。在这种情况下，您需要点击齿轮图标并勾选flexible target input复选框来修改拼图：

#

### make object from

通过对两个输入对象应用布尔（也称为CSG或构造实体几何）运算来创建新对象。如果未勾选clean复选框，则输入对象不受影响，应显式隐藏/删除。

示例：

您还可以将裁剪平面作为输入对象之一（使用intersect运算）。在这种情况下，另一个对象将被裁剪。

限制：

1. 变形或蒙皮对象的几何体将被烘焙。
2. 不支持具有法线贴图材质的对象。

#

### add annotation

向对象添加兴趣点图标，用户可以通过单击该图标来展开以查看某些描述。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。

例如，要向"Cube"对象添加一个标签为"1"、描述为"This is point of interest #1"的注解：

您可以为注解对象指定自定义名称，而不是使用默认值（等于注解标签）。为此，您需要点击齿轮图标并勾选enable "name" option复选框来修改拼图：

add annotation拼图创建2个HTML元素（用于标签和描述），可以在App Manager设置中或通过CSS类进行样式化。

您还可以通过分配和访问其元素的id来设置每个单独注解的样式：

默认情况下，被某些几何体遮挡的注解会自动关闭并变为半透明。可以通过关闭configure application拼图中的fade annotations选项来禁用此行为。

您可以使用一个更低级的替代方案，即 bind element 拼图，但它不会在点击后展开，也不会被几何图形遮挡。

#

### remove annotation

从对象中移除之前添加的注解。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。

#

### open annotation

展开一个由其标签指定的注解。

#

### close annotation

关闭一个由其标签指定的注解。

#

### create text object

根据指定的文本内容和参数，生成一个新的文本对象。

基础选项：

with text
  生成的文本。
font
  用于生成文本的字体。支持以下字体格式：WOFF, TTF, OTF。
size
  以引擎单位渲染文本的大小（取决于建模套件：米、英寸等）。
extrude
  文本字形的挤出量。

高级选项：

segments
  用于渲染文本的分段数。数字越小，性能越好；数字越大，渲染质量越好。
bevel thickness
  文本斜角的厚度。
bevel size
  文本斜角的大小。
horizontal align
  水平文本对齐。
vertical align
  垂直文本对齐。

#

### update text object

根据指定的文本内容更新文本对象的网格。该文本对象应通过create text object拼图创建或从建模套件中导出。

此拼图也适用于对象列表，组（或者组的列表）以及 all objects 拼图。

#

### get object dimension

将对象尺寸输出为数字X、Y、Z分量或XYZ向量，可在局部坐标系（应用缩放）或世界坐标系中输出。

在世界模式下，此拼图也适用于对象列表，组（或者组的列表）以及 all objects 拼图。

使用示例：绘制一个文本标签，显示动态缩放对象的当前宽度（以厘米为单位）。

此拼图有一定的局限性。对变形对象，它返回对象可以变形的最大尺寸。对于蒙皮对象，拼图返回对象的原始尺寸。

#

### distance

输出两个指定对象之间的距离。对列表、组或 all objects 拼图不起作用。

#

### get custom props

返回一个字典，其中包含分配给一个对象的自定义属性。

自定义属性可以在Blender中通过使用Custom Properties面板来指定：

或者在3ds Max中通过在Object Properties对话框中输入属性：

或者在Maya中通过属性编辑器中的Attributes → Add Attributes...菜单添加：

在Maya中，您需要指定额外的customProperties属性，其中包含空格分隔的自定义属性名称列表。

#

### outline

对指定对象应用或删除轮廓效果。需要在Blender、3ds Max或Maya中启用轮廓效果。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。

#

### set shadow param

启用/禁用给定对象投射/接收阴影。也适用于对象列表，组（或者组的列表）以及 all objects 拼图。

#

### update light probe object(s)

为指定的光照探头对象更新/重新渲染反射立方体贴图。

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

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