WEBVTT

1
00:00:00.740 --> 00:00:04.770
大家好，欢迎收看另一期艺术家脚本编写节目。我的名字是Sybren。

2
00:00:04.770 --> 00:00:08.100
在本集中我们将讨论模态运算子。

3
00:00:08.109 --> 00:00:11.110
所以为什么艺术家可以免费编写脚本

4
00:00:11.110 --> 00:00:13.680
已成为开放项目的一部分。

5
00:00:13.690 --> 00:00:17.110
您可以在 ERG 的新部分中阅读关于混合的内容。

6
00:00:17.170 --> 00:00:19.510
这个开放项目的目的是提供一些

7
00:00:19.510 --> 00:00:23.480
电晕封锁期间的缓解缓慢而稳定，

8
00:00:23.480 --> 00:00:27.480
至少在荷兰，事情又开始开放了。

9
00:00:27.490 --> 00:00:29.990
所以这意味著开放项目也即将到来

10
00:00:29.990 --> 00:00:32.860
结束，因为这是目前的最后一集。

11
00:00:32.870 --> 00:00:35.390
我想做一些更复杂的事情。

12
00:00:35.400 --> 00:00:37.580
这就是我们研究模型运算子的原因。

13
00:00:37.580 --> 00:00:40.250
它们有点复杂，但有一个非常强大和

14
00:00:40.250 --> 00:00:43.450
它们为您的成年人开辟了一系列新的可能性。

15
00:00:44.440 --> 00:00:49.960
那么首先什么是模型呢？我在 Dr go 上查了一下，它给了我一些资讯。

16
00:00:49.960 --> 00:00:54.270
一些有用的连结。嗯，你显然模特儿也是一种布料。

17
00:00:54.280 --> 00:00:55.730
我对此没那么感兴趣。

18
00:00:55.740 --> 00:00:59.850
但第二个连结是韦氏字典，它有

19
00:00:59.850 --> 00:01:04.620
模型中的各种定义，例如模态或与模态相关的定义。

20
00:01:04.620 --> 00:01:06.060
那么让我们来看看。

21
00:01:06.640 --> 00:01:10.480
一种模式。模特儿状态的品质。是的，非常感谢。

22
00:01:10.490 --> 00:01:14.450
但它也说了逻辑命题的分类

23
00:01:14.460 --> 00:01:17.130
根据他们断言或否认这种可能性，

24
00:01:17.130 --> 00:01:20.760
其内容的不可能性、偶然性或必要性。

25
00:01:21.840 --> 00:01:25.550
我还是不太明白。但这与逻辑有关。

26
00:01:25.560 --> 00:01:27.690
那么让我们来看看这方面的另一本字典

27
00:01:27.690 --> 00:01:31.490
看看牛津学习字典，它说的是情态。

28
00:01:31.500 --> 00:01:36.150
某事物存在的特定方式是被体验或被完成的。

29
00:01:36.540 --> 00:01:41.390
这开始看起来更加熟悉了。如果您考虑编辑运动对像模式

30
00:01:41.790 --> 00:01:45.960
这是搅拌机当时存在的特殊方式。

31
00:01:46.440 --> 00:01:47.460
例如按G。

32
00:01:47.460 --> 00:01:51.600
在编辑模式下将移动一个顶点，而在物件模式下它将移动一个顶点

33
00:01:51.600 --> 00:01:55.500
对象，因此事物可以有不同的意义，这取决于

34
00:01:55.500 --> 00:01:57.140
在搅拌机所处的模式上。

35
00:01:57.420 --> 00:01:59.530
这也是模型算符所做的事情。

36
00:01:59.540 --> 00:02:04.260
它基本上向搅拌机添加了另一种模式，然后由您的操作员定义。

37
00:02:04.340 --> 00:02:07.900
它可以接管您的完整搅拌机介面并吞下

38
00:02:07.900 --> 00:02:10.509
列出所有使用者输入事件。

39
00:02:10.520 --> 00:02:13.320
或者它可以只回应一两件事，然后

40
00:02:13.320 --> 00:02:16.140
传递搅拌机的其余部分，使其表现正常。

41
00:02:16.160 --> 00:02:19.350
让我们看看程式码是什么样的，这样事情就变成了

42
00:02:19.350 --> 00:02:22.410
更具体一点来示范模型运算子的工作原理。

43
00:02:22.410 --> 00:02:24.460
做了一点小小的补充。

44
00:02:24.540 --> 00:02:27.710
这只是一个愚蠢的小东西，而且成分看起来很熟悉。

