逻辑编辑器

基础

可视化编程是通过在Blender的节点编辑器创建逻辑节点树进行。这些节点可以无需任何编码也能显著的增强场景的功能性。

_images/logic_editor_app_example.png

要在给定场景激活逻辑,在 Scene 选项卡中设置 Logic Editor 属性并追加/选择活动节点树。

_images/logic_editor_activation.png

要编辑逻辑树需要到 节点Editor 区域并选择 Blend4Web Logic 树类型:

_images/logic_editor_tree_type.png

然后选择所需的节点树:

_images/logic_editor_select_tree.png

通过使用标准的Blender键盘快捷键 Shift+A 创建节点。

本身就是逻辑块的节点从只有一个输出没有输入的 Entry Point 节点开始。所有其他节点有输入和输出,并可以在逻辑树的任何地方插入。例外的是页面重定向节点,仅可以在末端节点树插入。有两个输出的节点允许分支,因此基于为此类节点指定条件可以在下一个层级做选择。

为实现复杂的逻辑有可以有数值或字符串值的变量。变量可以用于存储一些场景状态 (例如,这可以是动画播放计数器,角色的健康点等)。

逻辑编辑器使用示例:

_images/logic_editor_example.png

下文介绍了所有可用的节点。

控制流

入口点

这是该脚本开始的地方。通过使用多个入口点您可以创建多线程应用程序。

_images/logic_editor_entry.png

输入参数

输出参数

下一个

下一个节点。

内部参数

从脚本运行

如果启用此参数,切入点可以通过API使用 run_entrypoint 方法触发。

切换选择

可用于跟踪物体列表中的任何物体的选择。

_images/logic_editor_switch_select.png

输入参数

上一个

前一个节点。

输出参数

<object name> 命中

如果用户选择(用鼠标或触摸)一个物体的参数名称被设置关注,这个参数将传递到下一个节点的控制。该 Switch Select 节点在默认情况下有一个这样的参数,但可以添加新的和删除现有(节点甚至可以没有这样的参数)。

未击中

如果用户没有选择 Switch Select 节点中指定的任何物体,这个参数将把控制传递给下一个节点。

内部参数

物体

用户可以选择的物体之一。当您创建或删除命中参数时,这些参数会自动创建和删除 Hit 参数。这样的参数的数量总是等于 Hit 参数的数目。

延迟

在去下一个节点之前做一个延迟(以秒计)。

_images/logic_editor_delay.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

将在下一个节点激活之前的时间 (以秒为单位)。默认情况设置为零。可以手动或通过一个变量来设置 (如果启用了 Variable 参数)。

条件跳转

如果满足一定的条件转到指定的节点。参数(操作数)也可以是使用相应的开关激活的变量。

_images/logic_editor_conditional_jump.png

输入参数

上一个

前一个节点。

输出参数

条件为真。

条件是假的。

内部参数

条件

逻辑条件。可以有以下几种类型:

  • Equal - 第一个操作数等于第二个。

  • Not Equal - 第一个操作数不等于第二个。

  • Less Than - 第一个操作数小于第二个。

  • Greater Than - 第一个操作数大于第二个。

  • Less Than Or Equal - 第一个操作数小于或等于第二。

  • Greater Than Or Equal - 第一个操作数是大于或等于第二个。

Operand1

逻辑条件的第一个操作数。应该有一个数字值。可以在节点中指定或可以是一个链接到一个变量。

Operand2

逻辑条件的第二个操作数。和第一个以同样的方式工作。

JS 回调

可以用来调用您的 Blend4Web 应用程序中定义的自定义 JavaScript 回调。

_images/logic_editor_js_callback.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

回调 ID

一个 JavaScript 函数将被节点调用的 ID。

输入参数

输入函数的参数的列表。每个参数可以是变量或到场景物体的链接。可以调整输入参数的数目。默认情况下,此列表是空的。

输入的参数传递给回调函数作为数组来作为第一个函数的参数。

