リージョンを 3D で見る
3D ワールドタブは、リージョンを一覧ではなく絵として描きます。描画を押すまでは動きません。
描画と描画の停止
メッシュの追加読み込み時にグラフィックスデバイスのバッファ上限を守るようになり、複雑なシーンでのクラッシュを防ぎます。保存容量を超えるジオメトリは引き続き表示されない場合があります。
位置情報の更新の間は、受信した速度に基づいて最大0.5秒間歩行表示を進めます。移動キーを離した操作は次の移動送信周期で送信します。装着物の更新にメッシュやテクスチャのデータが含まれない場合、以前のデータを保持します。コピーした診断レポートにはアバターごとの読み込み件数が含まれ、外見データの未受信とメッシュの待機や失敗を区別できます。
装着物の詳細情報が遅れて届いた場合も、メッシュボディを表示できるようになりました。キーボードでの旋回は緩やかに始まり、0.25秒で通常の速度に達します。
テレポート後は移動先のリージョンからリソースを読み込み、キャッシュがいっぱいになると新しいリソースのために空きを作ります。アバターのテクスチャは別の取得経路でも復旧でき、壊れたキャッシュ内のアニメーションは再取得します。PBRの表面はスクリプトによる回転の中心を維持し、非金属のマテリアルにも環境の反射が適用されます。animeshオブジェクトは独自のスケルトンでリージョンから送られたアニメーションを再生します。室内の反射とanimeshの高度な制約への対応は未完成です。
ビューの前進と後退のキー割り当てを入れ替えました。表示中のシーンに合わせて形状用メモリを拡張し、古い形状が現在の物体を妨げる前に解放します。テクスチャの向きと回転を修正し、128 ピクセルの画像をフィルター付きの 256 ピクセル画像に変更しました。マテリアル情報がある面でも拡散テクスチャを表示します。
操作中のビューで移動キーを押すと追従と巡回を停止し、手動操作に切り替えます。Automation、Python、AI では take_manual_control を使えます。診断と設定は画面内でスクロールでき、本文上のコピーボタンでレポート全体をコピーできます。
ビューにポインターを合わせるだけでは、キーボード操作は画面側に残ります。クリックで操作を開始し、外側をクリックするか Escape を 2 回押して戻します。フレーム上限を下げてもキーによる回転速度は変わりません。読み込みに失敗した形状や表面は、しばらくしてから再試行されます。Automation の get_world_render_status でキーボード取得状態と共有読み込み件数を確認できます。
3D ワールドタブを開いて描画を押します。表示はタブいっぱいに広がり、ウィンドウの大きさを変えると一緒に変わります。描画を停止を押すと閉じ、何も描かれなくなり、グラフィックスカードは NeuraCore のための作業をやめます。設定はアバターごとに記憶されるので、描画したまま閉じたウィンドウは次も描画した状態で開きます。
見ているビューは、設定したフレーム上限で連続的に描画されます。いくつウィンドウを開いていても、描画されるビューは常に 1 つだけです。リージョンを描くことは NeuraCore の処理で最も重く、2 つのウィンドウが同時に描けば、実際には片方しか見ていない絵のために 1 枚のグラフィックスカードを奪い合うことになります。ほかのビューは一時停止中と表示して場所を保ち、クリックするとそちらに描画が移ります。
これは絵にすぎません。音は一切ありません。ここでアバターが何かを聞くことも、アバターから何かを話すこともなく、ボイス、ジェスチャー音、メディアのいずれも再生されません。
操作を受け取る
ビューの中をクリックすると、矢印キー、Page Up、Page Down、Escape を受け取ります。ビューがこれらを持っている間、キーはそこだけで働きます。以前のように、同じキーがアバターを歩かせながらリストの選択も動かす、ということは起きません。ほかの操作はマウスも含めてこれまでどおり使えます。
ビューの外をクリックすると返します。Escape を 2 回押しても返します。1 回では返さないのは意図的です。Escape は直前の操作を取り消すキーでもあり、うっかり押しただけで黙ってキーを手放すべきではないからです。ビューの上の行が現在の状態を示します。
移動する
矢印キーは Movement タブと同じようにアバターを世界の中で動かします。上下で前進と後退、左右で旋回します。Page Up で離陸して上昇し、Page Down で下降します。マウスのドラッグでアバターの周りを見回し、ホイールでカメラを近づけたり遠ざけたりできます。どちらもアバターは動かさず、他の人からは見えません。
オプション
表示の下にあるオプションボタンには描画設定が入っており、控えめなマシンでも快適に動く初期値になっています。描画距離 128 メートル、描画オブジェクト 2048 個、アバターの詳細度 1、詳細度係数 4、視野角 60 度、毎秒 60 フレームです。シェーディング、地面の基準グリッド、住人のネームタグ、サーフェスもここにあり、既定値に戻すですべて元に戻ります。
表示が滑らかでないときは、描画距離、オブジェクト数、フレーム上限を下げてください。より細かいモデルと丸みのある曲面が欲しいときは詳細度係数を上げます。従量制の回線ではサーフェスをオフにしてください。オブジェクトは色付きの単色で描かれ、何も取得しなくなりますが、形状はそのままです。設定はアバターごとに保存され、次にウィンドウを開いたときにも残っています。
ライト: 空と水
オプションの隣にライトボタンがあり、Firestorm と同じ環境プリセットが入っています。空は既定、共有環境、Nam's Optimal Skin 1、Nam's Optimal Skin 2 から選べます。水は既定、共有環境、Glassy から選べます。選んだものはただちにビュー全体に適用され、周囲のオブジェクト、住人、新しい光沢のあるマテリアル、その奥の空、そして海までがまとめて照らされます。
既定は NeuraCore がこれまで使ってきた光なので、別のものを選ぶまで見た目は変わりません。Nam の 2 つのプリセットは、写真家がスキンを見るときに使うものです。ほぼすべてが四方から届く柔らかな光で、太陽はほとんどありません。そのため顔をどちらに向けても同じ色味を保ちます。Glassy の水はほぼ平らでほとんど鏡のようになり、既定の水はより暗く波立ちます。
共有環境はリージョン自身のものです。リージョンが公開している場合、NeuraCore はそれを描画し、リージョンの時刻の進みに合わせて昼夜サイクルにも追従するので、日没が目の前で進みます。リージョンが公開していない場合、これは珍しくありませんが、代わりに既定のプリセットを描画し、パネルがどちらの状態かを表示するため、動いているのか分からないままになることはありません。
昼夜サイクルと個人ライティングは一覧に並んでいますが灰色です。まだ実装されていません。空と水の選択はアバターごとに保存され、次にウィンドウを開いたときにもそのまま残ります。Automation、Python、AI コントローラーからは set_world_render_preferences で設定できます。
描かれるもの、描かれないもの
この表示には、リージョンが NeuraCore に伝えた内容が出ます。周囲のオブジェクトが実際の位置、大きさ、回転、形で描かれ、位置が分かる住人はすべて、自分のアバターも含めて描かれます。アップロードされたメッシュはメッシュとして、スカルプトプリムはスカルプトとして描かれ、どちらも見かけの大きさに応じた詳細度でバックグラウンドから取得されます。各面は実際のテクスチャ、色、繰り返し、発光をまといます。リージョンは数秒かけて届くので、自分のデータが届くまでオブジェクトは単純な形のままです。ビューの下の行に、あといくつ届いていないかが表示されます。
半透明の面は背景と合成され、切り抜きマスクにはマテリアルのしきい値が適用されます。リージョンの水面は通知された水位に表示されます。アバターには Linden の身体メッシュ、ベイク済みの肌や衣服のテクスチャ、Bake on Mesh を含む装着メッシュを使用します。アバター詳細は仮の人形ではなくメッシュの詳細度を選択します。地形は表示されますが、地面のマテリアルは未完成です。空と光と水はライトボタンから設定するようになり、リージョン自身の環境に追従させることもできます。診断と get_world_render_status は水位、マテリアル、アバター外観の取得状況を報告します。
上矢印で前進し、下矢印で後退します。アバターはリージョンから通知されたアニメーションを再生します。身体とリグ付き装着物は関節に合わせて変形し、剛体の装着物は取り付け先のボーンに追従します。アニメーションは背景で読み込まれ、同じ更新の再受信でも再生時刻を保持し、ループや優先度に応じた合成、停止時のフェードに対応します。カメラが静止していても設定したフレーム上限で再生を続けます。診断と get_world_render_status は再生中のアニメーションと読み込み件数を報告します。体形スライダーと足の接地制約はまだ適用されません。
リージョンが住人に適用できるアニメーションを何も通知していないとき、NeuraCore は組み込みのアニメーションを再生します。腕を広げたまま地面を滑るような姿にはなりません。どれを再生するかは住人の様子から決まります。立つ、歩く、走る、空中で静止する、飛ぶ、上昇する、下降する、向きを変える、座るのいずれかを、着席の状態、地面からの高さ、リージョンが報告する速度から判断します。本来のアニメーションは読み込みが済みしだい引き継ぎます。診断と get_world_render_status は、その方法で描かれた住人の数を報告します。
組み込みのアニメーションは、リージョンが何も通知していないときだけでなく、通知されたアニメーションの下でも常に再生されるようになりました。アニメーションオーバーライダーを着けた住人は、オーバーライダーが自前のアニメーションを切り替えている間も歩き、走り、飛び続け、一瞬だけ腕を広げて止まることがなくなります。本来のアニメーションは動かす関節をこれまでどおりすべて引き継ぎ、組み込みのアニメーションは残りだけを補います。肌、髪、目は透ける幕ではなく切り抜きとして描かれるようになり、頭の内側が顔から透けて見えることも、衣服が体との間でちらつくこともなくなりました。
スクリプトが開始したアニメーション、つまり装着したアニメーションオーバーライダーが行うものが再生されるようになりました。NeuraCore はリージョンが応答しない名前でそれらを要求していたため、すべて拒否され、自分を含むどの住人も組み込みの歩行と直立に戻っていました。オーバーライダーを着けた住人は、ほかの人から見えるとおりに動くようになり、視界内のほかの住人も同様です。それでも取得できなかったアニメーションは初回にログへ記録され、診断が件数を示します。
住人は、すべての体型のもとになる、口の開いた素の人形ではなく、実際に着けている体型で描かれるようになりました。顔、体格、身長、プロポーションのいずれもです。とくにメッシュボディの住人では重要で、その体型はすべて下のスケルトンから決まります。住人がちょうどよい高さに立つために使うホバー設定も、本人と身に着けているものと名前のラベルに適用されます。透明な面は公式ビューアと同じ基準で判定されるため、ガラスは不透明ではなく透けて見え、ごく薄い面も消えずに残ります。既定の体型のままの住人がいる場合は、診断の欄に、視界内の何人が自分の体型を送ってきているかが表示されます。
平らな画像ではなく、光沢や質感を持つ新しいマテリアルで作られた面が、そのとおりに描かれるようになりました。NeuraCore はマテリアル全体を読み取ります。面の金属らしさと粗さ、ノーマルマップが表す細かい凹凸、そしてそれ自体が発する光です。この種のマテリアルが使われている場所ならどこでも適用され、周囲の世界でも住人が身に着けているものでも同じです。古い面は変わりません。
新しいマテリアルで作られた面は、制作者が実際に設定した内容で描かれるようになりました。透明度も含みます。これらの設定は、共有されて変更できないマテリアル自体には含まれず、面ごとに別途送られます。NeuraCore はそれを読むようになりました。半透明にしたガラスは、不透明ではなく半透明に見えます。
スクリプトが動かしているオブジェクトが実際に動くようになりました。流れる看板、コマを再生する画面、その場で回転する表示などです。歩行も滑らかになりました。リージョンが知らせる位置へ毎秒何度も飛ぶのではなく、その位置を追いかけて描くようになったためです。住人の身体も同様で、プロセッサではなくグラフィックス カードが姿勢を作るようになったため、混雑したリージョンの負荷が以前よりずっと軽くなり、その場の全員が滑らかに動きます。--headless で起動するとウィンドウがないため表示もありません。タブは存在せず、これを操作する Automation 機能はその旨を伝えて拒否します。
表示が空のとき、動きが遅いとき
「オプション」ボタンの下に「診断」があります。開くと、コピーできる一つのまとまりとして、使用中の描画エンジンとグラフィックアダプター、インターフェースが実際に出している毎秒のフレーム数、リージョンのうち描かれた分と省かれた分、シーンの構築にかかった時間、リージョンが公開しているアセットサービス、形状とサーフェスの受信済み・待機中・拒否された数、直近の拒否理由をサービスの言葉のまま、そしてキーボードを保持しているのが誰か、を示します。
これで通常の原因は見分けられます。アセットサービスを公開していないリージョンは何も取得できません。サーフェスがすべて拒否されているのは、接続が遅いのではなくサービスが要求を断っています。待機中が無いまま単純な形状で描かれる物体は、リージョンがまだ形状を送っていません。シーンの構築が速いのにフレーム数が低い場合は、描画ではなくインターフェース側の問題です。