45
00:02:27.710 --> 00:02:29.900
但现在它有了一些资讯。它进口。

46
00:02:29.900 --> 00:02:34.050
嘟嘟我有操作员，然后在需要时注册和取消注册。

47
00:02:35.240 --> 00:02:38.220
当然，有趣的部分是在运算符内部。

48
00:02:38.220 --> 00:02:42.320
它的开头方式与您习惯的帐单 ID 名称 br 标签相同。

49
00:02:42.320 --> 00:02:45.460
命名与I.D一致。

50
00:02:46.040 --> 00:02:49.160
但不是执行的是模型和调用

51
00:02:49.540 --> 00:02:51.770
现在请注意，它也可以有一个执行函数。

52
00:02:51.770 --> 00:02:54.940
这个模型并不是缺少执行功能。

53
00:02:55.410 --> 00:02:57.600
每当以下情况时，呼叫函数就会被称为搅拌机

54
00:02:57.600 --> 00:02:59.810
操作员从使用者介面运行。

55
00:02:59.810 --> 00:03:03.470
因此，可以透过热键、选单项目或面板上的按钮

56
00:03:03.650 --> 00:03:06.730
这是启动模型运算子的函数。

57
00:03:06.830 --> 00:03:08.410
这个呼叫函数做了两件事。

58
00:03:08.410 --> 00:03:11.740
它告诉搅拌机视窗管理器我们应该接收事件。

59
00:03:11.940 --> 00:03:16.650
然后透过返回正在运行的模型，混合了我们想要运行的模型

60
00:03:17.040 --> 00:03:19.680
这就是获得模型操作员的基础。

61
00:03:19.690 --> 00:03:23.870
现在，当出现视窗管理器事件（例如滑鼠移动单击键）时，

62
00:03:23.870 --> 00:03:25.930
按类似的东西。

63
00:03:25.940 --> 00:03:28.770
我们的模型函数将被调用，当然它会得到

64
00:03:28.770 --> 00:03:32.960
context，但它也会取得有关哪个事件触发它的资讯。

65
00:03:33.340 --> 00:03:37.320
因此，这些事件物件记录在 python api 参考中，如果您

66
00:03:37.320 --> 00:03:41.160
想要找到目前使用的搅拌机版本，只需去

67
00:03:41.160 --> 00:03:45.360
帮助然后 python api 参考，这将带你到这里你搜索

68
00:03:45.360 --> 00:03:49.120
对于事件，然后你发现它是事件结构类型的一部分。

69
00:03:49.130 --> 00:03:51.500
这具有设定的各种有用属性

70
00:03:51.500 --> 00:03:53.760
在将事件传送到我们的程式码之前由 Blender 执行。

71
00:03:54.040 --> 00:03:57.190
因此，从嘴巴的运动来看，我们有几种不同的选择。

72
00:03:57.190 --> 00:03:59.000
我们有X之前的嘴。

73
00:03:59.010 --> 00:04:02.640
因此，将之前嘴的位置与滑鼠 X 结合。

74
00:04:02.650 --> 00:04:04.390
然后你就会感受到运动的感觉

75
00:04:04.390 --> 00:04:07.330
有人做了而不是绝对的立场。

76
00:04:07.340 --> 00:04:09.230
这是嘴部区域X，

77
00:04:09.230 --> 00:04:13.590
这是滑鼠和嘴 X 相对水平位置的区域。

78
00:04:13.590 --> 00:04:16.660
这是滑鼠相对于视窗的水平位置。

79
00:04:17.339 --> 00:04:20.130
这里最重要的属性是类型。

80
00:04:20.140 --> 00:04:22.250
这告诉我们这是一个什么样的事件

81
00:04:22.250 --> 00:04:24.480
第一个地方是左边的英里是中间的英里，

82
00:04:24.480 --> 00:04:27.240
滑鼠右键键盘，触控板事件在这里。

83
00:04:27.240 --> 00:04:28.380
还有定时器事件。

84
00:04:28.380 --> 00:04:32.240
如果您想偶尔做某事，这可能非常重要。

85
00:04:32.250 --> 00:04:36.390
所以可以是每秒、每毫秒、每 30 秒。

86
00:04:36.390 --> 00:04:37.350
正是您所需要的

87
00:04:38.040 --> 00:04:42.300
回到我们的程式码。我想根据事件的类型列印一些不同的东西。

88
00:04:42.310 --> 00:04:48.370
因此，如果事件类型是滑鼠移动，那么我只需列印滑鼠移动，X 和