参数 <param_number>

指定输入的参数。此参数可以是一个变量 (如默认的 R1 ) 或链接到一个场景物体,根据 Type 参数 (这些参数每一个总是有相应的 Type 参数) 的值。

类型

相应的输入参数的类型。它可以有两个值之一: Variable (在这种情况下,其中一个变量将用作参数) 和 Object (链接至一个场景物体)。

输出参数

输出参数的列表。默认情况下为空。可以调整输出参数的数目。

一个数组,包含输出参数作为回调函数的第二个参数。

参数 <param_number>

指定变量之一作为输出参数。默认情况下,使用 R1 变量。

动画

播放时间轴和停止时间线

可以用来控制 NLA 动画。’玩的时间线’ 节点扮演 NLA 片段从指定的标记的帧开始。动画播放直至遇到下一个标记,或到场景的时间线的末尾。在那之后,控制传递到下一个节点。’停止时间线’ 节点停止播放。

_images/logic_editor_timeline.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

起始标记

动画的第一帧。如果没有指定,动画从时间轴开始播放,并可能无法正常工作。

结束标记

动画的最后一帧。如果没有指定,动画播放到时间轴的结束,可能无法正常工作。

获取时间线

此节点可以用于获取 NLA 动画或时间线的当前帧。

_images/logic_editor_get_timeline.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

NLA Timeline

如果启用此参数,则该节点将返回当前动画的帧的 NLA。如果禁用了它,则该节点将返回当前帧的时间线。默认情况下启用。

目标

指定一个变量来存储当前帧的数量。默认设置为 R1

播放动画

可用于播放物体的动画。动画可以是以下类型之一:

常规动作:

_images/play_anim_action.png

着色器动作:

_images/play_anim_nodetree.png

粒子系统:

_images/play_anim_particle.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体

物体,动画,其中将播放的名称。

动画。名称

要播放动画的名字。如果未指定,则整个时间轴将播放。

行为

指定动画行为。可以有以下值之一:

  • 完成停止 - 动画将播放一次。

  • 完成重置 - 动画将被播放一次,则该物体将返回到起点。

  • 循环 - 直到它被 停止Animation 节点停止的动画将被反复播放。

不要等

如果该参数被启用,Play Animation 节点将控制传递到下一个节点上启动动画播放。如果不是,控制将被传递到播放完成后才会进入下一个节点。

停止动画

可以用来停止物体的动画。

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

设置第一帧

返回到第一帧的动画已经停止之后。

相机(Camera)

移动相机

可用于移动相机,包括其位置的平滑插补。

_images/logic_editor_move_camera.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

相机

将摄像机移动。

位置

相机将移动的物体。相机的坐标跟运动结束后的物体是相同的。

目标

相机将在指向该物体的方向移动。

持续

相机被转移到一个新的位置将花费的时间(秒)。默认设置为零(在这种情况下,相机实际上并没有移动,它只是改变了它的位置)。它可以手动指定或作为一个变量的一个链接(如果是启用了变量的参数)。

设置相机移动方式

可以用来改变所选摄像机的移动方式。

_images/logic_editor_set_camera_move_style.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

相机

此参数指定的摄像机到的变化将被应用。

新相机移动方式

此参数指定相机将使用新的方式。四个选项可用: Hover, Eye, Target and Static.

以下选项只是 New Camera Move Style 参数未设置为 Static 时才可用︰

变换

设置相机变换速度。默认情况下,此参数设置为 1.0。

旋转

设置摄像机的旋转速度。默认情况下,此参数设置为 1.0。

放大

设置相机的变焦速度。默认值为 0.10。只有 New Camera Move Style 参数设置为 HoverTarget 时才可用。

以下参数用于指定目标或相机的轴心点和仅在 New Camera Move Style 参数设置为 Hover 或者 Target 时才可用︰

使用物体

此参数启用和禁用使用场景对象作为相机的目标或轴心点 (取决于相机类型)。如果它激活,一个文本字段将显示在指定的物体。此参数默认被禁用的。

