WPFで3D
■ その1 はじめての3D 【1】 2
WPFでは、比較的容易に3Dグラフィックを扱うことが出来ます。
弊社製品のCrea Orreryで使用している3D技術の一端を複数回に分けて紹介します。
WPFで3Dを扱うための入門としてお役に立てればうれしい限りです。
今回はMSDNにあるサンプルを拝借して、3Dの基礎に触れたいと思います。
上記ページにあるサンプルコードを実行するとこんな画面が表示されます。
以降の説明は上記ページのサンプルコードと合わせてご覧ください。
・Viewport3D
WPFで3Dを表現するにはViewport3D要素を使用します。Viewport3Dは3Dで表現する領域のレイアウトコンテンツです。そしてViewport3D要素の中にカメラ、光源、3Dモデルを置いて3Dグラフィックを表現します。
このようなイメージです。
より3Dらしさを感じるために、サンプルを修正していきます。
修正後はこのようになります。
プロジェクトファイルはこちら
プロジェクトは以下の環境で作成しています。
Visual Studio 2010 C# / .NET Framework 4.0
・カメラの種類
Viewport3DクラスのCameraプロパティに設定できるカメラには、以下の種類があります。
PerspectiveCamera :遠近短縮投影。遠いものは小さく、近いものは大きく表示
OrthographicCamera :正投影。遠いものも近いものも大きさは同じく表示
MatrixCamera :Matrix3Dオブジェクトで任意の投影方法を定義して表示
サンプルではPerspectiveCameraを用いています。単体のモデルだけ表示する場合には遠近法は関係ありませんが、このままPerspectiveCameraを使用します。
・光源の種類
AmbientLight :全方向から光を照射する光源。影が出来ない。
DirectionalLight :指定された方向に光を照射する光源。
PointLight :指定された位置を持ち、すべての方向に光を投影する光源。
SpotLight :指定した方向に沿った円錐形の領域に効果を投影する光源。
光源の効果で様々な表現が期待できます。サンプルではDirectionalLightを用いています。DirectionalLightは方向を持つ光源なので、モデルの背後にカメラを移動すると、モデルが黒く表示されます。今回はAmbientLightに変更しておきます。