89
00:04:48.540 --> 00:04:53.540
Y 座标。如果事件类型是滑鼠左键，我说在 X 和 Y 处按一下滑鼠左键。

90
00:04:53.550 --> 00:04:56.800
否则，如果事件类型在此集合中且这是一个

91
00:04:56.800 --> 00:05:00.330
快速简单的方法来检查一堆不同的值。

92
00:05:00.340 --> 00:05:04.230
所以如果是滑鼠右键或逃跑，我只是说右键停止，

93
00:05:04.240 --> 00:05:05.540
也可能是逃避。

94
00:05:05.550 --> 00:05:07.100
我不在乎。这很好。

95
00:05:07.110 --> 00:05:08.440
然后就说返回完成了

96
00:05:08.440 --> 00:05:11.370
它告诉 Blender 我们要停止模型运算子。

97
00:05:11.370 --> 00:05:14.630
所以此时它将不再接收任何事件。

98
00:05:14.640 --> 00:05:16.220
如果那没有发生，

99
00:05:16.230 --> 00:05:19.600
它会传回正在运行的模型，就像呼叫函数一样

100
00:05:19.610 --> 00:05:22.160
表明它仍应保持运行。

101
00:05:22.840 --> 00:05:25.020
让我们看看我们可以印刷什么内容。

102
00:05:25.030 --> 00:05:29.240
如您所见，已安装该附加元件并在使用者首选项中启用它。

103
00:05:29.250 --> 00:05:32.580
所以我们在搅拌机中，我也把我的终端

104
00:05:32.590 --> 00:05:35.240
在萤幕上，以便您可以看到它现在列印的内容。

105
00:05:35.250 --> 00:05:37.360
这还是在没有操作的情况下运作的。

106
00:05:37.360 --> 00:05:41.220
您可以看到选单项目和所有内容都在回应我们的点击。

107
00:05:41.230 --> 00:05:43.030
此问题通常会得到回应。

108
00:05:43.040 --> 00:05:47.690
我按 F3 浏览搜寻框，然后寻找这个愚蠢的例子，

109
00:05:47.700 --> 00:05:50.060
我按 Enter 键，这样你就可以看到它已经

110
00:05:50.060 --> 00:05:53.160
在终端接收到第一个嘴巴移动事件。

111
00:05:53.640 --> 00:05:55.670
当我移动滑鼠时，它会继续前进。

112
00:05:55.680 --> 00:05:57.540
记住视窗之间的区别

113
00:05:57.540 --> 00:06:00.130
相对座标和区域相对​​座标。

114
00:06:00.140 --> 00:06:02.940
3D视口是一个区域。轮廓是一个区域。

115
00:06:02.940 --> 00:06:04.530
属性面板是一个区域。

116
00:06:04.540 --> 00:06:08.490
所以如果你想做一些与三维视口相关的事情。

117
00:06:08.500 --> 00:06:11.660
区域相对座标可能就是您所需要的。

118
00:06:11.840 --> 00:06:14.400
现在我正在列印视窗相对座标。

119
00:06:14.400 --> 00:06:16.500
所以那就意味著

120
00:06:16.510 --> 00:06:20.580
右下角座标为00

121
00:06:20.590 --> 00:06:25.360
在右上角，我们看到的解析度几乎是我的桌面的解析度。

122
00:06:25.840 --> 00:06:28.940
您可能已经注意到的一件事是搅拌机不再响应

123
00:06:28.940 --> 00:06:32.500
到这些嘴上来是因为我们吞掉了所有的事件。

124
00:06:32.510 --> 00:06:38.760
此外，当单击滑鼠中键并拖曳以更改视口时，它不会执行任何操作

125
00:06:39.240 --> 00:06:43.560
但它确实显示了左键单击和右键单击，然后它停止了，现在

126
00:06:44.740 --> 00:06:49.700
又恢复正常了，我们的操作员再次停止，搅拌机像平常一样回应。

127
00:06:49.710 --> 00:06:54.460
您可能会注意到的一件事是，一键点击即可列印报表

128
00:06:55.040 --> 00:06:57.610
所以列印不完全正确。

129
00:06:57.620 --> 00:06:59.150
这不是左键单击，

130
00:06:59.160 --> 00:07:04.130
这是你再次收到Python的滑鼠按下事件，然后是滑鼠按下事件，

131
00:07:04.130 --> 00:07:06.190
api 文档来救援。

132
00:07:06.200 --> 00:07:08.560
有一个值属性可以告诉您更多信息

133
00:07:08.560 --> 00:07:10.850
关于您正在查看的事件类型。

