﻿1
00:00:04,590 --> 00:00:05,580
‫你好, 欢迎｡

2
00:00:05,580 --> 00:00:12,240
‫在这节课上, 我们将整理出我们的盲区的角度, 把它和我们的游戏联系起来｡

3
00:00:12,240 --> 00:00:17,550
‫在这个过程中, 我们要学习很多数学知识, 很多变换和向量｡

4
00:00:17,550 --> 00:00:20,610
‫让我们深入了解一下这是如何工作的｡

5
00:00:22,870 --> 00:00:27,280
‫所以我们希望能够得到我们应该移动的角度｡

6
00:00:27,730 --> 00:00:34,690
‫然而, 在此之前, 我们需要做一点数学运算, 因为我们想知道如何得到这个角度,

7
00:00:34,690 --> 00:00:38,020
‫这个角度对于玩家来说是局部的｡

8
00:00:38,440 --> 00:00:46,870
‫我会解释我所说的局部和全局是什么意思, 我们如何从全局速度中得到, 以及这些术语的含义｡

9
00:00:47,080 --> 00:00:48,070
‫让我们来看看｡

10
00:00:48,070 --> 00:00:53,770
‫首先, 我们需要对转换有一点基本的了解, 什么是转换, 我们已经见过了,

11
00:00:53,770 --> 00:00:56,560
‫或者你们之前已经见过了｡

12
00:00:56,710 --> 00:01:00,850
‫当您查看任何场景组件时, 都是层次结构中的这些组件｡

13
00:01:01,270 --> 00:01:02,890
‫你可以看到这里有一个变换｡

14
00:01:02,890 --> 00:01:07,660
‫位置, 旋转, 缩放属性, 这就是变换的基本含义｡

15
00:01:08,050 --> 00:01:13,000
‫但有一点你没有看到, 这一转换的另一部分是,

16
00:01:13,000 --> 00:01:21,010
‫这些相同的组件处于一个层次结构中, 这意味着它们的转换器也有一个父级, 或者说, 基本上是层次结构｡

17
00:01:21,460 --> 00:01:23,380
‫那这是怎么做到的呢？

18
00:01:23,380 --> 00:01:26,440
‫这里有一个玩具的例子｡

19
00:01:26,440 --> 00:01:31,030
‫我们这里有一个立方体, 它是我们的基地, 它是我们世界的中心｡

20
00:01:31,450 --> 00:01:33,730
‫这就是我们的世界空间｡

21
00:01:33,940 --> 00:01:41,590
‫我们有这个角色, 一个小笑脸, 他在世界上有一个相对于他的家乡的位置｡

22
00:01:42,040 --> 00:01:47,710
‫然后这个角色有一把枪, 枪有一个相对于角色的位置｡

23
00:01:47,710 --> 00:01:56,620
‫所以这个层次的运作方式是枪的父母是角色, 父母, 或者角色是他的大本营或者世界｡

24
00:01:57,610 --> 00:02:01,780
‫然后我们有一些局部坐标系｡

25
00:02:01,780 --> 00:02:06,610
‫所以世界坐标系是, 世界坐标系, 全球坐标系｡

26
00:02:06,970 --> 00:02:12,430
‫那么我们角色的坐标就是它的位置的局部坐标｡

27
00:02:12,430 --> 00:02:15,910
‫因此, 枪的位置与其角色相关｡

28
00:02:15,910 --> 00:02:16,870
‫那是什么意思？

29
00:02:16,870 --> 00:02:22,720
‫也就是说, 如果角色决定去做一些小的越轨行为, 那么枪也会跟着移动,

30
00:02:22,720 --> 00:02:28,120
‫因为枪相对于角色的位置保持不变, 但是因为角色的移动,

31
00:02:28,120 --> 00:02:31,120
‫它在世界上的位置也会移动｡

32
00:02:31,810 --> 00:02:33,790
‫旋转也是如此｡

33
00:02:33,790 --> 00:02:37,690
‫如果角色转身, 枪也必须转身｡

34
00:02:38,170 --> 00:02:42,340
‫这就是变形金刚的工作原理也是按比例的, 但我们不去看比例｡

35
00:02:42,340 --> 00:02:46,870
‫这是一样的, 但它只是复杂的事情, 我们不需要这样做｡

36
00:02:46,870 --> 00:02:47,560
‫看看这个｡

37
00:02:47,560 --> 00:02:49,000
‫这跟我们无关｡

38
00:02:49,870 --> 00:02:52,300
‫让我们换个角度来看这个问题｡

39
00:02:52,300 --> 00:02:54,730
‫我们有全局空间和局部空间｡

40
00:02:54,730 --> 00:03:03,160
‫所以全局空间的基地在世界的中心, 角色已经离开并向右移动｡

41
00:03:03,460 --> 00:03:07,000
‫另一方面, 局部空间则从相反的角度看待事物｡

42
00:03:07,000 --> 00:03:14,740
‫它说人物是世界的中心, 而基地已经向左倒了｡

43
00:03:14,740 --> 00:03:17,260
‫这就是全球和本地的区别｡

