株式会社クレア|技術コラム

WPFで3D

■ その1 はじめての3D       【1】 

WPFでは、比較的容易に3Dグラフィックを扱うことが出来ます。
弊社製品のCrea Orreryで使用している3D技術の一端を複数回に分けて紹介します。
WPFで3Dを扱うための入門としてお役に立てればうれしい限りです。

今回はMSDNにあるサンプルを拝借して、3Dの基礎に触れたいと思います。

方法 : 3-D シーンを作成する

上記ページにあるサンプルコードを実行するとこんな画面が表示されます。


ソース

 


以降の説明は上記ページのサンプルコードと合わせてご覧ください。

・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に変更しておきます。

1   >> 次へ

最新号はこちらから