对象 | Objects

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

操作3D对象的可视化编程块

内容

拼图参考

show

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

显示3D对象的可视化编程块

hide

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

隐藏3D对象的可视化编程块

is visible

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

检查3D对象可见性的可视化编程块

clone object

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

用可视化编程克隆3D对象

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

高级克隆对象参数
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值设为1metalness设为0)。使用 set colorset value 拼图来调整该材质。

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

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

创建带HTML的平面的创建对象拼图

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

有关使用示例,请查看 Htmlmixer 演示(也可在资源商店中找到)。

remove object

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

删除对象的可视化编程块

set transform

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

用可视化编程设置3D变换

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

get transform

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

获取3D对象变换的可视化编程块

change local transform

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

改变对象局部变换的可视化编程块

snap to object

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

对齐对象的可视化编程块

parent

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

用可视化编程创建对象父子关系

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

用可视化编程解除对象父子关系

set object direction

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

设置对象方向的可视化逻辑块

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

使用向量设置对象方向

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

设置对象方向示例

get object direction

返回一个对象的方向向量或数字XYZ向量分量。

获取对象方向的可视化逻辑块

get objects from

这个通用拼图可用于:

从...获取对象拼图

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

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

set object direction拼图连接了get objects from和get transform拼图作为输入

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

带名称过滤器的get objects from拼图

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

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

返回对象ID的get objects from拼图

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

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

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

assign material拼图连接了get objects from拼图作为输入

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

"get objects from"拼图也可用于将对象名称转换为其ID(如果多个对象共享相同的对象名称,则为多个ID):

get objects from拼图用于将对象名称转换为ID

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

get objects from拼图用于将对象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复选框,则输入对象不受影响,应显式隐藏/删除。

使用可视化编程执行CSG运算

示例:

无需编码即可执行CSG运算

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

限制:

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

add annotation

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

添加注解的可视化编程块

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

用可视化编程创建HTML注解的示例

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

为注解指定对象名称

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

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

3D注解的HTML布局

默认情况下,被某些几何体遮挡的注解会自动关闭并变为半透明。可以通过关闭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面板来指定:

从Blender导出自定义属性

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

从3ds Max导出自定义属性

或者在Maya中通过属性编辑器中的AttributesAdd Attributes...菜单添加:

Maya中的添加属性菜单 Maya中的属性

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

在Maya中指定自定义属性

outline

对指定对象应用或删除轮廓效果。需要在Blender3ds MaxMaya中启用轮廓效果。也适用于对象列表,组(或者组的列表)以及 all objects 拼图。

用可视化编程添加3D对象轮廓

set shadow param

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

设置阴影参数的可视化逻辑块

update light probe object(s)

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

更新光照探头对象的可视化逻辑块

在使用拼图时遇到困难?

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