用户操作
[即时聊天] [发私信] [加为好友]
汉飞扬ID:artlife
110444次访问,排名842,好友2人,关注者20人。
汉飞扬是一直从事.net平台开发的专业团队,从2005年10月开始研究.net 3.0.到现在为止已经开发出多个基于.net 3.0平台的成功案例,部分案例在Vista发布大会和Windows创新日大会上进行了演示.目前,汉飞扬团队已经达到50多人,其中参与过.net 3.0,XBAP,SilverLight开发项目的有20人,并有专业的WPF设计美术师.汉飞扬欢迎大家与我们合作.
artlife的文章
原创 59 篇
翻译 2 篇
转载 14 篇
评论 77 篇
汉飞扬的公告
我们专注于Vista相关新技术的研发.
在WPF WCF WF Vista语音技术方面都有成功案例,如果希望在这些方面进行交流和合作,请与我们联系.
团队全家福 联系方式如下:邵宏钢
中讯汉扬科技发展有限公司 shaohonggang@artmtech.com 010-82826969-405
纳新通告:由于承接的业务增加,汉飞扬团队正在纳新,详情见Blog纳新通知。
最近评论
liseo1:
网络营销策划 网络公关 品牌管理 搜索引擎公关 搜索引擎排名 网站优化 软文发布 QQ:441843869
工业门
kenbeyond:呵呵,谢谢,很有用
middle:微软自己都不用的技术。
okokwukai:有没有第一个的例子的原码?
okokwukai:有没有第一个的例子?
文章分类
收藏
    相册
    团队全家福
    Windows Vista
    Biztalk muyanpeng@汉飞扬(RSS)
    Clark Zheng(RSS)
    stswordman
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 使用WPF实现3D场景[一]收藏

    新一篇: 使用WPF实现3D场景[二]  | 旧一篇: Blend中如何自定义控件模版,实现“vista button动画效果”(附图)

    在这篇文章里,将介绍如何实现一个简单的三维场景,一个三维的空间,包括空间内的三维物体的组合.

    首先介绍一下一个三维场景里的基本元素:

    先是定义一个简单的三维的场景环境

    代码如下:

    <Viewport3D Name="myViewport">
    </Viewport3D>

    以上是定义了一个名称叫做 myViewport 的的三维场景,接下来可以在这个三位场景里添加一些元素:

    元素一:照相机

    照相机是三维场景内用户的视角,当然照相机也是唯一的。

    来看如何定义一个简单的照相机代码:

    <Viewport3D.Camera>
            
    <PerspectiveCamera FarPlaneDistance="3000" NearPlaneDistance="0.25" FieldOfView="90" Position="1800,0,0" LookDirection="-1,0,0" UpDirection="0,1,0"></PerspectiveCamera>
          
    </Viewport3D.Camera>

    这里面描述了照相机在三维场景里的位置,包括它观察的角度,最远的视线,等等这样信息和属性。如果想灵活的使用照相机改变视角会在第二讲和第三讲里详尽的介绍。

    元素一:三维模型

    三维模型是三维场景内的物体,也就是模型中的元素,不唯一,可以组合,重叠。

    来看如何定义一个简单的三维模型组合的代码:

          <ModelVisual3D x:Name="topModelVisual3D">
            
    <ModelVisual3D.Children>
              
    <ModelVisual3D>
                
    <ModelVisual3D.Content>
                  
    <DirectionalLight Color="#FFFFFFFF" Direction="-3,-4,-5" />
                
    </ModelVisual3D.Content>
              
    </ModelVisual3D>

              
    <ModelVisual3D>
                
    <ModelVisual3D.Content>
                  
    <GeometryModel3D Geometry="{StaticResource chair}">
                    
    <GeometryModel3D.Material>
                      
    <DiffuseMaterial>
                        
    <DiffuseMaterial.Brush>
                          
    <SolidColorBrush Color="Yellow" Opacity="1.0" />
                        
    </DiffuseMaterial.Brush>
                      
    </DiffuseMaterial>
                    
    </GeometryModel3D.Material>
                    
    <GeometryModel3D.Transform>
                      
    <TranslateTransform3D OffsetX="0" OffsetY="-200" OffsetZ="-600" />
                    
    </GeometryModel3D.Transform>
                  
    </GeometryModel3D>
                
    </ModelVisual3D.Content>
              
    </ModelVisual3D>

              
    <ModelVisual3D>
                
    <ModelVisual3D.Content>
                  
    <GeometryModel3D Geometry="{StaticResource table}">
                    
    <GeometryModel3D.Material>
                      
    <DiffuseMaterial>
                        
    <DiffuseMaterial.Brush>
                          
    <SolidColorBrush Color="Yellow" Opacity="1.0" />
                        
    </DiffuseMaterial.Brush>
                      
    </DiffuseMaterial>
                    
    </GeometryModel3D.Material>
                    
    <GeometryModel3D.Transform>
                      
    <TranslateTransform3D OffsetX="0" OffsetY="20" OffsetZ="60" />
                    
    </GeometryModel3D.Transform>
                  
    </GeometryModel3D>
                
    </ModelVisual3D.Content>
              
    </ModelVisual3D>


              
    <ModelVisual3D>
                
    <ModelVisual3D.Content>
                  
    <GeometryModel3D Geometry="{StaticResource man}">
                    
    <GeometryModel3D.Material>
                      
    <DiffuseMaterial>
                        
    <DiffuseMaterial.Brush>
                          
    <SolidColorBrush Color="black" Opacity="1.0" />
                        
    </DiffuseMaterial.Brush>
                      
    </DiffuseMaterial>
                    
    </GeometryModel3D.Material>
                    
    <GeometryModel3D.Transform>
                      
    <TranslateTransform3D OffsetX="75" OffsetY="20" OffsetZ="0" />
                    
    </GeometryModel3D.Transform>
                  
    </GeometryModel3D>
                
    </ModelVisual3D.Content>
                
                
                
    <ModelVisual3D.Transform>
                  
    <Transform3DGroup>
                    
    <ScaleTransform3D ScaleX="10" ScaleY="10" ScaleZ="10"  x:Name="scaleTransform"/>
                    
    <MatrixTransform3D/>
                    
    <RotateTransform3D >
                      
    <RotateTransform3D.Rotation >
                        
    <AxisAngleRotation3D Angle="275" Axis="0,0,1" x:Name="myAngleRotationMan"/>
                      
    </RotateTransform3D.Rotation>
                    
    </RotateTransform3D>
                  
    </Transform3DGroup>
                
    </ModelVisual3D.Transform> 
                
                
              
    </ModelVisual3D>
            
    </ModelVisual3D.Children>
            
            
    <ModelVisual3D.Transform>
              
    <Transform3DGroup>
                
    <MatrixTransform3D/>
                
    <RotateTransform3D >
                  
    <RotateTransform3D.Rotation >
                    
    <AxisAngleRotation3D Angle="0" Axis="0,10,0" x:Name="myAngleRotationChair"/>
                  
    </RotateTransform3D.Rotation>
                
    </RotateTransform3D>
              
    </Transform3DGroup>
            
    </ModelVisual3D.Transform>
          
    </ModelVisual3D>

    来看一下效果:

     

     

     

    到这里就完成了整个的三维场景的建立。

    补充元素:动画效果

    如果想让整体的三维模型都能动起来,就需要为三维场景添加动画效果。

    看一段可以让三维场景按纵轴(中心轴)旋转的代码:

       <Viewport3D.Triggers>
            
    <EventTrigger RoutedEvent="Viewport3D.Loaded">
              
    <BeginStoryboard>
                
    <Storyboard>
                  
    <DoubleAnimation 
                    
    Storyboard.TargetName="myAngleRotationChair"
                    Storyboard.TargetProperty
    ="Angle"
                    From
    ="0" To="360" Duration="0:0:10"
                    RepeatBehavior
    ="Forever" />
                
    </Storyboard>
              
    </BeginStoryboard>
            
    </EventTrigger>
          
    </Viewport3D.Triggers>

    填写如上代码之后就完成了一个最简单的三维动画的处理。

    好的~如果您对更多的三维场景变成想有所了解,请关注第二讲。

    如果您想下载源代码或收听语音教程,请访问:微软webcast

     

    再次感谢您的关注,谢谢!

    发表于 @ 2007年02月13日 15:07:00|评论(loading...)|编辑

    新一篇: 使用WPF实现3D场景[二]  | 旧一篇: Blend中如何自定义控件模版,实现“vista button动画效果”(附图)

    评论

    #shansheng 发表于2007-11-07 19:55:46  IP: 221.226.124.*
    最不喜欢的就是贴出一大片代码的
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 汉飞扬