XAML Do-It-Yourself シリーズ 第 12 回 3D グラフィックス -1-

Similar documents
XAML Do-It-Yourself シリーズ 第 8 回ゕニメーション -1-

Microsoft PowerPoint - Windows Presentation Foundation (WPF) 3.5 の新機能

XAML Do-It-Yourself シリーズ 第 11 回 2D グラフゖックス -1-

WPFの初歩の初歩

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

Chart3D for WPF/Silverlight

グラフィックス 目次

コンピューターグラフィックスS

PowerPoint プレゼンテーション

Microsoft Word - povray.docx

XAML Do-It-Yourself シリーズ 第 1 回 XAML 概要 -1-

Sparkline for WPF

1222-A Transform Function Order (trsn

コンピュータグラフィックス第8回

<!DOCTYPE html> <html> <head> <title>clipanime1</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="clipanime1.css"> </head> <

MISAO with WPF

グラフィックス 目次

Microsoft PowerPoint - [150421] CMP実習Ⅰ(2015) 橋本 CG編 第1回 幾何変換.pptx

スライド 1

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生

XAML Do-It-Yourself シリーズ 第 7 回テンプレート -1-

情報工学実験Ⅲ

XAMLDo-It-Yourself 第 2 回. レゕウト 今回は XAML でウゖンドウにパネルやボタン メニューなどの基本的なコントロールを配置する方法を 学びます ここでは 次のことを学習します XAML におけるレゕウトの基本 主要なパネルとその記述方法 XAML (WPF) で利用可能な

pp2018-pp9base

コンピュータグラフィックスS 演習資料

piyo0702a.rtfd

3D の作図ツールについて 3D 画面を表示すると 以下の新しい作図ツールが表示されます より多くのオプションを見るためには ボタンの右下の小さな矢印 をクリックして下さい 28

1221 Transitionの指定項目

TileView for WPF/Silverlight

スライド 1

1つ目は MASK という文字の下に楕円形のマスクイメージで その文字と楕円形の中に複数画像のスライドを表示するので id 属性 slide の div 要素の中に画像を5つ (images/dsc00203l.jpg images/dsc00027l.jpg images/dsc00092l.jp

ライティングの基本要素ライト ( 光源 ) の位置や種類 強さを決め モデルやシーンの見せ方を決めることをライティングとよぶ また モデルの表面での光の反射の度合いを調節することで ライティングの効果を変化させることができる 今回は ライティングの基本的な要素を解説し SketchUp のライティン

グラフィックス 目次

MorphAndTextAnime の説明 HTML の記述 (MorphAndTextAnime.html) id 属性 stage の div 要素を作り その中に div 要素でボックスを記述します id 属性 div1 の div 要素を記述し 中につぎの記述をします id 属性 div2

ように記述をします div1 要素 span 要素 2 個 div3 要素 span 要素 4 個 div5 要素 span 要素 1 個 div7 要素 span 要素 2 個 div2 要素 span 要素 1 個 div4 要素 span 要素 2 個 div6 要素 span 要素 2 個

目次 1. プロフィール画像工房の概要 3 2. プロフィール画像の作成 8 3. プロフィール画像の登録 まとめ 27 レッスン内容 プロフィール画像工房 インターネット上に提供されているさまざまなサービス ( これ以降 サービス と記述します ) を利用するときには 利用するユーザー

CG

Microsoft PowerPoint - matlab10.ppt [互換モード]

</div> </div> </body> </html> CSS の記述 (3DCubeAnime1.css) #stage ステージのスタイルを指定します 背景色を黒色で指定します 画像に軽く遠近感を出すために perspective: 1000px; と指定し perspective-orig

コンピュータグラフィックス基礎              No

Carousel for WPF/Silverlight


一方, 物体色 ( 色や光を反射して色刺激を起こすもの, つまり印刷物 ) の表現には, 減法混色 (CMY) が用いられる CMY の C はシアン (Cyn),M はマゼンタ (Mgent),Y はイエロー (Yellow) であり, これらは色の 3 原色と呼ばれるものである なお, 同じシア

画像全体を左右反転させると 下の画像 ( 黄緑色の外枠に白い桜 ) は backface-visibility: visible; と指定してあるので裏側が表示されます 上の画像 ( 水色の外枠に紅葉 ) は backface-visibility: hidden; と指定してあるので裏側が表示され

目次 1. アニメーションの仕組み 3 2. ワードアートでムービーのタイトルを作成 7 3. まとめ 課題にチャレンジ 19 [ アニメーション ] 機能 PowerPoint に搭載されている [ アニメーション ] 機能を使用すると 文字や図形にアニメーション ( さまざまな動きや

Microsoft Word - 92.doc

コンピュータグラフィックス第6回

コンピューターグラフィックスS

クリッピング領域

(Microsoft PowerPoint -

モデル空間に読み込む場合 AutoCAD では 部分図および座標系の設定を 複合図形 ( ブロック ) にて行います 作図にあたっての流れは下記のとおりとなります (1) 発注図の読み込み (2) 発注図の確認 (3) 発注図の部分図の利用方法や座標設定が要領に従っていない場合の前準備 (4) 作図

VB.NET解説

Field Logic, Inc. 標準モード 3D モデル作成 配置編 Field Logic, Inc. 第 1 版

<!DOCTYPE html> <html> <head> <title>spaceorbitanime</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="spaceorbitanime.css">

HCI プログラミング 5 回目ウィンドウに画像を表示してみよう 今日の講義で学ぶ内容 画像の表示 画像のエフェクト 画像のビューポート指定 画像の表示 1 画像を表示してみましょう 画像の表示はクラス ImageView により管理されます ソースファイル名 :Sample5_1.java //

Wordの学習

ARToolKit プログラムの仕組み 1: ヘッダファイルのインクルード 2: Main 関数 3: Main Loop 関数 4: マウス入力処理関数 5: キーボード入力処理関数 6: 終了処理関数 3: Main Loop 関数 1カメラ画像の取得 2カメラ画像の描画 3マーカの検出と認識

Sample 本テキストの作成環境は 次のとおりです Windows 7 Home Premium Microsoft Excel 2010( テキスト内では Excel と記述します ) 画面の設定( 解像度 ) ピクセル 本テキストは 次の環境でも利用可能です Windows

演算増幅器

tc15_tutorial02

( 注 )Safari (webkit 系ブラウザ ) と Chrome(webkit にも対応 ) は テキストの輪郭や色を -webkit-text-stroke-width -webkit-text-stroke-color -webkit-text-fill-color のプロパティで描くこ

子ボックスや孫ボックスなどに position: absolute; と指定すると それぞれ親ボックスに対する絶対位置で配置できるので親ボックスの上に複数の子ボックスや孫ボックスを重ねて配置することができます トランジションやアニメーションを作成するときに非常に便利なので覚えておきましょう top

WPF/Silverlightのスタイルやアニメーション

NCVIEW / NCVIEW Neo 2017 リリースノート A) 新機能概要 B) 主な改善 修正内容 (NCVIEW / NCVIEW Neo 2016 以降の改善 修正内容が記載されています ) C) 対応済みサポート受付番号一覧 D) 動作環境 以下文中の () に記載された番号はサポー

