WEBVTT

00:00.000 --> 00:03.799
Blender 3.6 已经发布，其中包括一个华丽的

00:03.800 --> 00:06.280
新功能可能会引起一些人的注意。

00:06.980 --> 00:07.980
模拟节点。

00:08.500 --> 00:12.540
是的，模拟已经到了几何节点，在这个影片中我将给你

00:12.541 --> 00:14.675
对新版本的期望概述

00:14.676 --> 00:17.060
系统以及如何开始使用它。

00:17.680 --> 00:20.280
不过，有一件事我想从一开始就说清楚。

00:20.640 --> 00:23.675
对于 Blender 3.6，术语没有任何变化

00:23.676 --> 00:26.900
目前物理模拟是如何进行的。

00:26.901 --> 00:32.180
而非采用 Blender 现有的所有实体模拟系统

00:32.181 --> 00:35.352
将它们插入节点，新功能可以

00:35.353 --> 00:38.940
更简单，但也更强大的东西。

00:39.600 --> 00:43.780
此方法是建立在几何节点已经具备的广泛功能之上

00:43.781 --> 00:49.880
拥有并添加基本功能，将所有这些转变为自订模拟系统。

00:49.881 --> 00:56.340
这样，我们确保建立一个坚实的基础，让高阶用户能够受益

00:56.341 --> 01:00.580
已经非常多了，并在此基础上添加更多高级功能，

01:01.200 --> 01:07.020
任何艺术家以后都可以轻松使用，以支持和加强

01:07.021 --> 01:09.680
Blender 中几何节点的整个生态系。

01:10.360 --> 01:14.420
所以是的，现在我应该声明你确实需要一些可靠的东西

01:14.421 --> 01:18.280
使用几何节点的经验可以从新功能中受益。

01:18.281 --> 01:21.943
使用更易于使用的一键式解决方案

01:21.944 --> 01:25.741
新系统将在未来版本中推出。

01:26.100 --> 01:28.610
但希望我能给你一个想法

01:28.611 --> 01:31.400
方法可以扩展到几乎无限的潜能。

01:32.260 --> 01:37.300
也就是说，目前新增的功能集是有意限制的，

01:37.620 --> 01:41.345
相对紧凑，且易于扩展

01:41.346 --> 01:45.200
Blender 未来版本的其他必要改进。

01:45.201 --> 01:48.850
目前存在一些明显的限制，例如

01:48.851 --> 01:52.200
丢失材料分配，尚不支援。

01:52.720 --> 01:57.340
这只是几何节点模拟的第一个重要里程碑。

01:58.040 --> 02:02.365
但让我们退后一步，看看 Blender 3 中实际添加了哪些内容。

02:02.366 --> 02:03.680
6 为模拟节点。

02:04.500 --> 02:07.235
使用者介面中的新元素提示

02:07.236 --> 02:09.780
新的模拟系统相对微妙。

02:09.781 --> 02:13.516
就节点而言，实际上只有一个新条目

02:13.517 --> 02:17.720
添加选单使模拟成为可能，模拟区域。

02:18.400 --> 02:22.500
当您将其新增至节点树时，它会建立两个已经存在的节点

02:22.501 --> 02:26.557
透过几何连结和这个紫红色面板连接

02:26.558 --> 02:29.660
当你移动它们时，它会自动改变。

02:30.920 --> 02:34.578
该面板描述了所谓的模拟区域和

02:34.579 --> 02:37.300
它指示哪些节点是模拟的一部分。

02:37.301 --> 02:42.220
当我在这里插入模拟节点时，一开始没有任何变化，

02:42.500 --> 02:46.060
因为我们只是透过几何体而不做任何事。

02:46.700 --> 02:53.020
让我们新增一个拉伸节点来进行可见的变更并使用随机值节点

02:53.021 --> 02:56.040
用于随机选择要挤出的面。

02:56.840 --> 03:01.980
您可以看到模拟区域如何调整其形状以包含拉伸节点。

03:02.740 --> 03:06.680
然而，随机值节点并不是模拟本身的一部分

03:06.681 --> 03:10.780
因为它只提供了一个供拉伸节点使用的栏位。

