‫こんにちは､ ようこそ｡
‫この講義では､ デバッグラインをシーンに描き､ ライントレースが何をしているのか､
‫何をすべきなのかを視覚化し､ 計算している値が正しいかどうかを把握します｡
‫それでは､ さっそく潜入してみましょう｡
‫このように､ スイープマルチチャンネル機能には､ 開始と終了のベクトルが必要です｡
‫さて､ これらの機能を実際に使ってみると､ 何がどうなっているのか､ ちょっとわかりにくいかもしれません｡
‫というのも､ 使い始めてから思ったような結果が返ってこないと､ 「そもそも､
‫この質問は正しかったのだろうか？
‫スタートとエンドのベクターも正しく送ったか？
‫そのためには､ デバッグ線の描画という別の関数を使って､
‫開始と終了のベクトルがどこにあるのか､ 基本的にそれらの間に線を引くことで確実に確認することができます｡
‫つまり､ draw デバッグラインはかなりの数の引数を必要とするが､ 実際にはそのすべてが必要なわけではないことがここでわかる｡
‫最初の3つ､ 4つ､ 5つだけです｡
‫そこで､ まず最初に新しい世界を手に入れることができました｡
‫私たちは､ 世界を手に入れる方法を知っています｡
‫次に､ ベクトルにあるラインスタートがあります｡
‫線端はベクトル､ Fカラーは今までなかったものですが､ クリックするとそれが何であるかわかります｡
‫基本的には色を表すFベクトルのようなもので､ 黒や青､
‫緑など､ 便利な色がすでに組み込まれています｡
‫R､ g､ bの値を指定する必要がなく､ 色名だけでOKです｡
‫そして､ 最後の数本は､ 線が持続しているかどうかで､ その線がずっと続いているか､ フレームの最後で消えてしまうかどうかで､
‫寿命がわかるようになっています｡
‫では､ 深度優先と厚み優先､ どちらも使わないのに何秒くらい粘るのでしょうか？
‫そこで､ このドキュメントページのもう一つの有用な情報は､ includeです｡
‫つまり､ この関数を使うには､ この関数を宣言しているヘッダーファイル､ つまりハッシュインクルードローデバッグヘルパーを使う必要があることがここでわかると思います｡
‫Visual Studioでオートコンプリートが動作するようにするために､ まずこれを取得しましょう｡
‫ヘッダーファイルがない場合､ Visual Studioはこれらの関数を自動完成させる方法を実際には知りません｡
‫次に､ ティックコンポーネントに降りて､ ログメッセージを削除します｡
‫今回のことは､ 実はすべて解消します｡
‫そして､ ご存知ですか？
‫tick関数を空にして､ スーパーコロン､ コロンtickコンポーネントの後のすべてを削除し､
‫デバッグ行の描画から開始します｡
‫そこで､ デバッグラインを引き､ いくつかの括弧を開く｡
‫コントロールスペースを押すと､ 先ほど説明したパラメータや､ デフォルト値など､ そこでは得られなかった情報が表示されます｡
‫特に永続的な行の後にデフォルト値を持つものがあります｡
‫デフォルト値がfalseであることがわかります｡
‫ですから､ 実際にはデフォルト値があれば引数を用意する必要はないのですが､ この色にはデフォルト値がないことがわかります｡
‫だから､ そこまでのすべてを提供する必要があるのです｡
‫ということで､ まずはワールドリトルミニチャレンジです｡
‫ドローデバッグラインに世界を掴んで渡すにはどうしたらいいのでしょうか｡
‫そうすると､ スタートとエンドが必要になります｡
‫そのために､ デバッグ行を描く直前に2つの変数を作成するつもりですが､ まだ記入するつもりはありません｡
‫ベクトル開始とベクトル終了が次のパラメータ開始と終了になり､
‫色を指定する必要があります｡
‫簡単に見ることができます｡
‫それから､ 今回はtickでやっているので､ 毎フレーム､ この行を画面に書き込んでいるので､
‫persistent lines equals falseを使えばいいんです｡
‫そこで､ チケットごとにこのデバッグラインを再描画し､ 括弧を閉じて､ 行末にセミコロンをつければいいわけです｡
‫では､ この開始値と終了値はどのようなものになるのでしょうか｡
‫まず､ グラバーコンポーネントをカメラに取り付けるので､ 文字通りグラバーコンポーネントの位置を指定します｡
‫このコンポーネント､ カメラ､ グラバーには前方ベクトルがあり､ その前方方向はカメラからシーンに向かって､
‫常に前方に向いていることを思い出してください｡
‫つまり､ 開始ベクトルに前方ベクトルを掛け合わせたものを加えればいいわけです｡
‫基本的に､ この数値がオブジェクトを探す最大距離となります｡
‫だから､ 1メートルとか2メートルとか3メートルとかを量として､ 最終的にエンドベクターにすることになるかもしれない｡
‫つまり､ 開始ベクトルとグラボの前進ベクトルを足したものが終了ベクトルになるわけです｡
‫そのため､ シーンを覗き込む最大深度は､ 設定した方がいいかもしれません｡
‫そこで､ グラボにyouプロパティとして配置することにします｡
‫グラブドアHに移動して､ プライベートセクションを作り､ どこでも編集できるようにUプロパティを作り､
‫任意の数値の距離になるように､ タイプBをfloatにします｡
‫そして､ これを最大つかみ距離と呼ぶことにして､ デフォルトで4メートルの距離に設定することにします｡
‫デフォルトの単位がセンチメートルなので､ 400にしないといけないのかもしれませんね｡
‫そこで､ そのスタートとエンドを計算することに挑戦してみたいのです｡
‫最初のインスタンスでコンポーネントの位置を取得し､ 前方ベクトルを取得して終了を計算し､
‫そこに先ほど設定した最大グラブ距離をかけます｡
‫その後､ コンパイル､ 再生､ アクターからイジェクトしてください｡ このラインは､ カメラの下をまっすぐ進むことになりますから｡
‫最初は見えないかもしれません｡
‫だからイジェクトする｡
‫自分の体から一歩踏み出して､ ポーズ､ ビデオ､ ゴーというラインが見えるかどうか｡
‫なるほど｡
‫お帰りなさい｡
‫では､ grab a EPに入り､ startに入れるものを書き始めましょう｡
‫先ほどから言っているように､ 単純にコンポーネントの位置を取得して､ スタートがあるだけです｡
‫この行の最後にはセミコロンをつけて､ スタートと前進ベクトルに最大つかみ距離をかけたものがエンドになります｡
‫コンパイルが成功したら､ 再生ボタンを押して､ ビューポートに質量を表示させ､
‫F8キーを押して外に出してみましょう｡
‫そして､ 自分たちから一歩外に出れば､ カメラがあった場所から床まで､ はっきりと線が出ているのがわかるのです｡
‫そしておそらく私が出てくれば､ 床の下からも少し突き出ているのが確認できるかもしれません｡
‫それが4メートルです｡
‫だから､ スタートとエンドがあるんです｡
‫また､ この行を使用する場合､ 後で使用するジオメトリ掃引の入力パラメータとして最適なものになるでしょう｡
‫素晴らしい内容です｡
‫デバッグ用の線をシーンに描き込む方法を学びました｡
‫これは､ 何かがうまくいかない理由を理解できないときにたくさん使う､ とても便利なスキルです｡
‫楽しんでいただけたでしょうか｡
‫それでは､ 次回の講義でお会いしましょう｡