如果``使用物体``参数被禁用,以下三个选项可用:

x

相机的目标/轴心点的 X 分量。

y

相机的目标/轴心点的 Y 分量。

z

相机的目标/轴心点的 Z 分量。

物体

显示物体

可用于显示3D物体。

_images/logic_editor_show_object.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体

显示一个物体。

隐藏物体

可以用来隐藏三维物体。

_images/logic_editor_hide_object.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体

一个物体隐藏。

变换物体

可以用来改变物体的位置,大小和旋转角度。

_images/logic_editor_transform_object.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体

需要进行变换的物体。

空间

此参数定义将用于转换的物体的坐标空间。它可以具有下列值之一 ︰

  • World - 全局坐标空间。

  • Parent - 物体在 Object 参数中指定的父物体的本地坐标系统。父物体的原点作为坐标的中心,而它的旋转角度定义坐标轴的方向。

  • Local -所选物体的局部坐标空间。类似于 Parent 坐标空间,但在这种情况下,物体本身的起始点作为坐标原点。

默认设置为 World

位置

如何沿着 X, YZ 轴移动物体。默认情况下,所有三个参数设置为零。值可以指定节点本身或通过变量 (如果启用了变量选项)。

旋转

围绕 X, YZ 轴旋转物体。所有的三个值都设置为零,默认情况。可以指定节点中直接或通过变量 (如果启用了变量选项)。

缩放

物体的大小。可以指定直接或通过一个变量 (如果启用了变量参数)。默认设置为 1。

持续

变换需要的时间 (以秒为单位)。它可以指定直接或用变量 (若要做到这一点,变量参数应启用)。设置为零,默认情况。

移动到

可用于移动物体。

_images/logic_editor_move_to.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体

你需要移动的物体。

目标

一个目标(另一个物体或光源,摄像机或其他东西)选择的物体会移动。物体的坐标和目标的运动完成后的将是相同的。

持续

该物体将移到新位置花的时间 (以秒为单位)。默认情况下,此参数设置为零 (和在这种情况下,物体实际上并不移动,它只是改变了其在一个时刻的位置)。它可以设置手动或用变量 (仅当启用了变量参数可用)。

应用形状关键

设置形状关键因素。

_images/logic_editor_apply_shape_key.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体

待转化需要的物体。

形变关键帧

形状将被应用到物体的密钥。

多少的形状关键将影响物体。此值可以直接在节点中设置或使用的变量。值应该是 0 和 1 之间。

轮廓

控制物体概述效果。

_images/logic_editor_outline.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体

的轮廓效果的任何更改将只适用于由该参数指定的物体。

操作

指定将完成到该物体的轮廓的操作。这个参数可以具有以下值之一:

  • PLAY 启用轮廓动画

  • 停止 禁用它

  • INTENSITY 可以用来设置该物体的轮廓强度

强度

轮廓强度。如果 Operation 参数设置为 INTENSITY 时此参数才是可用的。值可以设置手动或通过变量 (如果启用了变量参数)。

设置着色器节点参数

可用于设置着色器节点的值。目前,只有 ValueRGB 节点被支持。

_images/logic_editor_set_shader_node_param.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体

有需要被编辑材质的物体。

材质

需要材质进行编辑。它应使用的节点。

RGB节点

可以改变参数的节点。现在,只有 ValueRGB 节点被支持。

参数

可编辑参数的选定节点。在设置时可以在节点本身或通过变量 (如果启用了变量参数)。

继承材质

从一个材质拷贝属性到另一个。

_images/logic_editor_inherit_material.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

物体的材质可以被继承。

材质

要继承的材质。

目标

一个物体,将继承选定的材质。

材质

将由继承所替代的材质。

操作

变量存储

保存数字或字符串值的变量。

_images/logic_editor_variable_store.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

变量名称

变量的名称。可以从变量列表中选定或手动指定 (如果 New variable 参数已启用)。

