WEBVTT

1
00:00:00.001 --> 00:00:05.000
約束是裝配過程中使用的寶貴工具。

2
00:00:05.000 --> 00:00:11.000
它們允許在骨骼之間和對象之間形成簡單和復雜的關係。

3
00:00:11.000 --> 00:00:17.000
約束主要有兩種類型：對象約束和骨骼約束。

4
00:00:17.000 --> 00:00:23.000
在大多數情況下，骨骼約束在功能上只是對象約束，但分配給骨骼。

5
00:00:23.000 --> 00:00:27.000
在本視頻中，我們將討論一些基本的對象約束，

6
00:00:27.000 --> 00:00:33.000
但請記住，本視頻中的大多數概念和約束也適用於骨骼約束。

7
00:00:33.000 --> 00:00:37.000
現在讓我們看一些約束示例以及如何使用它們。

8
00:00:37.000 --> 00:00:41.000
在本視頻中，我們將討論複製和限制變換約束。

9
00:00:41.000 --> 00:00:46.000
例如，這些包括複製和限制位置約束。

10
00:00:46.000 --> 00:00:54.000
複製位置約束是一個簡單的約束，它作為一個對象複製另一個對象的位置值的一種方式而存在，

11
00:00:54.000 --> 00:00:57.000
同時忽略旋轉和縮放。

12
00:00:57.000 --> 00:00:59.000
讓我們看看這是如何工作的。

13
00:00:59.000 --> 00:01:06.000
我們要做的第一件事是添加一個猴子網格，這樣我們就可以有一個明顯的參考或目標對象。

14
00:01:06.000 --> 00:01:14.000
現在假設我們想讓立方體沿著 X 和 Y 軸而不是 Z 軸複製猴子的位置。

15
00:01:14.000 --> 00:01:19.000
這樣我們就可以讓立方體跟隨猴子四處走動，但不會離開地面。

16
00:01:20.000 --> 00:01:27.000
為此，只需選擇一個立方體並轉到“約束”選項卡，該選項卡由包裹在一起的兩個對象的圖標指示。

17
00:01:27.000 --> 00:01:31.000
從那裡，打開下拉菜單並選擇複製位置。

18
00:01:31.000 --> 00:01:38.000
這將創建複製位置約束並將其分配給您選擇的活動對象。

19
00:01:38.000 --> 00:01:43.000
現在我們可以繼續左鍵單擊對象字段旁邊的吸管工具。

20
00:01:43.000 --> 00:01:49.000
這將使用我們在視口中的下一次左鍵單擊來識別我們要引用的對象。

21
00:01:49.000 --> 00:01:52.000
讓我們左鍵單擊猴子對象。

22
00:01:52.000 --> 00:01:57.000
正如您所看到的，立方體自己的位置精確地複制了猴子的位置。

23
00:01:57.000 --> 00:02:03.000
如果我們選擇猴子，我們可以移動它來確認立方體確實限制在我們的猴子身上。

24
00:02:03.000 --> 00:02:06.000
但這並不完全是我們想要的。

25
00:02:07.000 --> 00:02:14.000
我們希望立方體不離開地面，但仍然沿著 X 和 Y 軸跟隨猴子。

26
00:02:14.000 --> 00:02:19.000
為此，我們可以再次選擇立方體並進入複製位置約束設置。

27
00:02:19.000 --> 00:02:26.000
在這裡我們可以看到有如何解釋目標對象的每個軸的位置數據的設置。

28
00:02:26.000 --> 00:02:34.000
讓我們繼續取消選中 Z 軸，因為我們知道我們希望立方體忽略猴子的 Z 軸位置。

29
00:02:34.000 --> 00:02:41.000
我們開始吧！如果我們現在移動猴子，我們可以看到立方體跟隨猴子，同時保持在網格地板上。

30
00:02:41.000 --> 00:02:48.000
只是為了好玩，讓我們繼續看看反轉復選框在復制位置約束中的作用。

31
00:02:48.000 --> 00:02:52.000
讓我們重新檢查 Z 軸，然後檢查反轉。

32
00:02:52.000 --> 00:02:55.000
看起來我們得到了非常酷的鏡面效果。

33
00:02:55.000 --> 00:03:04.000
立方體被告知做與猴子的 Z 軸位置所說的相反的事情，沿著 Z 軸翻轉它穿過原點。

34
00:03:04.000 --> 00:03:14.000
現在我提到復制位置約束忽略參考對象的旋轉，但如果我們將世界空間更改為本地空間，則情況並不完全正確。

35
00:03:15.000 --> 00:03:25.000
此處的第一個下拉列表控制要從參考對象解釋哪些軸數據，而第二個下拉列表控制要影響所選對象的軸數據。