03:11.620 --> 03:14.014
作为模拟一部分的实际数据

03:14.015 --> 03:16.581
仅在这些节点之间传递。

03:17.240 --> 03:19.480
但到目前为止，还没有模拟。

03:20.280 --> 03:24.280
但是当我进入下一帧时，你可以看到这个挤压是如何完成的

03:24.281 --> 03:27.480
一次又一次，一次又一次，我进步的帧数越多。

03:27.481 --> 03:33.460
原因是对于我继续的每一帧，其结果

03:33.461 --> 03:38.660
前一帧被传递到其输入中，从而创建一种循环行为。

03:39.240 --> 03:43.780
操作的每个单独步骤也称为模拟步骤。

03:44.260 --> 03:48.940
好的，很好，但我想为每个帧进行不同的随机选择。

03:50.320 --> 03:53.599
那么让我们转到随机值节点并插入

03:53.600 --> 03:56.860
在场景帧中输入种子。

03:56.861 --> 04:00.711
现在当我逐帧继续时，你可以看到

04:00.712 --> 04:03.680
每个步骤的挤压都使用不同的选择。

04:04.240 --> 04:09.120
但是我们之前从设定中得到的结果是，每个都使用相同的种子

04:09.121 --> 04:11.660
框架，仍然影响著我们在这里看到的东西。

04:12.220 --> 04:15.620
原因是模拟只采用从

04:15.621 --> 04:17.980
上一帧，无论您更改了什么。

04:18.360 --> 04:21.373
因此要将模拟的状态重设为其

04:21.374 --> 04:24.140
初始状态，我们需要转到第一帧。

04:24.141 --> 04:26.923
现在如果我回放模拟，你

04:26.924 --> 04:30.421
可以看到它如何按预期正常工作。

04:31.260 --> 04:35.220
我们对每一帧的挤压都有不同的选择。

04:35.520 --> 04:40.760
您还可以在时间轴中看到回放如何建立这个紫色条。

04:41.560 --> 04:44.292
这个条形代表帧

04:44.293 --> 04:46.600
模拟的资料被写入快取。

04:46.601 --> 04:51.680
这意味著我可以随时返回时间轴并获取任何状态

04:51.681 --> 04:54.360
模拟，无需再次计算。

04:55.060 --> 04:58.420
但这只是在快取有效的情况下发生的。

04:58.840 --> 05:03.300
如果我在节点树中进行任何影响模拟的更改，则该节点的颜色

05:03.301 --> 05:07.164
条变得稍微褪色，表示快取已

05:07.165 --> 05:10.100
失效，需要重新运作仿真。

05:10.101 --> 05:14.380
但当然，如果您愿意，您也可以更改中的值

05:14.381 --> 05:16.840
即时影响模拟的方式。

05:18.220 --> 05:21.780
储存快取的更持久的方法是烘焙模拟。

05:22.300 --> 05:27.000
这可以在新模拟节点面板下的物理属性标签中完成。

05:27.680 --> 05:32.680
这将烘焙整个场景帧范围的模拟数据，并且

05:32.681 --> 05:35.460
将其储存在磁碟上混合档案旁边的资料夹中。

05:35.461 --> 05:40.500
您也可以在修改器面板中查看并变更该路径。

05:41.780 --> 05:45.580
现在模拟已经烤好了，你可以看看播放效果如何超棒

05:45.581 --> 05:48.708
平滑，当我改变值时，这不会

05:48.709 --> 05:51.440
实际上不再自动使快取失效。

05:52.500 --> 05:55.511
所以在这种情况下，如果你想再次释放它，你

05:55.512 --> 05:58.680
需要透过删除快取资料来明确地做到这一点。

05:59.500 --> 06:03.520
让我们来看另一个例子，更详细一点，我在其中展示

06:03.521 --> 06:09.621
您将了解如何使用模拟节点建立相对基本的粒子模拟设定。

06:09.780 --> 06:14.220
顺便说一下，请注意，到目前为止我所展示的并不完全是物理模拟。

06:15.000 --> 06:18.957
模拟节点的用例确实更进一步

06:18.958 --> 06:22.220
比我们传统的模拟和搅拌器好。

