functionDownloadenglishchinesejapaneserussianfrançaisビルボードビルボードは3D世界にある2D要素です。他のすべての上に表示される2Dメニューではありません。ターンできるような3D面でもありません。ゲームでのHPゲージのような、それらの中間のようなものです。ビルボードと他のものとの違いは特定の位置に配置されるが、常にカメラの方向を自動で向くように計算されています。解決策1:2Dでの方法この方法はとっても簡単です。画面上でのあなたの位置を計算し、この位置に2Dテキストを表示します。(チュートリアル11を見てください。ここでやってることはすべてチュートリアル3で説明済みです。新しいことはありません。カメラの後ろにあるものは表示しません。}この方法の良い点はとても簡単で、ビルボードとカメラの距離によらず常に一定の大きさになってくれる点です。2Dテキストは他のすべてのものの上に表示されるので、他のオブジェクトの上に表示されてしまいます。解決策2:3Dでの方法この方法のほうがよりよく、またそこまで複雑でもありません。目的はメッシュが動いてもカメラの方向に向けることです。これは適切なモデル行列を生成する問題と捉えることができます。基本的な考え方は、ビルボードの各コーナーの中心を、カメラの上と横ベクトルにによって移動させることです。ワールド空間でのビルボードの中心座標は知っているものとして、ワールド空間でのカメラの上/右ベクトルが必要となります。カメラ空間ではカメラの上は(0,1,0)です。これをワールド空間で表現するには単にカメラ空間からワールド空間へ移すような行列を掛ければ良いだけです。これはもちろんビュー行列の逆行列です。これは次のように簡単に表現できます。ViewMatrix[2][1]}```一度これを得れば、最終的な頂点位置を計算するのはとても簡単です。BillboardSize.y;particleCenter_worldspaceは名前が示すとおり、ビルボードの中心位置です。これはvec3で表されます。.squareVerticesはオリジナルのメッシュです。左の頂点のため、squareVertices.xは-0.5です。これはカメラの左方向へ移動されます。)BillboardSizeはワールド単位でのビルボードのサイズです。以下に結果を示します。squareVerticesは次のように作ります。VBOは粒子の4つのベクトルを保持しています。上で見たように、ビルボードのサイズはカメラとの距離に応じて変わります。いう感じにしたい場合もあるでしょうが、ライフゲージのように固定サイズにしたい場合もあるでしょう。画面空間で中心とコーナーの配置を固定したいので次のようにします。画面空間での中心位置とそのオフセットを計算します。粒子の中心の座標を空間座標で得る。パースペクティブ除算を自分自身で行います。頂点を直接画面空間へ移動します。CameraUp/Right_worlspaceはここではいりません。0.05);描画パイプラインのこのステージは正規化デバイス座標にあることを覚えて置いてください。各軸は-1と1の間にあり、ピクセルではありません。BillboardSizeInPixels)を使うだけです。解決策4:頂点回転だけ遠くの木やランプをビルボードとしてモデル化してるシステムもあります。本当に木を曲げさせたくない場合には、頂点とすべきです。一つの軸の周りで回転させるようなハイブリッドシステムが必要となります。これは演習として読者に任せます。