36
00:03:25.000 --> 00:03:34.000
讓我們將第一個下拉菜單從世界空間更改為本地空間，從而允許我們引用猴子的本地軸位置值。

37
00:03:35.000 --> 00:03:44.000
正如您所看到的，局部空間考慮了對象的旋轉，因為對象的局部軸取決於它面向的方向。

38
00:03:44.000 --> 00:03:55.000
因為我們的猴子稍微旋轉，所以如果我們沿著它的局部 X 軸移動猴子，立方體將沿著世界 X 軸移動，而不是完美地跟隨它。

39
00:03:55.000 --> 00:03:58.000
請隨意進一步嘗試這些設置。

40
00:03:58.000 --> 00:04:07.000
更快速的一件事，假設我們再次將這兩者更改為世界空間，現在我們非常喜歡立方體當前在該幀中位於猴子正下方的方式。

41
00:04:07.000 --> 00:04:12.000
但我們想要刪除約束，以便我們可以在此框架之外自由地為其設置動畫。

42
00:04:12.000 --> 00:04:21.000
好吧，讓我們繼續通過按屬性編輯器約束選項卡中眼球圖標旁邊的 X 圖標來刪除約束。

43
00:04:21.000 --> 00:04:27.000
但正如您所看到的，如果我們這樣做，由複制位置約束驅動的轉換就會被忘記。

44
00:04:27.000 --> 00:04:33.000
這對我們來說並不理想，所以讓我們用控制 Z 撤銷它並嘗試其他方法。

45
00:04:33.000 --> 00:04:38.000
也許我們可以將影響力降低到零？不，那行不通。

46
00:04:38.000 --> 00:04:41.000
但您可能會注意到影響滑塊旁邊的 X 圖標。

47
00:04:41.000 --> 00:04:46.000
如果將鼠標懸停在其上，您會看到它顯示“禁用並保持變換”。

48
00:04:46.000 --> 00:04:47.000
我們點擊它。

49
00:04:47.000 --> 00:04:52.000
這將使影響滑塊為零，但我們的立方體保持原狀。

50
00:04:52.000 --> 00:05:00.000
這是因為它已用我們在單擊按鈕之前看到的約束驅動位置數據替換了立方體的原始位置數據。

51
00:05:00.000 --> 00:05:05.000
這也意味著我們實際上可以在不進行任何更改的情況下刪除約束。

52
00:05:05.000 --> 00:05:09.000
位置並不是我們可以復制的唯一轉換值。

53
00:05:09.000 --> 00:05:15.000
相同的概念適用於復制旋轉、複製縮放和復制變換約束。

54
00:05:15.000 --> 00:05:19.000
那麼限制轉型呢？這很簡單。

55
00:05:19.000 --> 00:05:26.000
與復制變換約束不同，限制變換約束實際上不需要參考對象。

56
00:05:26.000 --> 00:05:30.000
相反，它們使用用戶輸入的值。

57
00:05:30.000 --> 00:05:37.000
例如，假設我們再次有了猴子和立方體，但是我們的立方體被放大為某種房間。

58
00:05:37.000 --> 00:05:42.000
如果我們想要製作一些動畫，讓我們的猴子嚴格留在房間的牆壁內，

59
00:05:42.000 --> 00:05:46.000
我們可以通過限制位置約束很容易地做到這一點。

60
00:05:46.000 --> 00:05:50.000
為此，我們將進入線框模式，以便我們可以看到並選擇我們的猴子。

61
00:05:50.000 --> 00:05:55.000
我們可以通過按 Z 並從餅圖菜單中選擇線框來做到這一點。

62
00:05:55.000 --> 00:05:59.000
讓我們選擇猴子並轉到屬性編輯器中的約束選項卡。

63
00:05:59.000 --> 00:06:03.000
從下拉菜單中，只需選擇限制位置即可。

64
00:06:03.000 --> 00:06:08.000
起初，什麼也沒有發生，因為所有這些複選標記都被禁用。

65
00:06:08.000 --> 00:06:14.000
這些用於啟用每個位置軸允許的最小值和最大值。

66
00:06:14.000 --> 00:06:22.000
只是為了演示，如果我們選中所有這些框，您會發現嘗試移動猴子將不再起作用。

67
00:06:22.000 --> 00:06:29.000
但是，例如，如果您左鍵單擊拖動最大 Z 值，您會注意到突然可以移動猴子，

68
00:06:29.000 --> 00:06:33.000
但僅限於您設置的最大 Z 值。

69
00:06:33.000 --> 00:06:37.000
像這樣設置範圍就是限制位置約束的工作原理。

70
00:06:37.000 --> 00:06:41.000
為了實現我們將猴子限制在立方體牆壁內的目標，

71
00:06:41.000 --> 00:06:45.000
我們可以反複試驗，但我發現有一種方法是最快的。