06:22.221 --> 06:25.458
首先，让我们建立一大堆点，

06:25.459 --> 06:28.640
为此，我使用“在面上分布点”节点。

06:29.580 --> 06:32.348
这样，我们就可以创造一堆点

06:32.349 --> 06:35.861
来自基础网格的输入几何体。

06:36.000 --> 06:39.040
在这些点上，我们然后将其输入到模拟中。

06:39.980 --> 06:42.908
在模拟区内，主要特征是

06:42.909 --> 06:46.000
模拟将只是移动点。

06:46.160 --> 06:48.480
为此，我们将使用“设定位置”节点。

06:48.481 --> 06:52.680
让我们用一些随机偏移向量来尝试。

06:54.240 --> 06:56.310
是的，显然现在这不是很

06:56.311 --> 06:59.120
很有趣，但这将是主要概念。

06:59.920 --> 07:01.800
只是将点朝某个方向移动。

07:02.520 --> 07:05.004
并追踪方向和速度

07:05.005 --> 07:08.040
对于那个运动，我们将添加一个速度。

07:08.620 --> 07:12.340
速度只是点上的向量属性。

07:12.720 --> 07:15.480
该属性也将成为模拟的一部分。

07:15.481 --> 07:20.580
因此，添加此功能的方法是只需单击“模拟输入”或“输出”。

07:21.080 --> 07:23.910
然后在侧边栏中，您可以看到

07:23.911 --> 07:27.081
有一个新的模拟状态面板。

07:27.180 --> 07:33.420
当我新增另一个条目时，这个条目会从输入和输出中弹出。

07:33.980 --> 07:38.340
这是必要的，因为对于模拟步骤，涉及的所有内容

07:38.341 --> 07:41.096
类比输出需要弹出回来

07:41.097 --> 07:43.840
出下一帧的模拟输入。

07:43.841 --> 07:46.840
然后这里的套接字类型，我可以

07:46.841 --> 07:49.841
选择一个向量并将其称为速度。

07:50.960 --> 07:53.680
现在我想用 Velocity 做两件事。

07:54.120 --> 07:57.310
首先，我想在下一帧中保留它，

07:57.311 --> 08:00.720
所以我将把它从输入直接传递到输出。

08:01.340 --> 08:04.360
然后我想使用该速度来移动点。

08:04.840 --> 08:09.460
为了使其独立于帧速率，让我们使用缩放节点和缩放

08:09.461 --> 08:12.480
自上一帧以来经过的时间。

08:12.481 --> 08:17.020
然后将其连接到“设定位置”节点的偏移量。

08:17.500 --> 08:21.680
现在我可以为这里的所有点设定初始速度。

08:22.160 --> 08:28.040
假设 X 方向每秒一个单位，然后像这样回放。

08:28.580 --> 08:30.860
但到目前为止，还没有发生任何有趣的事情。

08:31.980 --> 08:36.440
因此，让我们对 Velocity 进行一些更改，而不是只是传递它。

08:37.120 --> 08:39.360
让我们加入像重力这样的力。

08:40.220 --> 08:43.319
最简单的方法就是使用 Vector

08:43.320 --> 08:46.401
输入节点，代表重力。

08:46.780 --> 08:50.860
然后我们可以用它来修改每个帧的速度向量。

08:51.320 --> 08:55.980
同样，为了使其独立于帧速率，我将使用缩放节点。

08:57.320 --> 08:59.320
用 Delta Time 来衡量它。

09:00.440 --> 09:03.780
然后只需将其添加到速度即可。

09:05.420 --> 09:08.466
这样我们就可以改变速度

09:08.467 --> 09:12.501
由该力表示的每个框架。

09:12.820 --> 09:17.249
如果我在类比输出中替换它，你

09:17.250 --> 09:20.421
可以看到这会影响点的移动方式。

09:21.700 --> 09:25.720
因此，让我们将其设定为在重力方面有意义的值。

09:28.020 --> 09:29.980
这看起来是对的。

09:31.920 --> 09:36.480
我们也给它一些 Z 方向的速度。

09:37.980 --> 09:38.980
我们就这样吧。

