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
無論如何，現在就這樣了，稍後見。