72
00:06:45.000 --> 00:06:48.000
我將繼續在 Z 軸上進行演示。

73
00:06:48.000 --> 00:06:53.000
我們要做的第一件事就是取消選中您要設置的軸限制的框。

74
00:06:53.000 --> 00:06:56.000
在本例中，我們將從 Z 最大值開始。

75
00:06:56.000 --> 00:07:00.000
通過取消選中此選項，我們可以將猴子沿 Z 軸移動到我們想要的距離。

76
00:07:00.000 --> 00:07:04.000
因此，我們將把猴子放置在我們大約想要的限制位置。

77
00:07:04.000 --> 00:07:07.000
放置後，再次選中該框。

78
00:07:07.000 --> 00:07:10.000
這將使猴子恢復到極限，

79
00:07:10.000 --> 00:07:17.000
但隨後您可以左鍵單擊拖動最大 Z 值，直到猴子移回您之前放置的位置。

80
00:07:17.000 --> 00:07:22.000
一旦猴子停止移動，你就會知道你把值增加太多了，

81
00:07:22.000 --> 00:07:27.000
因此，稍微調整一下，您應該能夠將最大 Z 值與您希望猴子所在的位置相匹配。

82
00:07:27.000 --> 00:07:30.000
幸運的是，由於我們的立方體四周大小相同，

83
00:07:30.000 --> 00:07:37.000
我們可以復制所有最大值的這個值，並在所有最小值前面添加一個負號。
84
00:07:37.000 --> 00:07:42.000
但請記住，根據您認為合適的方式調整這些值以適應您自己的場景。

85
00:07:42.000 --> 00:07:44.000
我們就這樣吧。

86
00:07:44.000 --> 00:07:51.000
正如您所看到的，當我們移動猴子時，立方體的牆壁似乎阻止了猴子在所有軸方向上的移動。

87
00:07:51.000 --> 00:07:54.000
但您可能會注意到有些奇怪的事情。

88
00:07:54.000 --> 00:07:59.000
如果我們將猴子明顯移動到基於限制位置約束允許其移動的位置，

89
00:07:59.000 --> 00:08:05.000
然後我們嘗試將它移動到另一個方向，看起來猴子需要一段時間才能對我們的動作做出反應。

90
00:08:05.000 --> 00:08:10.000
這是因為猴子實際上還在計算它的真實位置，

91
00:08:10.000 --> 00:08:14.000
如果約束未激活，它應該位於的位置。

92
00:08:14.000 --> 00:08:21.000
事實上，如果我們打開右側的快速菜單並轉到項目，我們就可以直觀地看到這一點。

93
00:08:21.000 --> 00:08:25.000
這將顯示我們所選對象的位置數據。

94
00:08:25.000 --> 00:08:29.000
正如我們所看到的，當我們將猴子移過約束的極限時，

95
00:08:29.000 --> 00:08:32.000
它的真實位置價值不斷變化。

96
00:08:32.000 --> 00:08:36.000
為了讓它明顯地開始再次向相反方向移動，

97
00:08:36.000 --> 00:08:42.000
其位置數據的值必須落在限制位置約束的範圍內。

98
00:08:42.000 --> 00:08:48.000
要防止這種不可見的轉換，只需選中此轉換框即可。

99
00:08:48.000 --> 00:08:53.000
現在，正如您所看到的，即使您嘗試將猴子移動到明顯超過限制的位置，

100
00:08:53.000 --> 00:08:57.000
它會立即對朝相反方向移動做出反應。

101
00:08:57.000 --> 00:09:01.000
我們可以通過再次檢查該物體的位置數據來進一步確認這一點。

102
00:09:01.000 --> 00:09:07.000
正如您所看到的，真實位置現在與約束的限制相匹配。

103
00:09:07.000 --> 00:09:13.000
現在讓我們快速討論一下使用骨骼和對象的約束之間的區別。

104
00:09:14.000 --> 00:09:19.000
骨骼約束的工作方式與我剛剛向您展示的對象約束非常相似。

105
00:09:19.000 --> 00:09:22.000
事實上，它們的工作原理完全相同。

106
00:09:22.000 --> 00:09:27.000
但我應該告訴您一些有關骨骼和約束的重要信息。

107
00:09:27.000 --> 00:09:33.000
首先也是最重要的，您可以將骨骼設置為對象約束的目標對象。

108
00:09:33.000 --> 00:09:35.000
你怎麼做到這一點？

109
00:09:35.000 --> 00:09:39.000
好吧，讓我們繼續在場景中添加一個骨架對象。

110
00:09:39.000 --> 00:09:45.000
正如您所記得的，這些是由骨骼組成的，我們可以通過進入編輯模式添加更多骨骼。