09:39.320 --> 09:43.260
因此，透过相当少量的节点，我们已经有了非常非常基本的设定。

09:43.920 --> 09:45.840
那么让我们更进一步。

09:46.820 --> 09:51.100
首先，我想获得每个点的随机初始速度。

09:52.420 --> 09:55.400
为此，我将仅使用随机值节点。

09:57.680 --> 10:00.260
进入完全随机的方向。

10:03.320 --> 10:04.580
然后它看起来像这样。

10:05.480 --> 10:09.440
另一件事是我想不断为模拟添加更多点。

10:10.960 --> 10:15.640
现在我们只能透过模拟输入来获得点的初始状态。

10:16.380 --> 10:21.040
但该节点并不是将资料传递到模拟区域的唯一方法。

10:21.041 --> 10:26.100
相反，您也可以直接传递它，就像这样。

10:26.420 --> 10:28.500
我将建立一个连接几何节点。

10:29.520 --> 10:35.421
然后将其与我们从前一帧获得的点结合。

10:36.340 --> 10:41.960
这样，我们在每一帧中加入一组新的点。

10:42.500 --> 10:46.720
同样，这些数据正是我们从前一帧中获得的。

10:46.721 --> 10:50.320
或者在第一帧上，从初始步骤开始。

10:51.120 --> 10:57.740
然后针对每个单独的帧计算我们直接传入的资料。

10:58.300 --> 11:02.303
所以如果我重播这个，你可以看到我们如何得到一个新的

11:02.304 --> 11:05.500
每个画面都连接在一起的一组点。

11:06.080 --> 11:08.780
但点集始终完全相同。

11:09.120 --> 11:11.420
因此，让我们更改每一帧的种子。

11:11.421 --> 11:15.960
这样我们每次都会得到随机分布。

11:17.360 --> 11:21.041
但你可以看到只有第一个首字母

11:21.042 --> 11:24.581
点在开始时获得随机速度。

11:25.440 --> 11:28.560
其他点刚开始时速度为零。

11:29.400 --> 11:33.502
原因是我们只传递随机数

11:33.503 --> 11:37.880
值到类比输入中的初始点。

11:38.680 --> 11:41.640
将其他点加入其中

11:41.641 --> 11:44.280
相同的几何形状，它们没有该属性。

11:44.820 --> 11:48.660
那我们需要做的就是新增一个捕捉属性节点。

11:49.080 --> 11:50.360
将其设定为向量。

11:50.960 --> 11:56.020
然后在这里，捕获该字段作为属性。

11:57.480 --> 12:00.860
然后将其与其他点的速度相加。

12:03.580 --> 12:08.403
这样我们就结合了现有的速度属性

12:08.404 --> 12:11.960
具有新捕获的新属性的点。

12:13.700 --> 12:14.960
我们就这样吧。

12:17.060 --> 12:19.500
但让我们让这个模拟变得更有趣一点。

12:20.340 --> 12:24.440
现在我们只有一些速度的初始条件。

12:24.441 --> 12:30.620
然后一个恒定的力作用在粒子上以改变该速度。

12:31.240 --> 12:35.760
让我们透过添加噪音纹理节点来为它们添加一些简单的湍流。

12:37.620 --> 12:39.860
让我们连结观众来看看。

12:40.420 --> 12:43.540
现在，噪音纹理给出的值从零到一。

12:43.840 --> 12:45.660
但我们希望将其集中在零附近。

12:46.580 --> 12:49.940
因此，让我们使用地图范围节点。

12:52.240 --> 12:53.240
关闭夹子。

12:53.241 --> 12:57.060
并将最小值设为 0.5。

12:57.940 --> 13:00.960
这样我们就可以得到以零为中心的良好值。

13:01.880 --> 13:04.880
让我们将两个最大值连接到一个值节点。

13:06.640 --> 13:09.540
然后我们就可以控制这个场的强弱了。

13:10.040 --> 13:14.880
现在我们可以简单地将其添加到我们之前创建的现有重力中。

13:17.760 --> 13:20.340
我们的模拟中存在一些湍流。

13:21.100 --> 13:24.280
改变比例以使其更清晰一些。