134
00:07:10.860 --> 00:07:12.760
让我们将其添加到我们的列印语句中

135
00:07:13.340 --> 00:07:18.300
谁在代码中。我们知道这是关于滑鼠左键的，所以我们可以把左键留在那里。

136
00:07:18.300 --> 00:07:23.450
但这里我们只做某个位置的事件值。

137
00:07:23.940 --> 00:07:26.760
然后我们不用右键单击，而是说

138
00:07:27.140 --> 00:07:30.460
事件类型、事件值

139
00:07:30.940 --> 00:07:32.650
我们仍然会停在那里。

140
00:07:34.740 --> 00:07:35.850
重新加载脚本。

141
00:07:37.140 --> 00:07:38.100
重新运行它。

142
00:07:38.410 --> 00:07:39.960
滑鼠移动没有改变。

143
00:07:40.840 --> 00:07:43.150
但是你可以看到有一个左按左键

144
00:07:43.150 --> 00:07:46.860
释放然后按下滑鼠右键我们可以再次运行它

145
00:07:47.540 --> 00:07:49.340
就像按下左释放键一样

146
00:07:49.460 --> 00:07:53.270
从你的按逃逸中我们可以逃脱，按然后就结束了。

147
00:07:53.280 --> 00:07:55.790
这就是模态运算子的基础知识。

148
00:07:55.790 --> 00:07:58.160
让我们开始看看一些更有用的东西。

149
00:07:58.170 --> 00:08:01.000
我们将遵循模板中的大部分内容。

150
00:08:01.000 --> 00:08:04.360
因此，如果您转到搅拌机中的脚本选项卡，然后转到模板 python，

151
00:08:04.370 --> 00:08:07.760
您会发现一堆模态运算子的范例。

152
00:08:07.940 --> 00:08:11.010
所以我们要做的就是透过操作符来跟随视图。

153
00:08:11.010 --> 00:08:14.670
但我将以与此程式码中稍有不同的方式执行操作。

154
00:08:14.680 --> 00:08:18.350
然后你就可以决定你比较喜欢哪一种方法

155
00:08:18.740 --> 00:08:21.300
首先是它的功能的一个小演示。

156
00:08:21.310 --> 00:08:25.540
我已运行模板中的程式码，然后按 F 三个简单视图运算子。

157
00:08:25.550 --> 00:08:26.090
你是主持人吗？

158
00:08:26.090 --> 00:08:27.970
它从左上角开始，

159
00:08:27.970 --> 00:08:31.260
如果我，你可以看到现在正在移动的偏移量

160
00:08:31.260 --> 00:08:34.429
沿著视窗的 X 方向移动滑鼠，

161
00:08:34.440 --> 00:08:36.440
它也会移动 X 方向的视窗。

162
00:08:36.440 --> 00:08:37.549
世界的方向。

163
00:08:37.840 --> 00:08:39.460
又为什么呢？

164
00:08:40.539 --> 00:08:43.480
现在如果我旋转你就能看到差异

165
00:08:44.740 --> 00:08:46.510
正在移动 X 方向，可以看到

166
00:08:46.510 --> 00:08:49.460
运动仍沿世界 X 方向

167
00:08:49.670 --> 00:08:51.550
Y 方向也同样。

168
00:08:53.240 --> 00:08:57.550
如果右键单击，我们最终会回到开始的地方，这就是一个委员会

169
00:08:58.140 --> 00:09:00.160
当然，左键单击是确认的。

170
00:09:00.540 --> 00:09:04.920
那么让我们看看呼叫函数。它比我们在程式码中所做的要多一些。

171
00:09:04.930 --> 00:09:07.720
当然，这只适用于普丁的三维视图。

172
00:09:07.720 --> 00:09:11.340
这是要检查的第一件事：是否有太空数据的接触，

173
00:09:11.340 --> 00:09:12.920
类型等于你的三个 D。

174
00:09:12.920 --> 00:09:13.930
然后工作就完成了。

175
00:09:13.940 --> 00:09:18.370
否则会显示警告并由操作员亲自取消。

176
00:09:18.380 --> 00:09:20.060
我会翻转这个。

177
00:09:21.440 --> 00:09:21.640
是的，

178
00:09:22.040 --> 00:09:22.240
是的。

179
00:09:22.640 --> 00:09:25.060
如果不是3D就进入。

180
00:09:25.840 --> 00:09:29.950
警告停止，然后发明整件事。

181
00:09:30.940 --> 00:09:33.470
现在我们知道这是一个 3D 视图端口