变量类型

变量的类型。此参数可以有以下两个值之一: Number (数值变量)和 String (字符串变量)。

新变量

如果启用此参数,则可以手动输入变量名称并不只是选择其中一个变量。这可以用于应用程序和服务器之间传输的数据。

全局

启用此参数可使变量成全局变量。仅当启用了 New Variable 参数可用。

_images/logic_editor_variable_global.png
数/STR

数值或字符串(取决于 Var. type 参数值)的变量的值。

数学运算

执行数学运算,并将结果存储在变量中。任何参数 (操作数) 可以是一个数值或变量。

_images/logic_editor_math_operation.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

操作

数学运算。可以有以下几种类型:

  • 随机 产生比第一操作数大比第二个小的随机值。

  • 添加 量操作数相加。

  • 将操作数相乘。

  • 减去 从所述第一个数中减去第二个操作数。

  • 除数 由第二个把第一个操作数除。

Operand1

对于第一个操作数。它可以在节点中指定或它可以链接到一个变量 (如果启用了变量参数)。

Operand2

第二操作数。的工作方式与第一个同。

目标

该运算的结果将保存在此参数所指定的变量中。

字符串操作

可以用来执行一个包含两个字符串的操作,并将结果保存到一个变量。

_images/logic_editor_string.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

操作

您需要有两个字符串,其可具有以下值中的一个来执行操作:

  • 加入 - 连接两个字符串合并为一个。

  • 查找 - 如果第二个字符串在第一个里面出现就将在第一个里面出现的第二个的索引位置写入变量。如果没有匹配项,则将写入值为-1。应该指出的是,字符串的第一个符号具有索引为 0,不是 1。

  • 替换 用第三个字符串替换第一个字符串中出现的第二个字符串。

  • 拆分 用第二个字符串在第一个字符串中出现位置作为拆分标记将第一个字符串拆成两个

  • 比较 比较两个字符串。对于此操作,您需要指定一个逻辑条件。如果满足此条件,值为 1 将被输出到 Destination 变量,如果不是,零将被输出。

条件

要比较两个字符串的逻辑条件。只有 Operation 参数设置为 Compare,此参数才可用。 和 Conditional Jump 节点的 Condition 参数相同的工作。

Operand1

第一个字符串。可以指定在该节点本身或与一个变量。

Operand2

第二个字符串。的工作方式与第一个相同。

操作数3

只有 Operation 参数设置为 Replace,此参数才可用。可以用来指定第三个字符串,将替换在第一个中出现的第二个字符串。

目标

一个变量来保存操作的结果。

Destination2

只有 Operation 参数设置为 Split,此参数才可用。指定的变量来保存第二个拆分 (第一半将被保存到 Destination 参数所指定的变量) 的字符串。

声音

播放声音

可以用来播放扬声器的声音。

_images/logic_editor_play_sound.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

扬声器

将启用的扬声器。

不要等

如果启用此参数,控制将声音开始播放后立即传递到下一个节点。如果未启用它,当播放完成控制只会通过。

停止声音

可以用来阻止扬声器的声音。

_images/logic_editor_stop_sound.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

扬声器

将被关闭的扬声器。

网络

发送请求

将 HTTP GET 请求发送到指定的 URL 和保存响应字段变量。

_images/logic_editor_send_request.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

方法

请求方法。可以有两个值之一:

  • GET 用来从服务器请求数据。

  • POST 被用于将数据发送到服务器。

默认设置为 GET

Url

将请求发送到的 web 地址。默认设置为 “https://www.blend4web.com” 。

响应参数

指定要保存接收到来自服务器的数据的变量。

注解

从服务器收到的数据应如下所示 ︰

{"var0": 1,
"var1": 10,
"var2": 144,
...
}
Content-Type

表示信息内容的媒体类型。一个类型和子类型,例如包括:text/plain。默认设置为 Auto 。可以用来重新分配HTTP请求的标题。

