‫こんにちは､ ようこそ｡
‫この講義では､ コードから世界を照会できるようにするための､ ライントレースと球体スイープについて学びます｡
‫また､ 衝突チャンネルを設定して､ オブジェクトがグラバーに反応するようにしたり､ 反応しないようにしたりします｡
‫さっそく､ この仕組みを見てみましょう｡
‫ですから､ 私たちのコードを見る限り､ かなり盲点になっています｡
‫私が今何を見ているのか､ ガーゴイルを拾おうとしているのか､ それともまったく別のものを拾おうとしているのか､
‫それはわからないのです｡
‫コードに関しては､ 真っ暗な部屋に立っているので､ 何も見えません｡
‫では､ コードから何があるかを把握するという問題をどのように解決すればよいのでしょうか｡
‫まあ､ 本来は､ ハイビームの懐中電灯のスイッチを入れて､ ある方向を見れば､ そこに何があるのかがわかるのですが｡
‫暗いシーンに光を当てるのが基本です｡
‫だから､ 私たちの暗いシーンに隠されていることを想像してみてください｡
‫ここにこのような形があります｡
‫例えば､ 始点と終点を決めて､ 始点から終点まで線を引き､ その線が何と重なるかを見るのです｡
‫これをライントレースと呼びます｡
‫つまり､ ライントレースを行うと､ 基本的に結果が返ってきますが､ これはラインが最後まで進む過程で交差したすべてのオブジェクトを指します｡
‫あるいは､ 最初にヒットしたオブジェクトを取得することもできますし､ 最適化により､ オブジェクトにヒットしても実際にはトレース全体を実行することはありません｡
‫FPSで銃を撃ったり､ 今やっているように物を拾ったりするのもこの方法です｡
‫しかし､ ライントレースには別の方法があります｡ ライントレースでは､ 極めて高い精度が要求されることになるからです｡
‫この球体のように数ミリ単位で見逃してしまうと､ 拾ってもらえないのです｡
‫そのため､ 代替案としてシェイプトレース､ より具体的には球体トレースと呼ばれることがあります｡
‫それが私たちが使っている形状であれば､ あるいはもっと一般的には､ コード上では実際にジオメトリトレースとして知られているものです｡
‫ここで行うのは､ 始点から始まる球体を､ その名の通り､ トレースしたり､ 掃引したりして､
‫実際には､ 球体を終点まで世界を通して掃引することです｡
‫そして､ もし途中で何かと交差していたら､ それがトレースのヒットポイントになるのです｡
‫例えば､ 探索空間の半径を広げたので､ ここに三角形と球体が重なります｡
‫もう一つ､ トレースに追加することで､ シーン内の特定の形状を無視させることができます｡
‫なぜなら､ たとえば､ この壁にはつかまれないとわかっていて､ もしかしたら､
‫うまくバーにぶつかりながらでも､ バーを通して何かをつかめるようにしたいからです｡
‫そのためには､ Trace Channel と呼ばれるものを使用します｡ これは､ 基本的に Trace
‫に応答できるオブジェクトのリストと､ 完全に無視したいオブジェクトのリストを作成するものです｡
‫それでは､ シーン内のオブジェクトをピックアップするために､ 独自のトレースチャンネルを設定する方法を説明します｡
‫さて､ これを実行する場所は､ 設定の中にあります｡
‫プロジェクトの設定｡
‫次に､ エンジンとコリジョンに進みます｡ これは､ オブジェクトのコリジョンに関するものだからです｡
‫ここでは､ オブジェクト､ チャンネル､ トレースチャンネルがあることがわかります｡
‫特にTrace Channelは､ ある種のクエリに対してどのように応答すべきかを把握するために見ています｡
‫シーンに戻ってオブジェクトをクリックし､ コリジョンというエリアまでスクロールすると､ このオブジェクトが他のオブジェクトと衝突したときにどのように反応するかについて､
‫さまざまな設定があります｡
‫デフォルトのコリジョンプリセットがある時点で､ ここを見てみると､ さまざまなコリジョンプリセットがありますね｡
‫しかし､ コリジョン設定に実際に何が関わっているのかを確認するために､ カスタムのほうにいってみましょう｡
‫オブジェクト・タイプがあり､ それに対応するクエリのタイプがあります｡
‫この場合､ ライントレースやスフィアトレース､ スイープなどがそれにあたります｡
‫そして､ 物理学です｡
‫それが物理のシミュレーションで､ 他の物体に跳ね返されるかどうかということですね｡
‫さらにその下にはコリジョンレスポンスがあり､ これはトレースレスポンスとオブジェクトレスポンスに分かれているのがおわかりいただけると思います｡
‫つまり､ すでに組み込まれているトレースチャンネルを紹介するということです｡
‫視認性トレースチャンネルがある
‫基本的に目に見えるものはすべてこれにあたります｡
‫そして､ カメラトレースチャンネルがあり､ 基本的にこのオブジェクトをカメラが貫通するかどうかということです｡
‫でも､ それはあまり重要ではありません｡
‫このようなチャンネルがあるからこそ､ さまざまな対応ができるのです｡
‫ここで､ ブロックのオプションができることがお分かりいただけると思います｡
‫中間的な選択肢と完全に無視する選択肢が重なっているのです｡
‫これが私たちの関心事なんですね｡
‫ここに新しいトレース・レスポンス・チャンネルを追加したいと考えています｡
‫それでは､ プロジェクトの設定から､ トレースチャンネルに移動してみましょう｡
‫そして､ Add New Trace Channelをクリックします｡
‫そして､ この中に入ってグラバーと呼び､ デフォルトでオブジェクトがこのチャンネルにどのように反応するかを選択することになります｡
‫デフォルトでこのチャンネルを無視するようにしたいので､ オブジェクトがこのトレースチャンネルに応答することを明確に言わなければなりません｡
‫Accept をクリックしてダンジョンに戻ると､ 新しいトレース応答がまだ表示されていないことがわかります｡
‫そこで､ エディタを閉じてシーンを保存し､ 新しいプロジェクトファイルから再立ち上げします｡
‫起動したら､ ガーゴイルをもう一度選択して､ コリジョン設定に移動しましょう｡
‫そして案の定､ 新しいトレース応答チャンネルグラバーができました｡ ガーゴイルの場合､
‫基本的にブロックさせたい､ つまり､ 視線をブロックさせたいので､ 球体スイープかライントレースのどちらかに表示されます｡
‫素晴らしい内容です｡
‫ライントレースとスイープについて､ ご理解いただけたでしょうか？
‫それでは､ 次回の講義でお会いしましょう｡