182
00:09:33.480 --> 00:09:37.750
我们可以存取空间资料的上下文并将其称为三个D。

183
00:09:37.760 --> 00:09:39.660
然后我们就可以得到三个D.Region。

184
00:09:40.040 --> 00:09:43.350
所以空间是由区域组成的，在三维视图中

185
00:09:43.350 --> 00:09:46.690
连接埠案例区域是三维视图，也是标题，

186
00:09:46.690 --> 00:09:49.090
也许是一个完整的术语，也许是侧面的一些面板。

187
00:09:49.100 --> 00:09:50.780
我们必须有 3D 视口。

188
00:09:50.780 --> 00:09:53.500
如果你想改变它的相机然后改变三个

189
00:09:53.500 --> 00:09:56.950
D 视窗相机只有在你真正透过它看时才起作用，

190
00:09:56.960 --> 00:09:58.760
如果你透过同一台相机观察，

191
00:09:59.040 --> 00:10:00.940
这整件事必须做一些不同的事情。

192
00:10:00.940 --> 00:10:04.150
它必须移动同一个相机来修复它

193
00:10:04.150 --> 00:10:08.890
只需将其切换到透视你，然后最后我们必须存储

194
00:10:08.900 --> 00:10:12.940
滑鼠的初始位置，以便我们可以追踪运动

195
00:10:12.940 --> 00:10:17.250
滑鼠相对于该操作符启动时所在位置的位置

196
00:10:17.460 --> 00:10:21.780
然后我们必须记住视口相机的原始位置

197
00:10:21.780 --> 00:10:25.370
当我们右键单击并且必须取消它时，我们可以恢复它。

198
00:10:25.380 --> 00:10:29.950
最后我们得到了将该运算子注册为的已知位

199
00:10:29.950 --> 00:10:34.700
模型运算符，然后返回正在运行的模型作为 python 中的旁注，

200
00:10:34.710 --> 00:10:38.090
可以只写一些东西自己点一些东西。

201
00:10:38.100 --> 00:10:42.860
您不必将其声明为属性，只需新增像这样的新属性即可。

202
00:10:43.740 --> 00:10:47.680
因此，如果您对物件执行此操作，搅拌机将不会储存此类内容。

203
00:10:47.690 --> 00:10:50.110
所以它的用途非常有限，但对于

204
00:10:50.110 --> 00:10:53.370
像这样在运算符上储存临时数据，

205
00:10:53.380 --> 00:10:54.150
没关系。

206
00:10:54.540 --> 00:10:56.650
现在让我们来看看模型函数和

207
00:10:56.650 --> 00:10:58.660
这个的结构几乎与

208
00:10:58.660 --> 00:11:03.470
我们在查看不同的事件类型然后执行一些程式码之前就这样做了。

209
00:11:03.480 --> 00:11:05.510
我们可以改变这段程式码中的一些东西

210
00:11:05.510 --> 00:11:07.810
使其更容易理解。

211
00:11:07.820 --> 00:11:12.750
该位仅在此处使用，因此我们将其移至此处。

212
00:11:13.040 --> 00:11:14.480
这和以前是一样的。

213
00:11:14.490 --> 00:11:18.310
它只是获取 3D 视图连接埠区域，以便视图

214
00:11:18.310 --> 00:11:22.240
用于视窗的相机的位置，

215
00:11:22.250 --> 00:11:24.380
它的位置被设定回

216
00:11:24.390 --> 00:11:27.620
当我们按下滑鼠右键或退出时的初始位置。

217
00:11:27.630 --> 00:11:29.420
这会导致它取消它，

218
00:11:29.420 --> 00:11:32.240
然后清除设定的标题文本

219
00:11:32.240 --> 00:11:35.150
我们移动滑鼠，然后它返回理事会。

220
00:11:35.150 --> 00:11:39.050
所以这告诉搅拌机这个操作符不应该再运行

221
00:11:39.350 --> 00:11:41.160
以滑鼠左键为例。

222
00:11:41.240 --> 00:11:45.180
所做的只是从标题中删除抵消税。

223
00:11:45.220 --> 00:11:47.880
然后搅拌机被告知我们已经完成了

224
00:11:47.890 --> 00:11:51.750
因为在滑鼠移动期间的互动过程中，我们

225
00:11:51.750 --> 00:11:55.050
已更改视口确认不需要

226
00:11:55.050 --> 00:11:57.560
做任何事情，因为视口已经改变。

227
00:11:57.580 --> 00:11:59.860
最后我们来到了有趣的部分。