13:27.060 --> 13:28.740
并且加大力度。

13:30.220 --> 13:32.240
现在已经更有趣了。

13:36.250 --> 13:40.010
我想做的另一件事是追踪每个粒子的生命周期。

13:40.910 --> 13:44.370
我想做的另一件事是追踪每个粒子的生命周期。

13:45.330 --> 13:49.990
因此，除了我们已经在模拟中追踪的现有数据之外。

13:49.991 --> 13:55.350
我还将添加另一个称为年龄的属性。

13:56.770 --> 13:59.970
这只是一个整数来计算帧数。

14:01.370 --> 14:07.370
在模拟中，我们只需为每一帧的年龄加一。

14:09.050 --> 14:13.110
但现在预设情况下，我们遇到了一些一开始并不是很明显的问题。

14:13.111 --> 14:17.451
但是菱形内部的这个小点表明

14:17.452 --> 14:20.810
我们对每个粒子都有一个单一的值。

14:22.370 --> 14:25.790
它实际上不是一个属性，它只是一个值。

14:26.830 --> 14:29.650
这是模拟节点的另一个特征。

14:30.150 --> 14:34.770
您不一定需要使用属性来操作几何资料。

14:35.290 --> 14:38.930
您也可以只模拟单一值。

14:38.931 --> 14:45.350
所以现在系统无法知道年龄应该是

14:45.351 --> 14:49.090
该几何体上每个点的属性都不同。

14:49.730 --> 14:53.490
目前还没有任何东西可以将年龄与几何形状联系起来。

14:53.770 --> 14:58.410
因此，为了确保这种情况发生，我们需要使用另一个撷取属性节点。

15:02.070 --> 15:04.830
然后就这样度过了岁月。

15:06.070 --> 15:07.990
现在你可以看到那个点出现了。

15:07.991 --> 15:13.210
现在你可以看到那个点消失了，因为现在这实际上是

15:13.211 --> 15:16.050
模拟中几何体的属性。

15:16.950 --> 15:19.974
例如，我们可以透过连接来追踪年龄

15:19.975 --> 15:22.830
检视器，然后查看电子表格编辑器。

15:24.390 --> 15:28.470
所以从一开始就存在的点数只会越来越多。

15:29.250 --> 15:32.553
但如果我向下滚动一点，你可以看到最后一点

15:32.554 --> 15:36.610
刚刚创建的只有一个年龄 1。

15:36.611 --> 15:40.714
现在我们可以使用这个年龄参数

15:40.715 --> 15:44.110
在著色器内部创建各种效果。

15:44.390 --> 15:50.170
就像在粒子的生命周期或模拟内部改变颜色一样。

15:51.130 --> 15:53.452
例如只删除一些点

15:53.453 --> 15:56.411
当他们到达生命的尽头时。

15:56.490 --> 16:05.270
因此，让我们建立一个删除几何节点并将其插入此处以删除每个点

16:05.271 --> 16:11.410
年龄大于 20 岁。

16:13.090 --> 16:16.370
因此粒子仅存活 20 帧。

16:17.550 --> 16:19.330
然后他们就消失了。

16:20.610 --> 16:24.130
现在让我们在模拟本身之外实际做一些事情。

16:24.131 --> 16:29.690
我想利用我们得到的每个粒子的速度。

16:30.810 --> 16:36.210
现在要注意的是，你永远不应该使用速度

16:36.211 --> 16:41.930
直接从模拟区域本身传递到外部的其他节点。

16:42.810 --> 16:46.139
您在模拟内部建立的每个连接

16:46.140 --> 16:49.670
到外部的区域仍将是该模拟的一部分。

16:49.671 --> 16:54.533
因此，如果您想从模拟中获取数据，

16:54.534 --> 16:59.010
唯一的方法是透过这样的模拟输出。

16:59.210 --> 17:02.150
请注意，反之则不同。

17:02.390 --> 17:08.850
正如我之前所展示的，您可以从模拟区域外部传入数据

17:08.851 --> 17:11.990
像这样，但只能透过输出来输出。

17:12.730 --> 17:17.550
让我们使用速度向量的长度来获取速度。