情報工学実験 Ⅱ グラフィックプログラミング基礎 担当教員名 : 赤嶺有平 提出日 :2010 年 12 月 9 日 学籍番号 : B 氏名 : 大城佳明 - 1 -

クリックしてタイトル入力

Microsoft PowerPoint ppt

CG

中学 1 年数学 ( 東京書籍 ) 単元別コンテンツ一覧 単元ドリル教材解説教材 確認問題ライブラリ (OP) プリント教材 教材数 :8 問題数 : 基本 40, 標準 40, 挑戦 40 正の数 負の数などの問題を収録 解説教材 :3 確認問題 :3 数直線 数の大小と絶対値などの解説 確認問題

Microsoft PowerPoint povray演習-2.pptx

vecrot

スライド 1

ARCHITREND ZERO 汎用コマンド一覧

PowerPoint プレゼンテーション

2015年度 岡山大・理系数学

問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2

Microsoft PowerPoint - 9.pptx

Microsoft PowerPoint - 9.pptx

Visual Studio 2010 Ready Day ブレークアウトセッション概要

ウィンドウの構成ウィンドウはタイトルバーとウィンドウ枠からなります タイトルバーには最小化 / 最大化ボタンや閉じるボタンがあります また ウィンドウはクライアント領域をもちます クライアント領域にはボタンなど GUI 部品が配置されます GUI 部品配置 ( レイアウト ) ウィンドウ ( ステー

情報工学実験Ⅲ

leaf2-h leaf2-v leaf2 images/leaf2.png leaf3-h leaf3-v leaf3 images/leaf3.png leaf4-h leaf4-v leaf4 images/leaf4.png leaf5-h leaf5-v leaf5 images/leaf

サンプル CSS OutlineAnimation.html の説明 HTML の記述 (OutlineAnimation.html) id 属性 stage の div 要素を作り その中に div 要素でボックスを記述します id 属性 div1 の div 要素を記述し 中にテキストで Out

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

Color Change

C#の基本

Border Width と記述します id 属性 div3 の div 要素を記述し 中にテキストで Border Radius と記述します id 属性 div4 の div 要素を記述し 中に span 要素を1つ記述しその中にテキストで Border All<br />(Color,Widt

SharpShooter Reports.WPF 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - 進化(博物館)2

ガイダンス

目次 1. プロフィール画像工房の概要 3 2. プロフィール画像の作成 9 3. プロフィール画像の登録 まとめ 29 レッスン内容 プロフィール画像工房 インターネット上に提供されているさまざまなサービス ( これ以降 サービス と記述します ) を利用するときには 利用するユーザー

立体切断⑹-2回切り

CG

3D 描画 Step1-1 まず O 原子となる球を 1 つ描画する <WaterPanel.java の作成 > 1.Chemical プロジェクトをインポート 共有フォルダから Chemical.zip をコピーして workspace 内にはりつけ パッケージ エクスプローラで右クリック イン

動させることはできません 少し工夫が必要になります 元の画像を移動すれば反射画像 も一緒についてきますが 反射画像だけが移動するように見せたいので 元の画像の上に は黒色のボックスを覆い被せます ReflectAnime1 の説明 HTML の記述 (ReflectAnime1.html) id 属

サンプル CSS web ページを開くと同時にピエロの玉乗りが動き出すアニメーションを作ってみましょう AnimeAuto の説明 HTML の記述 (AnimeAuto.html) ピエロの画像に pierrot という id を 玉の画像に ball という id を付けておきます <!DOCT

Microsoft Word - gnuplot

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

モデリングとは

Transcription:

XAML Do-It-Yourself シリーズ 第 12 回 3D グラフィックス -1-

XAML Do-It-Yourself 第 12 回 3D グラフィックス XAML Do-It-Yourself 第 12 回は 3D グラフィックスについて学習します これまでアプリケーション で 3D グラフィックスを扱うには DirectX のコンポーネントを使用する必要がありましたが WPF (XAML) では 3D グラフィックスを標準でサポートしています 今回は 次の 2 つを中心に学習します 3D グラフィックスの基礎 3D グラフィックスのアニメーション 3D グラフィックスを利用して作成したアプリケーションの実行例を示します このアプリケーションで は 赤い立方体が画面内を回転します 3D グラフィックスの基本 XAML および WPF アプリケーションでは 3D グラフィックスを扱うことが可能ですが それにはいくつかの 3D グラフィックス特有の知識が必要になります しかし以降ではそれらにあまり深入りせず XAML で 3D グラフィックスを作成するために最低限必要な要素を解説していきます WPF の 3D グラフィックスは右手座標系 XAML で記述する 3D グラフィックスの座標系は右手座標系 ( 親指が X 軸 人差し指が Y 軸 中指が Z 軸 ) と呼ばれるもので X-Y 座標平面を基準にすると Z 軸は X-Y 平面から手前方向に向かって正の値をとります ビューポート (Viewport3D クラス ) 3D グラフィックスでは 3D 空間に物体を配置し それを 2 次元の平面であるスクリーンに投影した内 -2-

容を描画します このスクリーンに相当するのが Viewport3D です Viewport3D には カメラ (Camera) や光源 (Light) 空間に配置する 3D モデル (MeshGeometry など ) が含まれます Viewport3D は これまで紹介した ListBox や TextBox といったコントロールと同様に記述できるので 簡単に 3D グラフィックスを WPF アプリケーションに組み込むことができます 次の XAML コードでは Grid 上に 3D グラフィックスを表示する場合の記述例です パネル上に配置し た <Viewport3D> 要素が 3D グラフィックスの描画領域となります <Window x:class="wpfapplication12.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="450"> <Grid> <Viewport3D> <!-- 3D グラフィックスの内容 --> </Viewport3D> </Grid> </Window> カメラ (Camera) Camera は 3D 空間に配置した物体をスクリーンに映し出す働きをします Camera 自身も 3D 空間内 に位置し カメラの位置や視野角などが設定できます 次の例では (x,y,z) = (0,0,10) の位置から 水平視野 (FieldOfView) が 30 度のカメラを設定してい ます <Viewport3D.Camera> <PerspectiveCamera Position="0, 0, 10" FieldOfView="30" /> </Viewport3D.Camera> 光源 (Light) 3D 空間に物体を配置しても 光源 (Light) がなければ何もスクリーンに投影されません 3D 空間には 光源が必須です カメラと同様に 光源も 3D 空間内に配置します 次の例では DirectionalLight という種類の光源を用い 光源の色 (Color) を "White" に 光源が照ら す方向 (Direction 属性 ) を (0,0,-1) の方向に設定しています ただし DirectionalLight は太陽光のよう な平行な光を表しますので 光源の位置を指定する必要はありません <DirectionalLight Color="White" Direction="0,0,-1" /> 光源は DirectionalLight のほかにも 空間全体に照らす AmbientLight 特定の領域を照らす いわゆ -3-

るスポットライトの効果を持つ SpotLight などが利用できます 3D モデル WPF による 3D グラフィックスでは すべての物体は三角形を組み合わせて定義する必要があります 球や円錐といった一般的な形状は用意されていません 例えば X-Y 平面上にある厚さのない ( 平面の ) 正方形の物体を定義するにしても 2 つの三角形を組み 合わせる必要があります これは <MeshGeometry3D> 要素を使って次のように記述します <GeometryModel3D.Geometry> <MeshGeometry3D Positions="-1 1 0, -1-1 0, 1-1 0, 1 1 0" TriangleIndices="0 1 2, 0 2 3" /> </GeometryModel3D.Geometry> Positions 属性では 物体として定義する図形の頂点の座標を並べて記述します さらに TriangleIndices 属性を使って Position 属性で用意した頂点をどのように結んで三角形を形成するかを示します TriangleIndices 属性では 頂点を指定するために Positions 属性で指定した座標のインデックス (0 始まり ) を指定します 上記のリストでは TriangleIndices 属性で記述している 0 2 1 が 1 つの三角形を示し その頂点の 座標は (-1,1,0) (1,-1,0) (-1,-1,0) です このような三角形を多数記述することにより 3D 空間に 物体を定義していきます また 通常は物体の表面には色が付いていますが これを指定するには <Geometry3D.Material> 要素を 使用します <GeometryModel3D.Material> <DiffuseMaterial Brush="Blue" /> </GeometryModel3D.Material> <DiffuseMaterial> 要素は ( 鏡面とは逆の ) つや消しのような すべての方向に均一に光が拡散する表面 を表します 表面の色には "Blue" のブラシ (Brush) を使用します ここでは行いませんが 画像を使っ た表面の修飾も可能です ここまでに説明した Viewport3D Camera Light 3D モデルをまとめると 次のような XAML コー ドになります <Window x:class="wpfapplication12.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="250" Width="400"> <Grid> <Viewport3D> -4-

<!-- カメラ --> <Viewport3D.Camera> <PerspectiveCamera Position="0, 0, 10" FieldOfView="30" /> </Viewport3D.Camera> <!-- 光源 --> <DirectionalLight Color="White" Direction="0,0,-1" /> <!-- 3D モデル --> <GeometryModel3D> <!-- 正方形 --> <GeometryModel3D.Geometry> <MeshGeometry3D Positions="-1 1 0, -1-1 0, 1-1 0, 1 1 0" TriangleIndices="0 1 2, 0 2 3"/> </GeometryModel3D.Geometry> <!-- 表面の色 --> <GeometryModel3D.Material> <DiffuseMaterial Brush="Blue" /> </GeometryModel3D.Material> </GeometryModel3D> </Viewport3D> </Grid> </Window> これを実行すると 次のようなウィンドウが表示されます これだけでは Rectangle を使って 2D グラ フィックスの四角形を描画しているのと見た目は変わりませんが 物体の位置やカメラの設定を変更する ことで 描画内容が変化するのを確認できます -5-

立方体を表示する これまでの説明で 3D グラフィックスを作成するために必要な最小限の手順を学習できました 次に より 3D らしく見えるオブジェクトとして 立方体を表示してみます 正方形を定義するには基本図形である三角形が 2 個必要でしたので 立方体を作成するには 12 個の三角形が必要になります 立方体を定義する <MeshGeomety3D> 要素の記述は次のようになります 6 個の正方形を定義する Positions 属性と 12 個の三角形を定義する TriangleIndices 属性を記述しています <MeshGeometry3D Positions="1 1-1, 1-1 -1, -1-1 -1, -1 1-1, 1 1 1, -1 1 1, -1-1 1, 1-1 1, 1 1-1, 1 1 1, 1-1 1, 1-1 -1, 1-1 -1, 1-1 1, -1-1 1, -1-1 -1, -1-1 -1, -1-1 1, -1 1 1, -1 1-1, 1 1 1, 1 1-1, -1 1-1, -1 1 1" TriangleIndices="0 1 2, 0 2 3, 4 5 6, 4 6 7, 8 9 10, 8 10 11, 12 13 14, 12 14 15, 16 17 18, 16 18 19, 20 21 22, 20 22 23" /> この立方体を表示する XAML の記述例を示します ここでは背景やカメラの方向なども設定しています <Window x:class="wpfapplication12.window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="250" Width="400"> <Grid> <!-- 背景 --> <Grid.Background> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStop Color="Black" Offset="0"/> <GradientStop Color="DarkBlue" Offset="1"/> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Grid.Background> <Viewport3D> <Viewport3D.Camera> <PerspectiveCamera Position="0,0,-15" UpDirection="0,1,0" LookDirection="0,0,1" FieldOfView="45" NearPlaneDistance="0.125"/> </Viewport3D.Camera> <Viewport3D.Children> <!-- 光源 --> <DirectionalLight Color="White" Direction="0,0,1" /> <!-- 3D モデル --> -6-

<!-- アニメーション用の座標変換 --> <ModelVisual3D.Transform> <RotateTransform3D> <RotateTransform3D.Rotation> <AxisAngleRotation3D x:name="rotation" Angle="0" Axis="0,1,0" /> </RotateTransform3D.Rotation> </RotateTransform3D> </ModelVisual3D.Transform> <!-- 立方体 --> <GeometryModel3D> <GeometryModel3D.Geometry> <MeshGeometry3D Positions="1 1-1, 1-1 -1, -1-1 -1, -1 1-1, 1 1 1, -1 1 1, -1-1 1, 1-1 1, 1 1-1, 1 1 1, 1-1 1, 1-1 -1, 1-1 -1, 1-1 1, -1-1 1, -1-1 -1, -1-1 -1, -1-1 1, -1 1 1, -1 1-1, 1 1 1, 1 1-1, -1 1-1, -1 1 1" TriangleIndices="0 1 2, 0 2 3, 4 5 6, 4 6 7, 8 9 10, 8 10 11, 12 13 14, 12 14 15, 16 17 18, 16 18 19, 20 21 22, 20 22 23" /> </GeometryModel3D.Geometry> <GeometryModel3D.Material> <DiffuseMaterial> <DiffuseMaterial.Brush> <SolidColorBrush Color="Red" Opacity="0.8"/> </DiffuseMaterial.Brush> </DiffuseMaterial> </GeometryModel3D.Material> <!-- Translate the plane. --> <GeometryModel3D.Transform> <Transform3DGroup> <Transform3DGroup.Children> <TranslateTransform3D OffsetX="2" OffsetY="0" OffsetZ="0" > </TranslateTransform3D> <RotateTransform3D> <RotateTransform3D.Rotation> <AxisAngleRotation3D Angle="-20" Axis="1,0,0" /> </RotateTransform3D.Rotation> </RotateTransform3D> </Transform3DGroup.Children> </Transform3DGroup> </GeometryModel3D.Transform> </GeometryModel3D> </Viewport3D.Children> </Viewport3D> </Grid> </Window> -7-

これを実行すると 次のように立方体が表示されます アニメーションさらにアニメーションを行うことで より 3D グラフィックスらしく見えるようにします 3D グラフィックスのアニメーションを実現するには 座標変換の機能を利用し 座標変換時に指定するパラメータをアニメーションにより連続的に変化させるのが簡単です 以下では アプリケーションウィンドウがロードされた際のイベントをトリガーにして 立方体が Y 軸 を基準に 5 秒間で 360 度回転するアニメーションの設定を記述しています <!-- 立方体を Y 軸を基準に回転 --> <Window.Triggers> <EventTrigger RoutedEvent="Window.Loaded" > <BeginStoryboard> <Storyboard Name="myStoryBoard"> <DoubleAnimation Storyboard.TargetName="rotation" Storyboard.TargetProperty="Angle" From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever"/> </Storyboard> </BeginStoryboard> </EventTrigger> </Window.Triggers> スクリーンショットでは分かりにくいですが アプリケーションを実行すると 3D 空間に浮かんだ立方体 が飛び回ります -8-

まとめ今回は XAML における 3D グラフィックスの基礎について学習しました WPF では 3D グラフィックスは特殊なものではありません このため Image や TextBox といったほかの要素と組み合わせることもでき これまでなかったような GUI の構築も可能です -9-