다음을 통해 공유


ビルボードの実装

ビルボードとは、いつもカメラの方向を向くスプライト(画像を張った矩形ポリゴン)です。遠くにある樹木のような、3Dで表現するには重い、左右のどの角度から見ても同じように見えるものによく使われます。

WPFでビルボードを実装するのは簡単です。カメラの座標変換行列と同じ行列で矩形ポリゴンを回転させるだけです。カメラの回転などの変化でイベントトリガーをかけるには次のようにChangedイベントトリガーを追加します。

<PerspectiveCamera Position="0.0, 0.0, 5.0" FieldOfView="60.0"
x:Name="myCamera" Changed="CameraChanged" />

 このCameraChanged コールバックで次のように記述します。myModel1はビルボード自身のModelVisual3Dです。この例では、2つの画像を比較表示させるため、回転の後X軸に沿って-1.0オフセットさせています。

private void CameraChanged(object sender, EventArgs e)

{

    if (myModel1 != null)

    {

        MatrixTransform3D billboading = new MatrixTransform3D();

       billboading.Matrix = myCamera.Transform.Value;

        Transform3DGroup myTransformGroup = new Transform3DGroup();

        myTransformGroup.Children.Add(billboading);

        myTransformGroup.Children.Add(new TranslateTransform3D(-1.0, 0.0, 0.0));

        myModel1.Transform = myTransformGroup;

    }

}

ここでやっていることは、カメラの座標変換の値をビルボードの座標変換に代入しているだけです。

右の画像はビルボードではない画像ですので、カメラを回転させると、違う角度で見えますが、左の画像をビルボードなので、必ずカメラを向き、いつも同じように見えます(比較がないと、単なる回転の失敗のように見えます)。