17:17.551 --> 17:26.130
使用地图范围节点将其映射到我们可以像这样可视化的较小范围。

17:26.490 --> 17:29.510
但让我们使用色带以获得更好的视觉化效果。

17:30.550 --> 17:33.910
让我们将颜色改为类似这样的颜色。

17:35.750 --> 17:37.090
我们就这样吧。

17:39.950 --> 17:44.050
让我们顺便提高这个密度以获得更多积分。

17:44.950 --> 17:50.030
因为这仍然是一个非常简单的模拟，所以性能仍然相当不错。

17:50.430 --> 17:56.630
现在，因为我们正在将实际的群组输入几何图形传递到

17:56.631 --> 17:59.153
模拟区直接这样，我们也

17:59.154 --> 18:03.050
对网格有直接的即时影响。

18:03.950 --> 18:09.410
因此，如果我只是玩模拟并进入编辑模式，您可以看到我可以

18:09.411 --> 18:13.270
更改网格并即时查看更新。

18:14.010 --> 18:22.030
因此您可以与网格本身或所有参数等输入进行交互

18:22.031 --> 18:26.670
我们在设定中即时使用它来影响它的行为。

18:29.750 --> 18:31.630
正如您对模拟的期望一样。

18:32.870 --> 18:37.210
让我们在此模拟中再加入一个元素，以获得更多的互动性。

18:37.211 --> 18:43.150
我想添加一个由空物体控制的单独的力。

18:43.590 --> 18:49.450
为此，我只需将空拖到节点编辑器中即可取得物件资讯节点。

18:50.010 --> 18:53.230
我将其设为relative 以获取相对位置。

18:53.810 --> 18:57.672
然后做一点向量数学就可以得到

18:57.673 --> 19:01.290
将粒子拉向这个空的力。

19:02.330 --> 19:09.891
让我们取得空的位置，然后减去粒子的位置。

19:12.270 --> 19:18.730
现在这个向量，让我们将其标准化并得到它的长度。

19:20.890 --> 19:25.090
我希望粒子越接近空，它就越强。

19:25.091 --> 19:30.877
所以我将使用除法节点并将 1 除以

19:30.878 --> 19:35.690
距离并用它来缩放方向向量。

19:37.530 --> 19:42.430
然后只是另一个尺度，以便我们更好地控制力量。

19:43.450 --> 19:46.570
让我们将其添加到现有的力量中。

19:48.570 --> 19:54.890
让我们按住 control 和 alt 来静音此链接，右键单击拖动即可消除

19:54.891 --> 19:58.790
原始力量，这样我们就可以更好地看到它的作用。

20:00.610 --> 20:03.450
现在它没有太大作用，因为它还不够强大。

20:03.850 --> 20:05.750
所以让我们把它调大一点。

20:07.430 --> 20:11.470
现在您可以看到粒子是如何被吸引到空处的。

20:14.960 --> 20:16.660
让我们把它调得更高。

20:16.661 --> 20:22.780
现在我们得到了像这样非常强烈的效果。

20:24.060 --> 20:27.020
让我们将这些初始力重新调回全域。

20:27.940 --> 20:28.940
我们就这样吧。

20:29.040 --> 20:33.340
这是我们最终的基本自订粒子模拟设定。

20:35.080 --> 20:38.288
当然，这只是无限用处之一

20:38.289 --> 20:41.201
您可以使用模拟节点执行哪些操作的案例。

20:42.040 --> 20:46.028
但我希望这能让你对什么有扎实的了解

20:46.029 --> 20:49.140
您可以用它做的事情以及如何使用它们。

20:50.100 --> 20:53.480
如果您确实觉得该影片中的某些内容有点不对劲

20:53.481 --> 20:57.600
在你的头上，我可以建议你从头开始检查几何节点

20:57.601 --> 20:59.900
我们在 Blender Studio 平台上提供的课程。

21:00.680 --> 21:04.160
在本课程中，我将介绍您需要了解的所有内容，以了解如何

21:04.161 --> 21:06.120
几何节点的工作原理以及如何使用它们。

21:06.740 --> 21:07.820
但这就是我的。

21:08.040 --> 21:10.040
祝您今天休息愉快，再见。
