﻿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:38,020
‫しかし､ その前に少し計算が必要です｡ プレーヤーに局所的な角度を得る方法を理解したいのです｡

7
00:00:38,440 --> 00:00:46,870
‫そして､ ローカルとグローバルの意味､ グローバルな速度からそれを得る方法､ とにかくこれらの用語の意味について説明します｡

8
00:00:47,080 --> 00:00:48,070
‫では､ 見てみましょう｡

9
00:00:48,070 --> 00:00:53,770
‫まず最初に､ トランスフォームについて少し基本的なことを説明する必要があります｡ トランスフォームとは何か､ 私たちも見たことがあるし､

10
00:00:53,770 --> 00:00:56,560
‫皆さんも少し見たことがあると思います｡

11
00:00:56,710 --> 00:01:00,850
‫シーンコンポーネントのどれかを見ると､ それは階層にあるこれらのコンポーネントです｡

12
00:01:01,270 --> 00:01:02,890
‫ここでトランスフォームしているのがわかります｡

13
00:01:02,890 --> 00:01:07,660
‫つまり､ 位置､ 回転､ スケールのプロパティは､ 基本的にトランスフォームのことです｡

14
00:01:08,050 --> 00:01:13,000
‫しかし､ ここで見えていないことの1つは､ このトランスフォームの一部として､ 同じコンポーネントが階層構造になっていることです｡

15
00:01:13,000 --> 00:01:21,010
‫つまり､ そのトランスフォーマーにも親があるか､ 基本的に階層構造になっています｡

16
00:01:21,460 --> 00:01:23,380
‫では､ その仕組みはどうなっているのでしょうか｡

17
00:01:23,380 --> 00:01:26,440
‫さて､ ここで一種のおもちゃのような例を挙げます｡

18
00:01:26,440 --> 00:01:31,030
‫私たちはここに立方体を置いていますが､ これは私たちのベースであり､ 私たちの世界の中心であるとか､ そういうものだと言っています｡

19
00:01:31,450 --> 00:01:33,730
‫それが､ 私たちの世界空間になるわけです｡

20
00:01:33,940 --> 00:01:41,590
‫この小さなスマイリーフェイスのキャラクターは､ 自分のホームベースと相対的な世界の位置関係を持っています｡

21
00:01:42,040 --> 00:01:47,710
‫そして､ このキャラクターは銃を持っていて､ 銃はキャラクターとの相対的な位置関係を持っています｡

22
00:01:47,710 --> 00:01:56,620
‫このヒエラルキーの仕組みは､ 銃の親がキャラクター､ 親がキャラクター､ キャラクターが本拠地や世界ということですね｡

23
00:01:57,610 --> 00:02:01,780
‫そして､ これらの中にいくつかのローカル座標系があります｡

24
00:02:01,780 --> 00:02:06,610
‫つまり､ 世界の座標系は､ 世界システム､ 地球システムなのです｡

25
00:02:06,970 --> 00:02:12,430
‫そうすると､ キャラクターの座標は､ その位置のローカルなものになります｡

26
00:02:12,430 --> 00:02:15,910
‫つまり､ 銃はそのキャラクターと相対的な位置関係にあるわけです｡

27
00:02:15,910 --> 00:02:16,870
‫どういう意味ですか？

28
00:02:16,870 --> 00:02:22,720
‫つまり､ キャラクターがちょっとした冒険に出ようと思ったら､ 銃も一緒に移動します｡

29
00:02:22,720 --> 00:02:31,120
‫キャラクターに対する銃の位置は変わりませんが､ キャラクターが移動した分､ 世界での位置が移動したことになるからです｡

30
00:02:31,810 --> 00:02:33,790
‫回転も同じです｡

31
00:02:33,790 --> 00:02:37,690
‫キャラクターが振り向けば､ 銃も振り向かなければなりません｡

32
00:02:38,170 --> 00:02:42,340
‫トランスフォーマーの作品も本来はそうなのですが､ スケールを見るつもりはありません｡

