wpf 3d显示

   百度或者谷歌一下,3d,看吧,介绍ModelVisual3D,介绍GeometryModel3D,介绍Model3DGroup,都简单的介绍了一 下,但是,这些东西如果我想知道,我直接去msdn不就行了,齐而且全,我还去百度谷歌什么,我只是想知道如何和在viewport3d中显示一个图片而 已,可怜的中文资料!
       好了,如果是高手,就甭看了,这只是一个简单介绍如果用3d的小例子,如果是跟我一样想学3d,但是不知道如何入门的 菜鸟,我只能说,咱们都是同志
      Xaml设计中:
        <Viewport3D x:Name="_view">

    </Viewport3D>
    添加这样一个viewport3D控件,命名。
    代码中:
全局变量:
定义一个cameral,也就是所谓的摄像机,这个东西就是相当于眼睛,你的眼睛不可能看到360度,如果你想看后面的东西需要的就是转过头。你可以看远近,也可以看上下左右,明白?不明白我也说不清楚了。
PerspectiveCamera _camera=null;
在windows_load里面把设置:
          _camera = new PerspectiveCamera();
            _camera.Position = new Point3D(0, 0, 5);
            _camera.LookDirection = new Vector3D(0, 0, -5);
            _camera.UpDirection = new Vector3D(0, 1, 0);
            _camera.FieldOfView = 45;
            _view.Camera = _camera;
           _view.Children.Add(getg3(@"c:\image",1));
只解释后两句,是设置_view的摄像机绑定,上面的不懂msdn去!最后一句自己写的一个函数:
private ModelVisual3D getg3(string filepath, int index)
        {

        }
函数返回值是一个 ModelVisual3D 。
private ModelVisual3D getg3(string filepath, int index)
        {
           //定义一个ModelVisual3D对象,作为返回值。
           ModelVisual3D _visual = new ModelVisual3D();
            //下面连个是临时变量,读取图片用的
            BitmapImage bmp;
            ImageSource img ;

            //DiffuseMaterial 这个东西是为了返回一个brush,brush也就是为了返回一个图片,暂且这么理解!我解释不大清楚!其实是为了填充 Material这个东西!
            DiffuseMaterial dm = new DiffuseMaterial();
            GeometryModel3D geometrymodel3d = new GeometryModel3D();
            Model3DGroup model3dgroupmodel= new Model3DGroup();
            MeshGeometry3D MeshGeometry3D1 = new MeshGeometry3D();
         
             model3dgroupmodel.Children.Add(geometrymodel3d);
            Transform3DGroup tg = new Transform3DGroup();
            tg.Children.Add(new TranslateTransform3D(0, 0, 0));
            tg.Children.Add(new ScaleTransform3D(0.25, 0.25, 0.2));
            tg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), -45)));
            model3dgroupmodel.Transform = tg;

                bmp = new BitmapImage(new Uri(@“c:\image\1.jpg”));

                img = bmp;
             
                dm.Brush = new ImageBrush((ImageSource)(img));
                geometrymodel3d.Material = dm;
                model3dgroupmodel.Children.Add(geometrymodel3d);
       
            MeshGeometry3D1 = new MeshGeometry3D();
            MeshGeometry3D1.Positions = ((Point3DCollection)new Point3DCollectionConverter().ConvertFromString("-1,1,1 -1,-1,1 1,-1,1 1,1,1"));
            MeshGeometry3D1.TriangleIndices = ((Int32Collection)new Int32CollectionConverter().ConvertFromString("0,1,2 0,2,3"));
            MeshGeometry3D1.TextureCoordinates = ((PointCollection)new PointCollectionConverter().ConvertFromString("0,0 0,1 1,1 1,0"));
            geometrymodel3d.Geometry = MeshGeometry3D1;

            AmbientLight AmbientLight1 = new AmbientLight();
            AmbientLight1.Color = Colors.Gray;
            model3dgroupmodel.Children.Add(AmbientLight1);
            _visual.Content = model3dgroupmodel;

            return _visual;
        }

posted @ 2012-05-18 10:43  爱喝可乐  阅读(2294)  评论(0编辑  收藏  举报