228
00:11:59.940 --> 00:12:02.290
滑鼠移动时会发生什么

229
00:12:02.540 --> 00:12:04.590
这条线已经做了很多事。

230
00:12:04.600 --> 00:12:08.320
因此，让我们将其分成几个容易理解的部分。

231
00:12:08.330 --> 00:12:12.720
首先，它将滑鼠 X 的事件和英里宽的事件转换为

232
00:12:12.720 --> 00:12:16.500
一个向量，这样我们就可以用它来做一些三维数学。

233
00:12:16.660 --> 00:12:21.210
当然相机在3D视窗中的位置是3D位置。

234
00:12:21.210 --> 00:12:24.140
所以有一个向量并将事物转换为向量。

235
00:12:24.140 --> 00:12:26.850
使所有这些计算变得更容易一些。

236
00:12:27.740 --> 00:12:27.940
是的

237
00:12:28.740 --> 00:12:30.260
所以我们有一个群众立场。

238
00:12:32.740 --> 00:12:33.060
好的。

239
00:12:34.840 --> 00:12:35.040
是的。

240
00:12:35.740 --> 00:12:35.950
好的。

241
00:12:37.840 --> 00:12:41.350
这是由滑鼠 X 英哩 y 组成的向量

242
00:12:41.360 --> 00:12:44.460
零是因为我们没有三维滑鼠。

243
00:12:45.640 --> 00:12:45.880
是的

244
00:12:46.840 --> 00:12:52.980
滑鼠移动的量是初始滑鼠减去滑鼠位置。

245
00:12:52.990 --> 00:12:55.950
这就是起始位置之间的差异

246
00:12:55.960 --> 00:12:58.060
滑鼠和滑鼠的当前位置。

247
00:13:00.330 --> 00:13:05.050
最后我们缩放滑鼠移动，否则你会移动

248
00:13:05.060 --> 00:13:08.740
对于您移动滑鼠的每个像素，大约有一个搅拌器单元。

249
00:13:08.750 --> 00:13:11.770
那么要如何得到这个数字呢？嗯，这只是尝试和错误。

250
00:13:11.780 --> 00:13:16.490
您首先尝试不进行缩放，然后您发现事情进展得太快

251
00:13:16.500 --> 00:13:19.960
然后他开始消灭它，你就会找到适合你的东西

252
00:13:20.340 --> 00:13:22.560
最后自我执行呼叫。

253
00:13:22.840 --> 00:13:25.620
通常搅拌机会为我们做这件事，它会

254
00:13:25.620 --> 00:13:28.820
当我们从 python 呼叫这个运算子时仍然这样做。

255
00:13:28.830 --> 00:13:33.810
然而，没有什么可以阻止我们自己呼叫execute。

256
00:13:33.960 --> 00:13:37.660
稍后我们将看看执行到底在做什么

257
00:13:37.940 --> 00:13:41.750
最后，据说用 X 抵消了标题税，

258
00:13:41.750 --> 00:13:44.960
自偏移的 y 和 z 座标。

259
00:13:45.640 --> 00:13:48.090
这种表示法称为百分比格式。

260
00:13:48.100 --> 00:13:51.750
它由一个格式字串、一个百分比和一个组成

261
00:13:51.750 --> 00:13:54.930
或更多应该进入格式字串的内容。

262
00:13:54.940 --> 00:13:58.920
因此，在本例中，我们的格式字串具有三个以百分比开头的栏位。

263
00:13:58.930 --> 00:14:02.170
末尾带有 f 表示浮点数，30.0.4 in

264
00:14:02.170 --> 00:14:05.350
这意味著我们希望数字中有四位小数。

265
00:14:05.740 --> 00:14:08.620
那么让我们来看看该偏移量和执行

266
00:14:08.620 --> 00:14:11.750
函数，因为这些是我们还没看到的最后部分。

267
00:14:11.760 --> 00:14:14.910
偏移量是我们之前看到的属性。

268
00:14:14.920 --> 00:14:18.420
这是一个浮点向量属性，在此处导入

269
00:14:18.430 --> 00:14:21.200
从 b 点 props 汇入洪水向量属性。

270
00:14:21.210 --> 00:14:25.750
所以这只是饼点道具点洪水向量属性的较短版本。

271
00:14:25.940 --> 00:14:28.410
所以这个名字偏移了尺寸三，

272
00:14:28.420 --> 00:14:32.400
这意味著我们的浮点向量中有三个值。

273
00:14:32.410 --> 00:14:36.560
这是因为视口相机位置当然是三维的。