33
00:02:42,340 --> 00:02:46,870
‫同じなのに､ 複雑になるだけで､ やる必要がないんです｡

34
00:02:46,870 --> 00:02:47,560
‫見てみてください｡

35
00:02:47,560 --> 00:02:49,000
‫私たちには関係のない話です｡

36
00:02:49,870 --> 00:02:52,300
‫では､ これとは別の見方をしてみましょう｡

37
00:02:52,300 --> 00:02:54,730
‫グローバルな空間とローカルな空間があるんです｡

38
00:02:54,730 --> 00:03:03,160
‫つまり､ グローバル空間はベースが世界の中心にあり､ キャラクターは外れて右側に行ったということです｡

39
00:03:03,460 --> 00:03:07,000
‫一方､ ローカルスペースは､ 逆の視点で物事を見ています｡

40
00:03:07,000 --> 00:03:14,740
‫キャラクターが世界の中心であり､ ベースが左側にオーバーしてしまったことが逆効果になったと書いてあります｡

41
00:03:14,740 --> 00:03:17,260
‫グローバルとローカルの違いってやつですね｡

42
00:03:17,260 --> 00:03:19,240
‫すべては､ あなたの視点次第です｡

43
00:03:19,240 --> 00:03:20,590
‫すべては相対的なものです｡

44
00:03:20,590 --> 00:03:29,290
‫つまり､ グローバル空間とローカル空間の間の変換というのはこういうことで､ どちらに興味があるかということです｡

45
00:03:29,290 --> 00:03:35,020
‫角度は､ プレイヤーが見ている位置からの相対的なローカルアングルに興味があります｡

46
00:03:35,020 --> 00:03:38,770
‫私たちが言っているのは､ 右側に移動しているかということです｡

47
00:03:38,770 --> 00:03:42,190
‫それは､ グローバルではなく､ ローカルにということです｡

48
00:03:42,190 --> 00:03:45,340
‫プレーヤーにとって正しいローカルに動いているか？

49
00:03:45,340 --> 00:03:51,550
‫だって､ うちの選手が180度向きを変えたからって､ 左のアニメを流すのはダメでしょう｡

50
00:03:51,970 --> 00:03:59,320
‫そこでもう一つ重要なのは､ さまざまな種類のベクトルに対して､ どのように変換を行うかということです｡

51
00:03:59,770 --> 00:04:04,390
‫最初に見てみたいのは､ 位置ベクトルの例です｡

52
00:04:04,600 --> 00:04:13,090
‫位置ベクトルとは､ 基本的には､ 現在地または座標系のゼロ点（キャラクターに注目している場合は､

53
00:04:13,210 --> 00:04:24,850
‫キャラクター自身）との差を示すベクトルであり､ 何かがあるべき場所を指し示す矢印を示すものです｡

54
00:04:24,850 --> 00:04:28,600
‫つまり､ この場合は銃の位置ベクトルということになります｡

55
00:04:28,870 --> 00:04:34,180
‫さて､ これを私たちの世界空間に変換すると､ こうなります｡

56
00:04:34,180 --> 00:04:40,570
‫今､ 矢印は私たちの新しい世界､ 地球空間の中心から､ 銃に向いているのです｡

57
00:04:41,050 --> 00:04:45,100
‫つまり､ 位置ベクトルを変換するとこうなるわけです｡

58
00:04:45,310 --> 00:04:49,480
‫さて､ 方向ベクトルを行うと､ 少し様子が変わってきます｡

59
00:04:49,480 --> 00:04:57,460
‫方向ベクトルというのは､ 「これはこう指すべきだ」というもので､ 必ずしもモノがどこにあるかということではなく､

60
00:04:58,060 --> 00:05:06,340
‫同じ場所を指すことには興味がないので､ これはむしろ違う形で変換されます｡

61
00:05:06,340 --> 00:05:10,060
‫だから､ その位置はあまり更新されないんです｡

62
00:05:10,060 --> 00:05:19,360
‫その代わり､ ベクターが回転したり､ スケーリングされたりして､ 最終的にはこのような形になります｡

