<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    安靜的等待

    茹呲綄鎂
    posts - 51, comments - 9, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    參考微軟<Creating 3D Content with WPF>文檔翻譯。
    源文件下載 http://www.wangpangzi.net/uploads/200703/3dlab.zip
    本文的目的是在Blend環境中研究Windows Presentation Foundation(WPF)的3D特性,首先我們導入一個已經建立好的3D模型到程序中,使用動畫讓其旋轉。然后,我們會研究如何動態的使用代碼生成模型。最后我們會把2D的用戶界面映射到3D模型上,用戶并可以與其交互。
    注意,源文件中的源代碼是為每個階段而設計的,因此你可以從中間開始學習或者做階段備份之用。每個練習也包含了一份完整的完成后源代碼,你可以直接通過它們查看最終結果。

    練習一 使用靜態3D模型(共4個任務)
    在本練習中,你將會導入一個已經建立好的3D模型,并使用Viewport3D對象把它顯示出來,然后使用動畫讓他旋轉起來。最后,用戶可以使用鼠標旋轉這個模型。

    任務1 導入3D模型。
    雖然我們可以使用XAML直接建立3D模型了,但對于稍微復雜的模型來說,我們最好使用專業工具建立模型,再導出成XAML格式供我們使用。在本練習中,我們將會使用一個用這種方式建立的3D模型,即一個XAML文件。并將其導入Blend中。
    1.打開Microsoft Expression Blend.
    2.運行File > New Project…建立新程序。
    3.在彈出的New Project 窗口中選擇Standard Application,在Name中輸入Show3DModel, 選擇你的保存文件夾,點OK建立新程序。
    4.在Source\Exercise1子文件中,你會看到一個叫做Model.xaml的文件,它包含了你將要使用的3D模型。用記事本打開這個文件,你會看到很多代碼,這些代碼靠手工輸入無疑是困難并且枯燥的。而生成這個模型文件的工具就大大簡化了工作,并且自動的將代碼封裝在Viewport3D里并放入Viewbox中。你可以將整個文件放入XamlPad中來預覽模型。
    5.將Model.xaml中的所有內容貼到應用程序中window.xaml文件里的Grid標簽中。
    6.按F5編譯程序,運行結果如下:
    uploads/200703/31_011550_1.jpg


    任務2 改變攝像機的位置。
      在本任務中,我們將了解如何改變攝像機的位置。
    1.  打開Window1.xaml文件,找到Viewport3D中的Viewport3D.Camera 標簽,它包括了一個PerspectiveCamera,即透視攝像機。它的UpDirection 目前是0,1,0,把它改為0.2,1,0,然后按F5運行程序,看看效果的變化。
    2.  改變攝像機的Position為0.25,0,2.2339, 然后運行程序,觀察攝像機位置發生的變化。
    3.  改變Position為3,0,2.2339,同時也改變LookDirection為-3,0,-2.2,然后再運行程序觀察變化。
    4.  好,現在請隨便嘗試幾個數據組合,請注意如果嘗試過大的數據,很容易使攝像機跑到一個較遠的地方,因此會什么都看不到。
    5.  當你完成實驗后,用一下代碼使其回到初始的默認位置,以進行后面的任務。
    <PerspectiveCamera x:Name="FrontOR9" FarPlaneDistance="10" LookDirection="0,0,-1"
       UpDirection="0,1,0" NearPlaneDistance="1" Position="0,0,2.29339"
       FieldOfView="39.5978" />

    任務3 給模型添加動畫。
    1.打開Window1.xaml文件,找到Viewport3D中的Viewport3D.Camera 標簽,在此標簽后,添加下面的代碼:
    <Viewport3D.Triggers>
     <EventTrigger RoutedEvent="Viewport3D.Loaded">
     <EventTrigger.Actions>
     <BeginStoryboard>
     <Storyboard>
     <Rotation3DAnimation Storyboard.TargetName="WpfLogoOR12"
     Storyboard.TargetProperty="(Model3DGroup.Transform).(Transform3DGroup.Children)[2].(RotateTransform3D.Rotation)"
     Duration="0:0:5" AutoReverse="True"
     RepeatBehavior="Forever" AccelerationRatio="0.4" DecelerationRatio="0.4">
     <Rotation3DAnimation.From>
     <AxisAngleRotation3D Axis="2,10,3" Angle="-45" />
     </Rotation3DAnimation.From>
     <Rotation3DAnimation.To>
     <AxisAngleRotation3D Axis="2,10,3" Angle="45" />
     </Rotation3DAnimation.To>
     </Rotation3DAnimation>

     </Storyboard>
     </BeginStoryboard>
     </EventTrigger.Actions>
     </EventTrigger>
    </Viewport3D.Triggers>
    這段代碼使用了Rotation3DAnimation標簽給模型添加動畫,Storyboard.TargetName和Storyboard.TargetProperty屬性指示了模型發生動畫的具體部分。(WpfLogoOR12是模型中的一個標簽,代表logo模型整體)
    2.運行程序,logo模型會自動的發生反復旋轉。

    任務4 可交互的旋轉模型。
    在本練習的最后一個任務中,我們將允許使用鼠標旋轉模型。你會用到 3D Tools for the Windows Presentation Foundation, 這是一套可以輔助我們在WPF中使用XAML制作3D應用的工具,可以從http://www.codeplex.com/3DTools上下載。當然,我們現在已經不必去下載了,我們要用到的3DTools.dll 庫文件在實例的Source\Exercise1文件夾下。
    1.給項目中添加3DTools.dll庫文件。(在Project面板中,右擊References, 選Add Reference…, 然后找到3DTools.dll文件)
    2.打開Window1.xaml文件,添加一個XML 命名空間聲明,以在這個XAML文件中使用3D tools:
    <Window x:Class="Show3DModel.Window1"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:tools="clr-namespace:_3DTools;assembly=3DTools"
     Title="Show3DModel" Height="300" Width="300"
     >

    3.添加<tools:TrackballDecorator>標簽,使<Viewport3D></Viewport3D>標簽整體包含在添入的標簽<tools:TrackballDecorator>... </tools:TrackballDecorator>中。
    TrackballDecorator允許使用鼠標左鍵拖動旋轉包含的模型,使用鼠標右鍵縮小放大。
    4.編譯運行程序,現在就實現與模型的旋轉、縮小放大交互了。
    主站蜘蛛池模板: 久久精品国产亚洲αv忘忧草| 窝窝影视午夜看片免费| 国产精品免费小视频| a一级毛片免费高清在线| 亚洲AV日韩AV永久无码下载| 国产va免费精品观看精品| 免费无码专区毛片高潮喷水| 亚洲一区二区三区四区在线观看| 免费精品国产日韩热久久| 一级成人a免费视频| 亚洲欧洲日韩国产| 亚洲另类少妇17p| 四虎在线免费视频| free哆拍拍免费永久视频| 亚洲国产成人无码av在线播放| 亚洲日韩国产精品乱| 永久免费AV无码国产网站| 黄桃AV无码免费一区二区三区| 久久久国产亚洲精品| 亚洲国产成人一区二区三区| 午夜成年女人毛片免费观看| 欧洲人免费视频网站在线| 国产成人人综合亚洲欧美丁香花| 亚洲天天做日日做天天欢毛片| 亚洲?v女人的天堂在线观看| 91香蕉视频免费| 香蕉免费一区二区三区| 免费人成又黄又爽的视频在线电影| 91亚洲精品麻豆| 亚洲av永久无码精品表情包| 亚洲人成色77777在线观看大| 永久免费av无码网站韩国毛片| 久99久精品免费视频热77| 亚洲精品视频免费观看| 久久亚洲中文无码咪咪爱| 亚洲综合一区二区精品久久| 自拍偷自拍亚洲精品情侣| 国产一卡二卡≡卡四卡免费乱码| 动漫黄网站免费永久在线观看| 香蕉免费一区二区三区| 国产无遮挡裸体免费视频在线观看|