44
00:03:17,260 --> 00:03:19,240
‫这完全取决于你的观点｡

45
00:03:19,240 --> 00:03:20,590
‫一切都是相对的｡

46
00:03:20,590 --> 00:03:29,290
‫这就是我们所说的在全局和局部空间之间转换的意思, 我们对哪一个感兴趣？

47
00:03:29,290 --> 00:03:35,020
‫对于我们的角度, 我们感兴趣的是相对于玩家正在观看的地方的局部角度｡

48
00:03:35,020 --> 00:03:38,770
‫我们在说, 你知道, 我们是不是要向右移动？

49
00:03:38,770 --> 00:03:42,190
‫这就是我们所说的, 不是全球性的, 而是局部性的｡

50
00:03:42,190 --> 00:03:45,340
‫我们是不是要移到我们的播放器的右侧？

51
00:03:45,340 --> 00:03:51,550
‫因为如果我们的球员转身180度, 他不应该仅仅因为转身就播放左动画｡

52
00:03:51,970 --> 00:03:59,320
‫所以一个更重要的区别是我们如何对不同种类的向量进行变换｡

53
00:03:59,770 --> 00:04:04,390
‫我想看的第一个例子是位置向量｡

54
00:04:04,600 --> 00:04:13,090
‫所以位置向量基本上是一个向量, 它告诉我们当前位置和坐标系中的零点之间的差异, 当我们专注于角色时,

55
00:04:13,210 --> 00:04:19,750
‫它就是角色本身, 然后它给我们一个箭头,

56
00:04:19,750 --> 00:04:24,850
‫指向某个东西应该在哪里｡

57
00:04:24,850 --> 00:04:28,600
‫所以在这种情况下, 它是枪的位置矢量｡

58
00:04:28,870 --> 00:04:34,180
‫现在, 如果我们把它转换到我们的世界空间, 这就是所发生的｡

59
00:04:34,180 --> 00:04:40,570
‫箭头现在指向我们新世界的中心, 全球空间, 它指向枪｡

60
00:04:41,050 --> 00:04:45,100
‫这就是变换位置向量的结果｡

61
00:04:45,310 --> 00:04:49,480
‫现在, 如果你做一个方向向量, 事情看起来有点不同｡

62
00:04:49,480 --> 00:04:57,460
‫方向向量是这样的, 这就是我应该指向的方向,

63
00:04:58,060 --> 00:05:06,340
‫而不一定是物体的位置, 这会发生很大的变化, 因为我们现在对它指向同一个位置不感兴趣｡

64
00:05:06,340 --> 00:05:10,060
‫所以这个位置并没有真正得到更新｡

65
00:05:10,060 --> 00:05:19,360
‫相反, 它得到了一个矢量, 旋转和缩放, 或者其他什么, 我们最终得到了它, 看起来有点像这样｡

66
00:05:19,690 --> 00:05:21,730
‫所以这实际上是一种转变｡

67
00:05:21,770 --> 00:05:27,470
‫我们想要做的国家, 因为我们在处理一个速度, 它是一个方向矢量, 而不是位置矢量,

68
00:05:27,470 --> 00:05:31,400
‫或者速度并不能告诉我们, 我们应该在哪里｡

69
00:05:31,400 --> 00:05:36,740
‫它告诉我们应该朝哪个方向前进, 以及朝那个方向前进的速度｡

70
00:05:38,540 --> 00:05:45,320
‫所以, 在这个理论的基础上, 让我们继续, 从这个速度来计算我们的方向｡

71
00:05:45,320 --> 00:05:52,110
‫我们知道速度是全局空间的, 我们想把它转换到局部空间｡

72
00:05:52,130 --> 00:05:58,010
‫这就意味着, 一般来说, 我们总是试图用相反的方式来做事情, 通常是因为我们说,

73
00:05:58,010 --> 00:06:02,870
‫我们已经得到了位置, 枪的局部位置, 这是局部变换.

74
00:06:02,870 --> 00:06:10,220
‫我们想弄清楚它在世界空间中是什么, 这样我们就可以相对于其他一切来渲染它｡

75
00:06:10,430 --> 00:06:12,650
‫这不是我们要做的

76
00:06:12,650 --> 00:06:13,880
‫我们想做的恰恰相反｡

77
00:06:13,880 --> 00:06:17,330
‫所以我们实际上需要的是一个逆变换｡

78
00:06:17,330 --> 00:06:20,090
‫从局部到全局的转换是这样进行的｡

79
00:06:20,120 --> 00:06:23,090
‫逆变换从全局到局部｡

80
00:06:23,600 --> 00:06:27,980
‫因为我们已经得到了全局速度, 所以我们要进行逆变换｡

81
00:06:27,980 --> 00:06:32,270
‫让我们从这里开始, 寻找逆变换｡

82
00:06:32,270 --> 00:06:34,880
‫你可以看到我们有两个选择｡

83
00:06:34,880 --> 00:06:36,830
‫我们不关心这些矩阵的｡

84
00:06:36,830 --> 00:06:39,980
‫我们有两个方向和位置选项｡

