zoukankan      html  css  js  c++  java
  • 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;
            }

  • 相关阅读:
    C语言判断函数
    从函数调用来思考多态
    C语言读取每一行文本
    任务栏上的资源管理器图标,没有jump list?其他都有。
    The specified child already has a parent错误
    SQL语句的添加、删除、修改多种方法
    菜鸟开技术博啦
    若不能连接到sql server的localhost
    微软Live Mail包含重大Bug,可导致用户无法登录,我已经一个多月无法登录自己的邮箱了。 无为而为
    试试Communicator Web Access 中文版 无为而为
  • 原文地址:https://www.cnblogs.com/fish124423/p/2507371.html
Copyright © 2011-2022 走看看