111
00:09:45.000 --> 00:09:51.000
我將在編輯模式下選擇主骨骼，右鍵單擊並選擇細分。

112
00:09:51.000 --> 00:09:53.000
這會給我們兩根骨頭。

113
00:09:53.000 --> 00:09:58.000
現在建議養成清晰命名骨骼的好習慣，

114
00:09:58.000 --> 00:10:03.000
因此，讓我們繼續選擇每個骨骼並進入綠色骨骼圖標選項卡，

115
00:10:03.000 --> 00:10:06.000
這是屬性編輯器中的骨骼屬性。

116
00:10:06.000 --> 00:10:10.000
在頂部，我們可以左鍵單擊將骨骼重命名為我們想要的任何名稱。

117
00:10:10.000 --> 00:10:15.000
我將把頂部骨骼稱為頂部，將底部骨骼稱為底部。

118
00:10:15.000 --> 00:10:21.000
假設我們想要猴子對象複製頂部骨骼的旋轉。

119
00:10:21.000 --> 00:10:26.000
如果我們執行複制旋轉約束並將目標設置為頂部骨骼，

120
00:10:26.000 --> 00:10:30.000
你可以看到它實際上並沒有記錄頂部骨骼，

121
00:10:30.000 --> 00:10:33.000
而是將目標設置為骨架對象。

122
00:10:34.000 --> 00:10:40.000
那是因為我們的骨骼不是一個物體，而是存在於骨架物體內，

123
00:10:40.000 --> 00:10:45.000
類似於頂點和麵不是對象，而是存在於網格對像中。

124
00:10:45.000 --> 00:10:49.000
不幸的是，目標對象必須是一個對象。

125
00:10:49.000 --> 00:10:53.000
然而，當我們選擇骨架作為目標對象時，

126
00:10:53.000 --> 00:10:57.000
下面將出現一個骨骼參數，並標有該骨骼圖標。

127
00:10:57.000 --> 00:11:02.000
我們可以在此處從下拉菜單中選擇頂部骨骼。

128
00:11:03.000 --> 00:11:06.000
這就是為什麼明確命名骨骼很重要的原因之一，

129
00:11:06.000 --> 00:11:10.000
因為我們沒有適用於此領域的吸管工具。

130
00:11:10.000 --> 00:11:13.000
如果我們現在選擇骨架並進入姿勢模式，

131
00:11:13.000 --> 00:11:19.000
我們可以旋轉骨骼並確認猴子確實在復制骨骼的旋轉。

132
00:11:19.000 --> 00:11:22.000
那麼，如果我們想翻轉它怎麼辦？

133
00:11:22.000 --> 00:11:26.000
假設我們希望骨骼複製猴子對象的旋轉。

134
00:11:26.000 --> 00:11:27.000
這很簡單。

135
00:11:28.000 --> 00:11:30.000
讓我們刪除猴子的複制旋轉約束

136
00:11:30.000 --> 00:11:35.000
然後返回姿勢模式並選擇我們的骨架對象。

137
00:11:35.000 --> 00:11:38.000
一旦我們選擇了想要約束的骨骼，

138
00:11:38.000 --> 00:11:43.000
我們可以通過屬性編輯器中的約束選項卡添加複制旋轉約束。

139
00:11:43.000 --> 00:11:45.000
除非，當我們這樣做時，

140
00:11:45.000 --> 00:11:49.000
看起來猴子的旋轉實際上驅動了整個骨架對象的旋轉

141
00:11:49.000 --> 00:11:52.000
而不僅僅是我們選擇的骨頭。

142
00:11:52.000 --> 00:11:57.000
這是因為我們添加的是對象約束，而不是骨骼約束。

143
00:11:57.000 --> 00:12:02.000
要添加骨骼特定約束，您必須進入骨骼約束選項卡，

144
00:12:02.000 --> 00:12:06.000
由藍色圖標表示，看起來像包裹在另一個對像上的骨頭。

145
00:12:06.000 --> 00:12:12.000
到了這裡，我們就可以正確地將復制旋轉骨骼約束添加到我們選擇的骨骼中

146
00:12:12.000 --> 00:12:15.000
並將我們的目標對象設置為猴子。

147
00:12:15.000 --> 00:12:20.000
正如您所看到的，骨骼現在正確複製了猴子的旋轉。

148
00:12:20.000 --> 00:12:25.000
還有一些變換約束，例如維持體積約束

149
00:12:25.000 --> 00:12:29.000
以及極限距離約束，我建議您自行嘗試。

150
00:12:29.000 --> 00:12:32.000
但我們也會在另一個視頻中討論這些內容。

151
00:12:32.000 --> 00:12:36.000
我希望這能讓您很好地了解約束的工作原理

152
00:12:36.000 --> 00:12:38.000
以及如何在您的項目中使用它們。