Request Params

指定将发送到服务器的包含 JSON 对象的变量。 Method 参数设置为 Method 时才可用。默认值为 R1

JSON

此节点可以用于编码和解码复杂的 JSON 对象。

_images/logic_editor_json.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

JSON

链接到一个您需要进行解码或编码的 JSON 对象。默认设置为 R1

JSON 操作

需要对 JSON 参数所指定的 JSON 对象执行的操作。可以有两个值之一: ENCODE 对 JSON 对象进行编码 和 PARSE 进行解码。默认设置为 ENCODE

成员

变量列表,将用于存储数据的解码或编码一个JSON对象(取决于 JSON Operation 参数的值)。变量总是有类似 var0, var1 等的名字,他们的数量可以调整。

页面参数

允许在一个给定的变量中存储任何 web 页参数。

_images/logic_editor_page_param.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

参数名称

网页参数的名称。

目标

将用来保存参数的变量。

页转到

可以用来浏览器重定向到另一页。此节点总是标记节点树的结束,并且没有任何输出参数。

_images/logic_editor_page_redirect.png

输入参数

上一个

前一个节点。

输出参数

内部参数

Url

将打开的网页的 web 地址。默认设置为 “https://www.blend4web.com” 。

调试

控制台打印

此节点打印变量的值和附加的文本到Web浏览器的控制台。它可用于调试目的。

_images/logic_editor_console_print.png

输入参数

上一个

前一个节点。

输出参数

下一个

下一个节点。

内部参数

信息

将与值一起打印到控制台的消息。

<variable name>

将打印到控制台的变量。默认情况下,Console Print 节点都有一个这样的参数,但您可以添加新成员和删除现有的 (节点甚至可能没有这种参数)。

已过时

选择(已过时)

注解

已过时!不推荐使用。相反,推荐使用 Switch Select 节点。

它类似于 Select & Play 节点,除了过渡发生代替动画。这个功能可以实现一个复杂的逻辑,因为在这种情况下,存在这样的可能性,以确定所述用户选择的结果。

选择并播放时间轴(已过时)

注解

已过时!不推荐使用。相反,建议使用 Switch SelectPlay Timeline 节点。

等到用户选择的物体(在桌面上 - 用鼠标点击,移动设备 - 带有触摸)。如果物体,这是在本节点中指定时,选择 - 然后启动类似于 Play Timeline 节点动画。如果选择了任何其他物体 - 然后立即转移控制到下一个节点。

选择并播放动画(已过时)

注解

已过时!不推荐使用。相反,建议使用 Switch SelectPlay Timeline 节点。

等到用户选择的物体(在桌面上 - 用鼠标点击,移动设备 - 带有触摸)。如果物体,这是在本节点中指定时,选择 - 然后启动类似于 Play Animation 节点动画。如果选择了任何其他物体 - 然后立即转移控制到下一个节点。

布局

空物体

这是一个不自身执行任何操作的简单的直通节点。它可以用于多个逻辑线程组合到一个或简单地使逻辑节点设置更容易阅读和理解。

_images/logic_editor_empty.png

输入参数

上一个

前一个节点(或多个节点)。

输出参数

下一个

下一个节点。

内部参数

路由

逻辑编辑器还具有 Reroute 元素,不从传递控制到下一个节点或者到下一个 Reroute 元件做任何处理的节点。这样的元件可以用来创建环状的结构,或使节点树更容易阅读和理解。

不同于 Empty 节点,Reroute 元素只能处理一个单一的逻辑线程。

_images/logic_editor_reroute.png

注解

输出参数不能被连接到相同的节点的输入参数。如果你需要做到这一点(例如做一个循环),你应该使用 Reroute 元素。

调试中

为了调试的目的,逻辑树中的一些节点可以被静音。要做到这一点,选择所需的节点,并按“M”键。静音节点不执行,并简单地传递控制到后面节点。如果静音节点有两个输出执行从负的结果(MissFalse)继续输出。