63
00:05:19,690 --> 00:05:21,730
‫実はそういう変身をするんですね｡

64
00:05:21,770 --> 00:05:27,470
‫位置ベクトルではなく､ 方向ベクトルである速度を扱っているため､ 私たちがすべきことは､

65
00:05:27,470 --> 00:05:31,400
‫速度では何もわからないのです｡

66
00:05:31,400 --> 00:05:36,740
‫どのような方向へ､ どのくらいのスピードで進むべきかを教えてくれるのです｡

67
00:05:38,540 --> 00:05:45,320
‫さて､ そんな理屈はさておき､ この速度から方向を計算してみましょう｡

68
00:05:45,320 --> 00:05:52,110
‫つまり､ 速度はグローバル空間であることが分かっているので､ それをローカル空間に変換したいのです｡

69
00:05:52,130 --> 00:05:58,010
‫つまり､ 一般的に言えば､ 私たちは常に逆のことをしようとしているのです｡ それは､ 「銃の位置､

70
00:05:58,010 --> 00:06:02,870
‫つまり局所的な位置がわかったので､ 局所的に変換する」ということです｡

71
00:06:02,870 --> 00:06:10,220
‫私たちは､ 世界空間においてそれが何であるかを把握し､ 他のすべてのものに対して相対的にレンダリングできるようにしたいのです｡

72
00:06:10,430 --> 00:06:12,650
‫今､ 私たちがやろうとしているのは､ そういうことではありません｡

73
00:06:12,650 --> 00:06:13,880
‫私たちはその逆をやろうとしているのです｡

74
00:06:13,880 --> 00:06:17,330
‫そこで､ 実際に必要なのは逆変換と呼ばれるものです｡

75
00:06:17,330 --> 00:06:20,090
‫ローカルからグローバルへ､ このように変換されます｡

76
00:06:20,120 --> 00:06:23,090
‫逆変換は､ グローバルからローカルへ｡

77
00:06:23,600 --> 00:06:27,980
‫つまり､ グローバルな速度が得られているので､ 逆変換をしたいのです｡

78
00:06:27,980 --> 00:06:32,270
‫そこで､ ここで一旦離脱して､ 逆変換を探すことにしましょう｡

79
00:06:32,270 --> 00:06:34,880
‫そして､ この2つのオプションがあることがおわかりいただけると思います｡

80
00:06:34,880 --> 00:06:36,830
‫この行列のやつはどうでもいいんです｡

81
00:06:36,830 --> 00:06:39,980
‫方向と位置の2つの選択肢を用意しました｡

82
00:06:39,980 --> 00:06:45,050
‫そして､ 先ほども言ったように､ ロケーションによってその位置が移動するという違いもあります｡

83
00:06:45,050 --> 00:06:49,610
‫方向は､ 回転とスケールを適用するだけです｡

84
00:06:49,610 --> 00:06:51,200
‫だから､ 演出が欲しいのです｡

85
00:06:51,870 --> 00:06:54,030
‫それを回転させるためのトランスフォームが必要です｡

86
00:06:54,030 --> 00:06:57,900
‫ポーンそのもの､ キャラクターのその変形を

87
00:06:57,900 --> 00:07:00,000
‫それはいったいどこで......｡

88
00:07:00,120 --> 00:07:05,040
‫では､ さっそくオーナーからトランスフォームを探し出してみましょう｡

89
00:07:06,120 --> 00:07:08,070
‫プロパティは､ アクタートランスフォームを取得します｡

90
00:07:08,070 --> 00:07:09,090
‫それはそれでしょう｡

91
00:07:09,270 --> 00:07:16,440
‫これを逆変換の方向にパイプすると､ 新しいベクトルができあがります｡

92
00:07:17,790 --> 00:07:22,110
‫そこで次は､ このベクトルの回転を求めることになる｡

93
00:07:22,110 --> 00:07:25,420
‫だから､ 回転を探そうと思っています｡