85
00:06:39,980 --> 00:06:45,050
‫就像我说的, 不同的是一个位置会移动那个位置｡

86
00:06:45,050 --> 00:06:49,610
‫方向只会套用旋转和缩放｡

87
00:06:49,610 --> 00:06:51,200
‫所以我们要方向｡

88
00:06:51,870 --> 00:06:54,030
‫我们需要一个变换来旋转它｡

89
00:06:54,030 --> 00:06:57,900
‫我们要把棋子本身, 角色, 转化过来.

90
00:06:57,900 --> 00:07:00,000
‫那是在哪里——在世界上｡

91
00:07:00,120 --> 00:07:05,040
‫让我们继续, 抓住所有者, 寻找变换.

92
00:07:06,120 --> 00:07:08,070
‫属性获取参与者转换｡

93
00:07:08,070 --> 00:07:09,090
‫就是那个

94
00:07:09,270 --> 00:07:16,440
‫我们将它传递到逆变换方向, 我们得到了一个新的向量｡

95
00:07:17,790 --> 00:07:22,110
‫所以下一步就是得到这个矢量的旋转｡

96
00:07:22,110 --> 00:07:25,420
‫所以我们要去寻找旋转｡

97
00:07:25,440 --> 00:07:27,030
‫看看我们能找到什么｡

98
00:07:27,330 --> 00:07:31,530
‫我们已经找到了看旋转, 使旋转从轴余切｡

99
00:07:31,560 --> 00:07:35,340
‫现在, 让我们看一下从X向量开始的旋转｡

100
00:07:36,340 --> 00:07:42,670
‫如果你读过这里的文档, 它说它会从这个矢量中设置你的和音高, 但是它不会设置角色,

101
00:07:42,670 --> 00:07:45,790
‫因为它不能从矢量中获得信息｡

102
00:07:45,820 --> 00:07:46,590
‫那就好｡

103
00:07:46,600 --> 00:07:48,700
‫我们不关心在这个案子中的角色｡

104
00:07:48,700 --> 00:07:53,200
‫我们关心的是用户, 因为我们想知道我们向左或向右转了多远｡

105
00:07:53,200 --> 00:07:59,080
‫从X向量旋转, 这就是我们想要的, 将返回一个旋转器｡

106
00:07:59,500 --> 00:08:05,980
‫为了让我们只从旋转器中获取用户, 我们将右键单击大头针并点击分裂结构大头针,

107
00:08:05,980 --> 00:08:10,870
‫这将继续并将该结构分裂为滚动俯仰｡

108
00:08:10,870 --> 00:08:12,750
‫你也可以在向量上做这个｡

109
00:08:12,760 --> 00:08:18,220
‫顺便说一下, 我想你可以右键单击, 让我们看看, 我想我必须打破链接这样做｡

110
00:08:18,220 --> 00:08:19,150
‫所以我不会给你们看｡

111
00:08:19,510 --> 00:08:23,200
‫但基本上, 我们现在已经有了一个用户, 这就是我们要设置的｡

112
00:08:23,200 --> 00:08:28,090
‫因此, 许多挑战将用户设置为角度, 并对其进行测试｡

113
00:08:28,920 --> 00:08:36,240
‫同样, 迷你挑战将年份设置为年度变量, 进入混合空间进行测试, 在游戏中进行测试,

114
00:08:36,240 --> 00:08:40,080
‫看看你是否能够成功地运行｡

115
00:08:41,250 --> 00:08:41,430
‫好吧, 我会的

116
00:08:41,430 --> 00:08:41,900
‫欢迎回来｡

117
00:08:41,910 --> 00:08:48,750
‫因此, 我们将再次拖动角度, 可变设置角度, 从偏航设置角度,

118
00:08:48,750 --> 00:08:51,540
‫并从速度结束处获取执行销｡

119
00:08:51,900 --> 00:08:56,820
‫我将编译并保存它, 然后我们将转到沙箱并单击播放｡

120
00:08:58,160 --> 00:08:59,780
‫现在让我们试着移动一下｡

121
00:08:59,780 --> 00:09:05,270
‫一个控制器将是理想的, 这样你就可以测试出不同的梯度和细微差别｡

122
00:09:05,270 --> 00:09:10,280
‫当然, 你可以看到, 如果我现在开始移动, 我可以向后移动,

123
00:09:10,280 --> 00:09:14,840
‫我可以向前移动, 冲刺, 侧身和45度｡

124
00:09:14,840 --> 00:09:20,510
‫所有这些都是基于我们计算角度的数学原理｡

125
00:09:21,640 --> 00:09:22,120
‫好东西｡

126
00:09:22,120 --> 00:09:30,400
‫我们已经学习了很多关于变换和向量的知识, 以及如何变换向量, 包括逆变换和正变换｡

127
00:09:30,490 --> 00:09:36,680
‫在下一节课中, 我们将讨论如何解决我们在这里看到的这种滑脚现象.

128
00:09:36,700 --> 00:09:37,690
‫我会看到你在那里｡