274
00:14:36.740 --> 00:14:39.490
最后我们再次查看执行函数，

275
00:14:39.500 --> 00:14:42.090
它从上下文中获取 3D 区域。

276
00:14:42.100 --> 00:14:44.180
这里发生的事情有点令人困惑

277
00:14:44.180 --> 00:14:47.740
因为属性类型是浮点向量属性，

278
00:14:47.900 --> 00:14:52.550
但它产生的值不是向量，而是其他东西。

279
00:14:52.640 --> 00:14:54.870
所以这意味著如果我们想做一些向量数学，

280
00:14:54.870 --> 00:14:56.810
你首先必须将其转换为向量。

281
00:14:56.820 --> 00:14:58.260
这就是这里发生的事情。

282
00:14:58.270 --> 00:15:00.610
它被转换为向量，然后相加

283
00:15:00.610 --> 00:15:02.970
到视口相机的初始位置。

284
00:15:02.980 --> 00:15:05.360
然后将该新位置指派给视图

285
00:15:05.360 --> 00:15:08.500
三维视口区域的位置属性。

286
00:15:08.510 --> 00:15:12.730
因此，作为呼叫中的快速概述，我们做了一些准备工作，

287
00:15:12.740 --> 00:15:15.560
我们注册这是一个模型操作员。

288
00:15:15.570 --> 00:15:17.920
然后在滑鼠移动时的模型函数中，

289
00:15:17.920 --> 00:15:21.060
我们计算了一个偏移量，然后在执行函数中，

290
00:15:21.070 --> 00:15:24.010
我们将该偏移量新增到视图的初始位置

291
00:15:24.010 --> 00:15:27.350
埠相机来计算新的视口相机位置。

292
00:15:27.740 --> 00:15:32.140
现在，我想向您展示如何呼叫它，从 python 执行函数。

293
00:15:32.150 --> 00:15:35.750
但问题是在控制台中你可以看到

294
00:15:35.760 --> 00:15:38.890
运算子就在那里，我们甚至可以传递一个偏移量。

295
00:15:38.900 --> 00:15:42.560
但如果你尝试使用它，让我们看看会发生什么

296
00:15:42.940 --> 00:15:46.140
如果你这样做，那么你会得到一个错误。

297
00:15:46.160 --> 00:15:50.290
此空间控制台物件没有属性区域 3D。

298
00:15:50.300 --> 00:15:53.160
那是因为目前当你在这里运行它时，

299
00:15:53.740 --> 00:15:56.600
上下文设定为控制台。

300
00:15:56.610 --> 00:16:00.360
所以空间资料的上下文是一个空间控制台

301
00:16:00.360 --> 00:16:02.760
错误讯息中其他空格几个三个D。

302
00:16:02.760 --> 00:16:08.370
可以看到执行函数其实是corporate Blender 1 18 就是

303
00:16:08.370 --> 00:16:13.860
有问题的一个，这确实是很少有三个 D 点区域的三个 D。

304
00:16:13.940 --> 00:16:18.290
控制台不具有原始的 3D 属性。这就是这里的问题。

305
00:16:18.300 --> 00:16:22.870
但它确实表明了它背后的想法，你可以在那里有一个执行函数，

306
00:16:22.870 --> 00:16:27.560
您可以从 Python 呼叫它，然后呼叫它来获得互动的东西。

307
00:16:28.040 --> 00:16:32.740
正如我一开始所说，模型操作员接管了所有搅拌机

308
00:16:32.940 --> 00:16:36.360
但也可以选择性地这么做

309
00:16:36.360 --> 00:16:39.020
事件应该传递给搅拌机本身

310
00:16:39.030 --> 00:16:41.540
or 应该由模态运算子使用

311
00:16:41.540 --> 00:16:44.570
由模型函数的返回值决定。

312
00:16:44.740 --> 00:16:49.470
该操作符现在仅响应滑鼠移动，我们无法放大或缩小。

313
00:16:49.740 --> 00:16:53.080
假设我们要允许滚轮向上

314
00:16:53.090 --> 00:16:56.170
向下滚动轮传递到搅拌机，这样

315
00:16:56.170 --> 00:16:59.280
那台搅拌机可以为我们处理缩放

316
00:16:59.280 --> 00:17:02.280
然后他们仍然吞噬了所有其他事件。

317
00:17:02.280 --> 00:17:05.920
因此，您无法透过 Shift a 来取得 AD 选单，例如，

318
00:17:05.920 --> 00:17:09.450
当您四处走动时，这很简单