94
00:07:25,440 --> 00:07:27,030
‫何が見つかるか見てみましょう｡

95
00:07:27,330 --> 00:07:31,530
‫回転を見つけ､ 軸からコタンジェントまで回転させることができるのです｡

96
00:07:31,560 --> 00:07:35,340
‫では､ Xベクトルからの回転について見てみましょう｡

97
00:07:36,340 --> 00:07:42,670
‫ドキュメントを読むと､ このベクトルからアールとピッチを設定すると書いてありますが､ ベクトルからその情報を得ることができないので､

98
00:07:42,670 --> 00:07:45,790
‫ロールを設定しません｡

99
00:07:45,820 --> 00:07:46,590
‫それでいいんです｡

100
00:07:46,600 --> 00:07:48,700
‫この場合､ 役柄にはこだわらない｡

101
00:07:48,700 --> 00:07:53,200
‫私たちが気にするのは､ 右や左にどれだけ曲がっているかを確認したいので､ ユーザーのことだけです｡

102
00:07:53,200 --> 00:07:59,080
‫つまり､ Xベクトルからの回転は､ ローテータを返すことになります｡

103
00:07:59,500 --> 00:08:05,980
‫ローテータからユーザーだけを取得するには､ ピンを右クリックして､ 構造体ピンの分割をクリックし､

104
00:08:05,980 --> 00:08:10,870
‫構造体をロール ピッチに分割します｡

105
00:08:10,870 --> 00:08:12,750
‫そして､ それをベクター上でもできるようにしたのです｡

106
00:08:12,760 --> 00:08:18,220
‫ちなみに､ 右クリックでレッツゴー､ はリンクを切らないとできないと思います｡

107
00:08:18,220 --> 00:08:19,150
‫だから､ 見せるつもりはないんです｡

108
00:08:19,510 --> 00:08:23,200
‫しかし､ 基本的にはここにユーザーを設定することになります｡

109
00:08:23,200 --> 00:08:28,090
‫そこでまた､ 多くのチャレンジは､ ユーザーがアングルになるように設定してテストします｡

110
00:08:28,920 --> 00:08:36,240
‫そこでまた､ ミニチャレンジでは､ ブレンド空間に入る年間変数を設定し､ 試しにゲームの中で試してみて､

111
00:08:36,240 --> 00:08:40,080
‫うまく走り回れるかどうかを確認するのです｡

112
00:08:41,250 --> 00:08:41,430
‫なるほど｡

113
00:08:41,430 --> 00:08:41,900
‫お帰りなさい｡

114
00:08:41,910 --> 00:08:51,540
‫そこで､ もう一度角度をドラッグして､ 角度を可変にし､ ヨーから角度を設定し､ スピードの終わりから実行ピンを取得することにします｡

115
00:08:51,900 --> 00:08:56,820
‫それをコンパイルして保存し､ サンドボックスに移動して再生をクリックするんだ｡

116
00:08:58,160 --> 00:08:59,780
‫そして､ 今度は体を動かしてみましょう｡

117
00:08:59,780 --> 00:09:05,270
‫コントローラーがあれば､ グラデーションの違いやニュアンスの違いを試せるので理想的ですね｡

118
00:09:05,270 --> 00:09:14,840
‫そして案の定､ 今動き回っても､ 後ろにも前にも､ スプリントにも横にも45度にも動けるようになったのがわかりますね｡

119
00:09:14,840 --> 00:09:20,510
‫すべては､ 角度を計算するために算出した数学に基づいて動いているのです｡

120
00:09:21,640 --> 00:09:22,120
‫素晴らしい内容です｡

121
00:09:22,120 --> 00:09:30,400
‫さて､ ここまでで変換とベクトルについて､ そしてベクトルを変換する方法について､ 逆変換と順変換の両方について学んできました｡

122
00:09:30,490 --> 00:09:36,680
‫そして､ 次回の講義では､ この足裏の滑りを直すことについて見ていきたいと思います｡

123
00:09:36,700 --> 00:09:37,690
‫現地でお会いしましょう｡