319
00:17:09.640 --> 00:17:13.770
第一的。我们必须弄清楚属于滚轮的事件类型是什么。

320
00:17:13.839 --> 00:17:15.760
所以要么你在 python 中查找，

321
00:17:15.760 --> 00:17:18.910
api 参考或你确实喜欢我并且你刚刚添加了打印

322
00:17:18.910 --> 00:17:22.630
列印您看到的所有类型事件的语句。

323
00:17:22.640 --> 00:17:26.930
这样你就可以知道它会向上移动滑鼠并向下移动滑鼠。

324
00:17:26.930 --> 00:17:28.720
这些是我们感兴趣的事件。

325
00:17:28.730 --> 00:17:31.900
现在，如果事件属于这两种类型中的任何一种，

326
00:17:31.910 --> 00:17:34.740
我们可以只返回告诉搅拌机的路径。

327
00:17:34.750 --> 00:17:36.700
只要使用事件就正常了。

328
00:17:36.710 --> 00:17:40.300
我们也可以为滑鼠移动做这件事，我们也可以做

329
00:17:40.300 --> 00:17:45.080
预设情况下，模型运算子将更像是搅拌机的补充，

330
00:17:45.080 --> 00:17:46.170
有规律的行为

331
00:17:46.440 --> 00:17:49.290
而不是接管所有的使用者介面。

332
00:17:49.300 --> 00:17:52.740
这取决于您来决定您的成年人应该做什么。

333
00:17:52.750 --> 00:17:55.090
遍历你所经历的所有事件的例子

334
00:17:55.090 --> 00:17:58.830
也可以在模板中的计时器范例中找到，

335
00:17:58.830 --> 00:18:00.930
python 和 not 运算子。

336
00:18:00.930 --> 00:18:05.140
模型定时器的使用与你之前看到的定时器基本上相同，

337
00:18:05.140 --> 00:18:09.880
只是添加另一个注册功能，当然当你停下来时，

338
00:18:09.880 --> 00:18:13.610
你还必须注销你的计时器，这次是执行

339
00:18:13.610 --> 00:18:17.380
返回正在运行的模型的函数因此您可以启动模型运算符

340
00:18:17.380 --> 00:18:21.450
不仅来自调用，还来自执行，这里

341
00:18:21.450 --> 00:18:25.690
您会看到自拍定时器等于事件计时器的视窗管理器。

342
00:18:25.700 --> 00:18:26.170
广告，

343
00:18:26.840 --> 00:18:29.620
这是定时器事件之间的秒数

344
00:18:29.620 --> 00:18:31.530
你想要并且你必须通过

345
00:18:31.530 --> 00:18:34.320
窗口，以便它知道您的操作员属于哪个窗口

346
00:18:34.320 --> 00:18:37.960
然后模型处理程式广告并返回正在运行的模型。

347
00:18:37.970 --> 00:18:40.130
然后当你想取消计时器时，

348
00:18:40.140 --> 00:18:43.140
您必须告诉视窗管理器而不是事件计时器。

349
00:18:43.140 --> 00:18:48.240
广告，你说事件计时器被你从事件计时器获得的东西删除了。

350
00:18:48.240 --> 00:18:51.210
广告，在您的模型函数中您将收到一个事件

351
00:18:51.210 --> 00:18:54.060
打字员计时器，您可以在那里做各种事情。

352
00:18:54.070 --> 00:18:57.830
我们可以看到这里的模型函数是预设情况下它返回传递过来的。

353
00:18:57.840 --> 00:19:01.140
所以这不会妨碍您使用搅拌机，

354
00:19:01.150 --> 00:19:05.660
只是它总是改变主题，所以它毕竟可能会妨碍。

355
00:19:06.040 --> 00:19:09.220
这就是本期艺术家脚本的内容。

356
00:19:09.230 --> 00:19:12.660
如果您有任何疑问或意见，请在下面留言。

357
00:19:12.670 --> 00:19:16.390
如果您想获得更多帮助或您只想谈论

358
00:19:16.390 --> 00:19:20.940
当涉及到附加元件、Python 和脚本时，有哪些好的方法

359
00:19:20.950 --> 00:19:26.090
弹出到搅拌机点聊天是官方搅拌机聊天平台，那里

360
00:19:26.090 --> 00:19:29.270
是 python 频道，您可以在其中提出所有此类问题，

361
00:19:29.270 --> 00:19:31.560
那里有很多人互相帮助。

362
00:19:31.840 --> 00:19:35.050
无论如何，现在就这样了，稍后见。



