Esempio n. 1
0
 private void LoadPeople(IDynamicObject dynamicObject)
 {
     if (skinMesh == null)
     {
         // 构造ModelPoint
         mp = geoFac.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
         string modelName = (strMediaPath + @"\x\Character\QiYeYuanGong.X");
         mp.ModelName  = modelName;
         mp.SpatialCRS = dataset_Road.SpatialReference;
         // 设置位置
         IMatrix matrix = new Matrix();
         matrix.MakeIdentity();
         IPoint startPoint = null;
         double speed      = 0.0;
         dynamicObject.GetWaypoint2(0, out startPoint, out speed);
         matrix.SetTranslate(startPoint.Position);
         mp.FromMatrix(matrix);
         mp.SelfScale(5, 5, 5);
         // 创建骨骼动画
         skinMesh = this.axRenderControl1.ObjectManager.CreateSkinnedMesh(mp, rootId);
         if (skinMesh == null)
         {
             MessageBox.Show("骨骼动画创建失败!");
             return;
         }
         skinMesh.Loop = true;
         skinMesh.Play();
         skinMesh.MaxVisibleDistance = 10000;
         skinMesh.ViewingDistance    = 100;
         // 绑定到运动路径
         IMotionable m = skinMesh as IMotionable;
         pos.Set(0, 0, 0);
         m.Bind2(dynamicObject, pos, 0, 0, 0);
     }
 }
Esempio n. 2
0
        void t_Tick(object sender, EventArgs e)
        {
            Random r = new Random();
            int    i = 0;

            foreach (IRenderModelPoint rmp in list)
            {
                //System.Threading.Thread.Sleep(2);
                int n = r.Next(100);
                if (n > 80)
                {
                    rmp.Highlight(System.Drawing.Color.Red);
                }
                else if (n > 40 && n <= 80)
                {
                    rmp.Highlight(System.Drawing.Color.Yellow);
                }
                else
                {
                    rmp.Highlight(System.Drawing.Color.Blue);
                }
                IModelPoint modelPoint = rmp.GetFdeGeometry() as IModelPoint;
                modelPoint.FromMatrix(MatrixList[i]);
                i++;
                ITransform tf = modelPoint as ITransform;
                tf.Scale3D(1, 1, n, modelPoint.Envelope.Center.X, modelPoint.Envelope.Center.Y, modelPoint.Envelope.MinZ);
                IModelPoint newModelPoint = tf as IModelPoint;
                rmp.SetFdeGeometry(newModelPoint);
            }
        }
        private void CreateRenderModelPoint(IPoint point)
        {
            // 创建模型
            if (gfactory == null)
            {
                gfactory = new GeometryFactory();
            }

            string tmpOSGPath = Environment.CurrentDirectory + @"\TrashCar\GLJCHE01.osg";

            //string tmpOSGPath = Environment.CurrentDirectory + @"\Apartment\Apartment.osg";
            fde_modelpoint            = gfactory.CreateGeometry(i3dGeometryType.i3dGeometryModelPoint, i3dVertexAttribute.i3dVertexAttributeZ) as IModelPoint;
            fde_modelpoint.SpatialCRS = crs;
            fde_modelpoint.SetCoords(point.X, point.Y, point.Z, 0, 0);
            fde_modelpoint.ModelName = tmpOSGPath;

            rmodelpoint = _axRenderControl.ObjectManager.CreateRenderModelPoint(fde_modelpoint, null);
            rmodelpoint.MaxVisibleDistance = double.MaxValue;
            rmodelpoint.MinVisiblePixels   = 0;
            IEulerAngle angle = new EulerAngle();

            angle.Set(0, -20, 0);

            _axRenderControl.Camera.LookAt2(point, 100, angle);
        }
Esempio n. 4
0
        private IModelPoint Polygon2ModelPoint(IPolygon polygon, out Gvitech.CityMaker.Resource.IModel gvModel)
        {
            if (polygon == null || !polygon.IsValid)
            {
                gvModel = null;
                return(null);
            }
            IVector3 vector = polygon.QueryNormal();

            if (vector.Z < 0.0)
            {
                polygon.ExteriorRing.ReverseOrientation();
            }
            IModelPoint        result            = null;
            IGeometryConvertor geometryConvertor = new GeometryConvertorClass();
            ITriMesh           triMesh           = geometryConvertor.PolygonToTriMesh(polygon);

            if (triMesh != null)
            {
                IMultiTriMesh multiTriMesh = ((IGeometryFactory) new GeometryFactoryClass()).CreateGeometry(gviGeometryType.gviGeometryMultiTrimesh, polygon.VertexAttribute) as IMultiTriMesh;
                multiTriMesh.AddTriMesh(triMesh);
                bool flag = geometryConvertor.TriMeshToModelPoint(multiTriMesh, out gvModel, out result);
                if (flag && gvModel != null)
                {
                    this.Model2Water(ref gvModel);
                }
            }
            else
            {
                result  = null;
                gvModel = null;
            }
            return(result);
        }
Esempio n. 5
0
        private void LoadPlane()
        {
            // 加载直升飞机
            string fileName = (strMediaPath + @"\x\Vehicles\wrj.X");

            if (skinMeshPlane == null)
            {
                // 构造ModelPoint
                IGeometryFactory gf = new GeometryFactory();
                IModelPoint      mp = gf.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
                mp.ModelName  = fileName;
                mp.SpatialCRS = new CRSFactory().CreateFromWKT(wkt) as ISpatialCRS;
                // 设置位置
                IMatrix matrix = new Matrix();
                matrix.MakeIdentity();
                matrix.SetTranslate(line.GetPoint(0).Position);
                mp.FromMatrix(matrix);
                // 创建骨骼动画
                skinMeshPlane = this.axRenderControl1.ObjectManager.CreateSkinnedMesh(mp, rootId);
                if (skinMeshPlane == null)
                {
                    MessageBox.Show("骨骼动画创建失败!");
                    return;
                }
                skinMeshPlane.Loop = true;
                skinMeshPlane.Play();
                skinMeshPlane.MaxVisibleDistance = 1000;
                skinMeshPlane.ViewingDistance    = 100;

                // 绑定到运动路径
                IMotionable m = skinMeshPlane as IMotionable;
                position.Set(0, 0, 0);
                m.Bind2(dynamicObject, position, 0, 0, 0);
            }
        }
Esempio n. 6
0
 private void LoadCar(IDynamicObject dynamicObject)
 {
     if (renderModelPoint == null)
     {
         // 构造ModelPoint
         mp = geoFac.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
         string modelName = (strMediaPath + @"\osg\Vehicles\Car\TCJ006.osg");
         mp.ModelName  = modelName;
         mp.SpatialCRS = dataset_Road.SpatialReference;
         // 设置位置
         IMatrix matrix = new Matrix();
         matrix.MakeIdentity();
         IPoint startPoint = null;
         double speed      = 0.0;
         dynamicObject.GetWaypoint2(0, out startPoint, out speed);
         matrix.SetTranslate(startPoint.Position);
         mp.FromMatrix(matrix);
         mp.SelfScale(0.05, 0.05, 0.05);
         // 创建骨骼动画
         renderModelPoint = this.axRenderControl1.ObjectManager.CreateRenderModelPoint(mp, null, rootId);
         renderModelPoint.MaxVisibleDistance = 10000;
         renderModelPoint.ViewingDistance    = 200;
         // 绑定到运动路径
         IMotionable m = renderModelPoint as IMotionable;
         pos.Set(0, 0, 0);
         m.Bind2(dynamicObject, pos, 90, 0, 0);
     }
 }
Esempio n. 7
0
        private void btnCreateModelPoint_Click(object sender, EventArgs e)
        {
            _geoEditor.FinishEdit();   //用于当拾取到基准面时,或者没有正常右键结束连续调用Start时

            if (gfactory == null)
            {
                gfactory = new GeometryFactory();
            }

            string tmpOsgPath = (strMediaPath + @"\osg\Buildings\Apartment\Apartment.osg");

            fde_modelpoint = gfactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint,
                                                     gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
            fde_modelpoint.SetCoords(0, 0, 0, 0, 0);
            fde_modelpoint.ModelName = tmpOsgPath;
            //****获取包围盒
            IResourceFactory resfac = new ResourceFactory();
            IPropertySet     images = new PropertySet();
            IModel           model  = null;
            IMatrix          matrix = null;

            resfac.CreateModelAndImageFromFile(tmpOsgPath, out images, out model, out matrix);
            fde_modelpoint.ModelEnvelope = model.Envelope;
            //*************
            rmodelpoint = this.axRenderControl1.ObjectManager.CreateRenderModelPoint(fde_modelpoint, null, rootId);

            resultCode = _geoEditor.StartEditRenderGeometry(rmodelpoint, gviGeoEditType.gviGeoEditCreator);
            if (!resultCode)
            {
                MessageBox.Show(this.axRenderControl1.GetLastError().ToString());
            }

            oldfdeGeometry = fde_modelpoint;
        }
Esempio n. 8
0
 // 绘制架空模型 FX 2014.04.01
 public virtual bool DrawOver(out IModelPoint mp, out IModel fmodel, out IModel smodel)
 {
     mp     = this.GetModelPoint();
     fmodel = null;
     smodel = null;
     return(true);
 }
Esempio n. 9
0
        void scaleCalculate(IModelPoint oldMP, IModelPoint newMP,
                            out double scaleX, out double scaleY, out double scaleZ,
                            out double centerX, out double centerY, out double centerZ)
        {
            M0 = oldMP.AsMatrix();
            M1 = newMP.AsMatrix();
            IMatrix M0_Inverse = M0.Clone();

            M0_Inverse.Inverse();
            IMatrix  MS     = MultiplyMatrix(M0_Inverse, M1);
            IVector3 scaleV = MS.GetScale();

            scaleX  = scaleV.X;
            scaleY  = scaleV.Y;
            scaleZ  = scaleV.Z;
            centerX = MS.M41 / (1.0 - scaleV.X);
            centerY = MS.M42 / (1.0 - scaleV.Y);
            centerZ = MS.M43 / (1.0 - scaleV.Z);
            if (scaleV.X == 1)
            {
                centerX = MS.M41;
            }
            if (scaleV.Y == 1)
            {
                centerY = MS.M42;
            }
            if (scaleV.Z == 1)
            {
                centerZ = MS.M43;
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 加载直升机骨骼动画
        /// </summary>
        private void LoadXFilePlane()
        {
            string fileName = (strMediaPath + @"\x\Vehicles\wrj.X");

            if (skinMeshPlane == null)
            {
                // 构造ModelPoint
                IGeometryFactory gf = new GeometryFactory();
                IModelPoint      mp = gf.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
                mp.ModelName  = fileName;
                mp.SpatialCRS = datasetCRS;
                // 设置位置
                IMatrix matrix = new Matrix();
                matrix.MakeIdentity();
                v3.Set(planeX, planeY, planeZ);
                matrix.SetTranslate(v3);
                mp.FromMatrix(matrix);
                // 创建骨骼动画
                skinMeshPlane = CommonUnity.RenderHelper.ObjectManager.CreateSkinnedMesh(mp, rootId);
                if (skinMeshPlane == null)
                {
                    MessageBox.Show("骨骼动画创建失败!");
                    return;
                }
                skinMeshPlane.Loop = true;
                skinMeshPlane.Play();
                skinMeshPlane.MaxVisibleDistance = 1000;
            }
        }
Esempio n. 11
0
        private void timer1_Tick(object sender, System.EventArgs e)
        {
            // 删除原有指针
            if (render_ZhiZhen != null)
            {
                this.axRenderControl1.ObjectManager.DeleteObject(render_ZhiZhen.Guid);
                render_ZhiZhen = null;
            }
            // 加载指针
            string modelNameZhiZhen = (strMediaPath + @"\osg\Dashboard\zhizhen.osg");

            fdepoint_ZhiZhen           = (IModelPoint)geoFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ);
            fdepoint_ZhiZhen.ModelName = modelNameZhiZhen;
            fdepoint_ZhiZhen.SetCoords(biaoPanX, biaoPanY, biaoPanZ + 0.01, 0, 0);
            fdepoint_ZhiZhen.SpatialCRS = dataset.SpatialReference;
            zhiZhenValue = random1.Next(0, 16);
            fdepoint_ZhiZhen.SelfRotate(0, 0, 1, -((zhiZhenValue % 16) * 3 * 3.14 / 32));
            render_ZhiZhen = this.axRenderControl1.ObjectManager.CreateRenderModelPoint(fdepoint_ZhiZhen, null, rootId);
            label.Text     = "当前的压力值是:" + zhiZhenValue.ToString();

            // 刷新弹出窗口
            if (clickFlag == 1)
            {
                if (dxform.IsDisposed)
                {
                    return;
                }
                else
                {
                    dxform.arcScaleComponent1.Value = zhiZhenValue;
                    dxform.Refresh();
                }
            }
        }
Esempio n. 12
0
        /// <summary>
        /// 加载人物骨骼动画
        /// </summary>
        private void LoadXFileCharacter()
        {
            string fileName = (strMediaPath + @"\x\Character\QiYeYuanGong.X");

            if (skinMeshCharacter == null)
            {
                // 构造ModelPoint
                IGeometryFactory gf = new GeometryFactory();
                IModelPoint      mp = gf.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
                mp.ModelName  = fileName;
                mp.SpatialCRS = datasetCRS;
                // 设置位置
                IMatrix matrix = new Matrix();
                matrix.MakeIdentity();
                v3.Set(gugeX, gugeY, gugeZ);
                matrix.SetTranslate(v3);
                mp.FromMatrix(matrix);
                // 创建骨骼动画
                skinMeshCharacter = CommonUnity.RenderHelper.ObjectManager.CreateSkinnedMesh(mp, rootId);
                if (skinMeshCharacter == null)
                {
                    MessageBox.Show("骨骼动画创建失败!");
                    return;
                }
                skinMeshCharacter.Duration = 1;  //人物的那个骨骼动画播放速度调快一倍
                skinMeshCharacter.Loop     = true;
                skinMeshCharacter.Play();
                skinMeshCharacter.MaxVisibleDistance = 1000;
            }
        }
Esempio n. 13
0
        private void btnConstructModelPoint_Click(object sender, EventArgs e)
        {
            if (gfactory == null)
                gfactory = new GeometryFactory();

            modelPoint = gfactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
            modelPoint.SetCoords(100, 200, 300, 0, 0);
            modelPoint.ModelName = "testModel";
            //IMatrix matrix = new Matrix();
            //matrix.MakeIdentity();
            //modelPoint.Matrix33 = matrix as Array;
            IEnvelope boundingBox = new Envelope();
            boundingBox.Set(50, 60, 70, 150, 160, 170);
            modelPoint.ModelEnvelope = boundingBox;

            if (modelPoint == null)
                return;

            ModelPoint geo = new ModelPoint();
            // Geometry属性
            geo.Dimension = modelPoint.Dimension;
            if (modelPoint.Envelope != null)
            {
                geo.MaxX = modelPoint.Envelope.MaxX;
                geo.MaxY = modelPoint.Envelope.MaxY;
                geo.MaxZ = modelPoint.Envelope.MaxZ;
                geo.MinX = modelPoint.Envelope.MinX;
                geo.MinY = modelPoint.Envelope.MinY;
                geo.MinZ = modelPoint.Envelope.MinZ;
            }
            geo.GeometryType = modelPoint.GeometryType;
            geo.IsEmpty = modelPoint.IsEmpty;
            geo.IsValid = modelPoint.IsValid;
            geo.VertexAttribute = modelPoint.VertexAttribute;
            geo.HasId = modelPoint.HasId();
            geo.HasM = modelPoint.HasM();
            geo.HasZ = modelPoint.HasZ();
            // Point属性
            geo.Id = modelPoint.Id;
            geo.M = modelPoint.M;
            geo.X = modelPoint.X;
            geo.Y = modelPoint.Y;
            geo.Z = modelPoint.Z;
            // modelPoint属性
            geo.Matrix33 = modelPoint.Matrix33;
            if (modelPoint.ModelEnvelope != null)
            {
                geo.ModelEnvelopeMaxX = modelPoint.ModelEnvelope.MaxX;
                geo.ModelEnvelopeMaxY = modelPoint.ModelEnvelope.MaxY;
                geo.ModelEnvelopeMaxZ = modelPoint.ModelEnvelope.MaxZ;
                geo.ModelEnvelopeMinX = modelPoint.ModelEnvelope.MinX;
                geo.ModelEnvelopeMinY = modelPoint.ModelEnvelope.MinY;
                geo.ModelEnvelopeMinZ = modelPoint.ModelEnvelope.MinZ;
            }
            geo.ModelName = modelPoint.ModelName;

            this.propertyGrid1.SelectedObject = geo;
        }
Esempio n. 14
0
 private void beFilePath_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
 {
     try
     {
         if (this.comboBoxEdit1.SelectedIndex == 0)
         {
             OpenFileDialog ofd = new OpenFileDialog();
             ofd.DefaultExt       = "osg";
             ofd.Filter           = "3DModel Filess(*.osg)|*.osg";
             ofd.RestoreDirectory = true;
             if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 this.beFilePath.Text = ofd.FileName;
                 Clear();
                 if (this._drawTool != null)
                 {
                     this._drawTool.OnStartDraw    -= new OnStartDraw(this.OnStartDraw);
                     this._drawTool.OnFinishedDraw -= new OnFinishedDraw(this.OnFinishedDraw);
                     this._drawTool.Close();
                     this._drawTool.End();
                     this._drawTool = null;
                 }
                 // 开启
                 this._drawTool = DrawToolService.Instance.CreateDrawTool(DrawType._3DModel);
                 if (this._drawTool != null)
                 {
                     (this._drawTool as Draw3DModel).Set3DModelFilePath(this.beFilePath.Text);
                     this._drawTool.OnStartDraw    += new OnStartDraw(this.OnStartDraw);
                     this._drawTool.OnFinishedDraw += new OnFinishedDraw(this.OnFinishedDraw);
                     this._drawTool.Start();
                 }
             }
         }
         else if (this.comboBoxEdit1.SelectedIndex == 1)
         {
             OpenFileDialog ofd = new OpenFileDialog();
             ofd.DefaultExt       = "osg";
             ofd.Filter           = "3DModel Filess(*.osg)|*.osg";
             ofd.RestoreDirectory = true;
             if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 this.beFilePath.Text = ofd.FileName;
                 double      x  = double.Parse(this.seX.Text.ToString());
                 double      y  = double.Parse(this.seY.Text.ToString());
                 double      z  = double.Parse(this.seZ.Text.ToString());
                 IModelPoint mp = (new GeometryFactory()).CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZM) as IModelPoint;
                 mp.SetCoords(x, y, z, 0, 0);
                 mp.ModelName = this.beFilePath.Text;
                 AddRecord(mp);
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
Esempio n. 15
0
        private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            DevExpress.XtraEditors.Controls.EditorButton btn = e.Button;
            switch (btn.Caption)
            {
            case "定位":
                DF3DApplication app = DF3DApplication.Application;
                if (app == null || app.Current3DMapControl == null)
                {
                    return;
                }
                int focusedRowHandle = this.gridView1.FocusedRowHandle;
                if (focusedRowHandle == -1)
                {
                    return;
                }
                DataRow dr = this.gridView1.GetDataRow(focusedRowHandle);
                if (dr["geo"] != null && dr["Name"] != null && dr["fcName"] != null && dr["fc"] != null)
                {
                    ISurfaceSymbol ss = new SurfaceSymbolClass();
                    ss.Color = 0xcc00ff00;
                    ICurveSymbol cs = new CurveSymbolClass();
                    cs.Color          = 0xff00ff00;
                    cs.Width          = -5;
                    ss.BoundarySymbol = cs;
                    ISimplePointSymbol ps = new SimplePointSymbol();
                    ps.Size      = SystemInfo.Instance.SymbolSize;
                    ps.FillColor = Convert.ToUInt32(SystemInfo.Instance.FillColor, 16);
                    IGeometry objGeo = dr["geo"] as IGeometry;
                    if (objGeo.GeometryType == gviGeometryType.gviGeometryModelPoint)
                    {
                        IModelPoint       mp  = objGeo as IModelPoint;
                        IModelPointSymbol mps = new ModelPointSymbol();
                        mps.SetResourceDataSet((dr["fc"] as IFeatureClass).FeatureDataSet);
                        mps.Color = 0xffffff00;
                        IRenderModelPoint rMP = app.Current3DMapControl.ObjectManager.CreateRenderModelPoint(mp, mps, app.Current3DMapControl.ProjectTree.RootID);
                        rMP.Glow(8000);
                        app.Current3DMapControl.ObjectManager.DelayDelete(rMP.Guid, 8000);

                        IGeometryFactory geoFact = new GeometryFactory();
                        IPoint           pt      = geoFact.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                        pt.X = mp.X; pt.Y = mp.Y; pt.Z = mp.Z;

                        ITableLabel tl = DrawTool.CreateTableLabel1(1);
                        tl.TitleText = dr["fcName"].ToString();
                        tl.SetRecord(0, 0, dr["Name"].ToString());
                        tl.Position = pt;

                        this._listRender.Add(tl.Guid);

                        app.Current3DMapControl.Camera.FlyToObject(tl.Guid, gviActionCode.gviActionFlyTo);
                    }
                }
                break;
            }
        }
Esempio n. 16
0
 /// <summary>
 /// 将当前renderModelPoint所在的位置插入MotionPath中
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnInsertWaypoint_Click(object sender, EventArgs e)
 {
     if (renderModelPoint != null)
     {
         IModelPoint modelPoint = renderModelPoint.GetFdeGeometry() as IModelPoint;
         IMatrix     matrix     = new Matrix();
         matrix = modelPoint.AsMatrix();
         motionPath.AddWaypointByMatrix(matrix, motionPath.TotalDuration + 4);
     }
 }
Esempio n. 17
0
        private void LoadData()
        {
            if (geoFactory == null)
            {
                geoFactory = new GeometryFactory();
            }

            string      modelName  = (strMediaPath + @"\osg\Schemes\scheme-01.osg");
            IModelPoint modelPoint = (IModelPoint)geoFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ);

            modelPoint.ModelName = modelName;
            modelPoint.SetCoords(dx, dy, dz + 15, 0, 0);
            modelPoint.SpatialCRS         = _datasetCRS;
            renderModelPoint1             = axRenderControl1.ObjectManager.CreateRenderModelPoint(modelPoint, null, rootId);
            renderModelPoint1.VisibleMask = gviViewportMask.gviView0;
            IVector3 position = new Vector3();

            position.Set(dx, dy, dz);
            IPoint point = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ);

            point.SpatialCRS = _datasetCRS;
            point.SetCoords(position.X, position.Y, position.Z, 0, 0);
            IEulerAngle angle = new EulerAngle();

            angle.Set(0, -20, 0);
            axRenderControl1.Camera.LookAt2(point, 300, angle);

            modelName            = (strMediaPath + @"\osg\Schemes\scheme-02.osg");
            modelPoint           = (IModelPoint)geoFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ);
            modelPoint.ModelName = modelName;
            modelPoint.SetCoords(dx, dy, dz - 15, 0, 0);
            modelPoint.SpatialCRS         = _datasetCRS;
            renderModelPoint2             = axRenderControl1.ObjectManager.CreateRenderModelPoint(modelPoint, null, rootId);
            renderModelPoint2.VisibleMask = gviViewportMask.gviView1;


            modelName            = (strMediaPath + @"\osg\Schemes\scheme-03.osg");
            modelPoint           = (IModelPoint)geoFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ);
            modelPoint.ModelName = modelName;
            modelPoint.SetCoords(dx, dy, dz - 10, 0, 0);
            modelPoint.SpatialCRS         = _datasetCRS;
            renderModelPoint3             = axRenderControl1.ObjectManager.CreateRenderModelPoint(modelPoint, null, rootId);
            renderModelPoint3.VisibleMask = gviViewportMask.gviView2;


            modelName            = (strMediaPath + @"\osg\Schemes\scheme-04.osg");
            modelPoint           = (IModelPoint)geoFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ);
            modelPoint.ModelName = modelName;
            modelPoint.SetCoords(dx, dy, dz - 13, 0, 0);
            modelPoint.SpatialCRS         = _datasetCRS;
            renderModelPoint4             = axRenderControl1.ObjectManager.CreateRenderModelPoint(modelPoint, null, rootId);
            renderModelPoint4.VisibleMask = gviViewportMask.gviView3;
        }
Esempio n. 18
0
        private IModelPoint GetModel(IFeatureClass fc, string geoFieldName, int oid)
        {
            IModelPoint result = null;
            IRowBuffer  row    = fc.GetRow(oid);
            int         num    = row.FieldIndex(geoFieldName);

            if (num != -1)
            {
                result = (row.GetValue(num) as IModelPoint);
            }
            return(result);
        }
Esempio n. 19
0
        /// <summary>
        /// 加载模型
        /// </summary>
        private void LoadModel()
        {
            string           modelName  = (strMediaPath + @"\osg\Vehicles\XiaoFangChe\xiaoFangChe3.OSG");
            IGeometryFactory geoFactory = new GeometryFactory();
            IModelPoint      modelPoint = (IModelPoint)geoFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ);

            modelPoint.ModelName = modelName;
            modelPoint.SetCoords(firstX, firstY, firstZ, 0, 0);
            modelPoint.SpatialCRS        = datasetCRS;
            renderModelPoint             = CommonUnity.RenderHelper.ObjectManager.CreateRenderModelPoint(modelPoint, null, rootId);
            renderModelPoint.VisibleMask = gviViewportMask.gviViewAllNormalView;
        }
Esempio n. 20
0
 public void Set3DModelFilePath(string filePath)
 {
     this._filePath = filePath;
     if (System.IO.File.Exists(this._filePath))
     {
         IModelPoint mp = this._geoFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, Gvitech.CityMaker.FdeGeometry.gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
         mp.SetCoords(0, 0, 0, 0, 0);
         mp.ModelName          = this._filePath;
         this._rmp             = this._3DControl.ObjectManager.CreateRenderModelPoint(mp, null, this._rootID);
         this._rmp.VisibleMask = gviViewportMask.gviViewAllNormalView;
         this._3DControl.ObjectEditor.StartEditRenderGeometry(this._rmp, gviGeoEditType.gviGeoEditCreator);
     }
 }
Esempio n. 21
0
        //public override bool Draw(out IModelPoint mp, out IModel fmodel, out IModel smodel)
        //{
        //    int[] index = null;
        //    base.Draw(out mp, out fmodel, out smodel);
        //    try
        //    {
        //        IDrawGroup group;
        //        if ((base._vtx.Length == 4) && (base._sections.Length == 4))
        //        {
        //            index = new int[] { 0, 1, 2, 3 };
        //            if (!PipeSection.SetConnectIndex(base._sections, base._vtx, out index))
        //            {
        //                return false;
        //            }
        //            if (!DrawGeometry.Compare(base._vtx[index[0]][0], base._vtx[index[1]][0], false))
        //            {
        //                return false;
        //            }
        //            object renderInfo = (base._renderType == RenderType.Texture) ? ((object)base._tcNames) : ((object)base._colors);
        //            int[] numArray2 = new int[3];
        //            numArray2[1] = 1;
        //            numArray2[2] = 2;
        //            if (base.NewEmptyModel(numArray2, base._renderType, renderInfo, out fmodel))
        //            {
        //                int[] numArray3 = new int[1];
        //                if (base.NewEmptyModel(numArray3, base._renderType, renderInfo, out smodel))
        //                {
        //                    goto Label_00DF;
        //                }
        //            }
        //        }
        //        return false;
        //    Label_00DF:
        //        group = null;
        //        group = fmodel.GetGroup(0);
        //        IDrawPrimitive primitive = group.GetPrimitive(0);
        //        group.GetPrimitive(1);
        //        group.GetPrimitive(2);
        //        IDrawPrimitive primitive2 = smodel.GetGroup(0).GetPrimitive(0);
        //        base.DrawConBetween(new Vector[][] { base._vtx[index[0]], base._vtx[index[1]] }, new IPipeSection[] { base._sections[index[0]], base._sections[index[1]] }, ref fmodel);
        //        base.DrawConSingle(base._vtx[index[2]], base._sections[index[2]], ref fmodel);
        //        base.DrawConSingle(base._vtx[index[3]], base._sections[index[3]], ref fmodel);
        //        primitive2.Material.CullMode = gviCullFaceMode.gviCullNone;
        //        primitive2.VertexArray = primitive.VertexArray;
        //        primitive2.NormalArray = primitive.NormalArray;
        //        primitive2.TexcoordArray = primitive.TexcoordArray;
        //        primitive2.IndexArray = primitive.IndexArray;
        //        return true;
        //    }
        //    catch (Exception exception)
        //    {
        //        SystemLog.Instance.Log(exception.StackTrace);
        //        return false;
        //    }
        //}
        #endregion

        #region 单壁绘制--冯欣修改20131101
        public override bool Draw(out IModelPoint mp, out IModel fmodel, out IModel smodel)
        {
            int[] index = null;
            base.Draw(out mp, out fmodel, out smodel);
            try
            {
                IDrawGroup group;
                if ((base._vtx.Length == 4) && (base._sections.Length == 4))
                {
                    index = new int[] { 0, 1, 2, 3 };
                    if (!PipeSection.SetConnectIndex(base._sections, base._vtx, out index))
                    {
                        return(false);
                    }
                    if (!DrawGeometry.Compare(base._vtx[index[0]][0], base._vtx[index[1]][0], false))
                    {
                        return(false);
                    }
                    object renderInfo = (base._renderType == RenderType.Texture) ? ((object)base._tcNames) : ((object)base._colors);
                    int[]  numArray2  = new int[1];
                    if (base.NewEmptyModel(numArray2, base._renderType, renderInfo, out fmodel))
                    {
                        int[] numArray3 = new int[1];
                        if (base.NewEmptyModel(numArray3, base._renderType, renderInfo, out smodel))
                        {
                            goto Label_00DF;
                        }
                    }
                }
                return(false);

Label_00DF:
                group = null;
                group = fmodel.GetGroup(0);
                IDrawPrimitive primitive  = group.GetPrimitive(0);
                IDrawPrimitive primitive2 = smodel.GetGroup(0).GetPrimitive(0);
                base.DrawConBetween(new Vector[][] { base._vtx[index[0]], base._vtx[index[1]] }, new IPipeSection[] { base._sections[index[0]], base._sections[index[1]] }, ref fmodel);
                base.DrawConSingle(base._vtx[index[2]], base._sections[index[2]], ref fmodel);
                base.DrawConSingle(base._vtx[index[3]], base._sections[index[3]], ref fmodel);
                primitive2.Material.CullMode = gviCullFaceMode.gviCullNone;
                primitive2.VertexArray       = primitive.VertexArray;
                primitive2.NormalArray       = primitive.NormalArray;
                primitive2.TexcoordArray     = primitive.TexcoordArray;
                primitive2.IndexArray        = primitive.IndexArray;
                return(true);
            }
            catch (Exception exception)
            {
                return(false);
            }
        }
Esempio n. 22
0
        public static void TestDrawTriMesh(IModelPoint mp, IModel model)
        {
            ISurfaceSymbol symbol = (SurfaceSymbol)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("4D5F0624-50A1-43E2-A0EC-A9713CB25608")));

            symbol.Color = 0xff0000ff;
            ICurveSymbol symbol2 = (CurveSymbol)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("E02C69C4-828D-40D5-869D-DAEB189B7F6F")));

            symbol2.Color         = 0xffff0000;
            symbol.BoundarySymbol = symbol2;
            IMultiPolygon multiPolygon = geoFactory.CreateGeometry(gviGeometryType.gviGeometryMultiPolygon, gviVertexAttribute.gviVertexAttributeZ) as IMultiPolygon;

            if (multiPolygon != null)
            {
                IPolygon geometry   = null;
                IPoint   pointValue = null;
                for (int i = 0; i < model.GroupCount; i++)
                {
                    IDrawGroup group = model.GetGroup(i);
                    for (int j = 0; j < group.PrimitiveCount; j++)
                    {
                        IDrawPrimitive primitive = group.GetPrimitive(j);
                        for (int k = 0; k < (primitive.IndexArray.Length / 3); k++)
                        {
                            geometry     = geoFactory.CreateGeometry(gviGeometryType.gviGeometryPolygon, gviVertexAttribute.gviVertexAttributeZ) as IPolygon;
                            pointValue   = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                            pointValue.X = mp.X + primitive.VertexArray.Array[primitive.IndexArray.Array[k * 3] * 3];
                            pointValue.Y = mp.Y + primitive.VertexArray.Array[(primitive.IndexArray.Array[k * 3] * 3) + 1];
                            pointValue.Z = mp.Z + primitive.VertexArray.Array[(primitive.IndexArray.Array[k * 3] * 3) + 2];
                            geometry.ExteriorRing.AppendPoint(pointValue);
                            pointValue   = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                            pointValue.X = mp.X + primitive.VertexArray.Array[primitive.IndexArray.Array[(k * 3) + 1] * 3];
                            pointValue.Y = mp.Y + primitive.VertexArray.Array[(primitive.IndexArray.Array[(k * 3) + 1] * 3) + 1];
                            pointValue.Z = mp.Z + primitive.VertexArray.Array[(primitive.IndexArray.Array[(k * 3) + 1] * 3) + 2];
                            geometry.ExteriorRing.AppendPoint(pointValue);
                            pointValue   = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                            pointValue.X = mp.X + primitive.VertexArray.Array[primitive.IndexArray.Array[(k * 3) + 2] * 3];
                            pointValue.Y = mp.Y + primitive.VertexArray.Array[(primitive.IndexArray.Array[(k * 3) + 2] * 3) + 1];
                            pointValue.Z = mp.Z + primitive.VertexArray.Array[(primitive.IndexArray.Array[(k * 3) + 2] * 3) + 2];
                            geometry.ExteriorRing.AppendPoint(pointValue);
                            geometry.Close();
                            multiPolygon.AddGeometry(geometry);
                        }
                    }
                }
                IRenderMultiPolygon item = Ocx.ObjectManager.CreateRenderMultiPolygon(multiPolygon, symbol, Ocx.ProjectTree.RootID);
                item.MaxVisibleDistance = 5000000.0;
                tmpList.Add(item);
            }
        }
Esempio n. 23
0
        /// <summary>
        /// 原代码
        /// </summary>
        //public override bool Draw(out IModelPoint mp, out IModel fmodel, out IModel smodel)
        //{
        //    base.Draw(out mp, out fmodel, out smodel);
        //    try
        //    {
        //        IDrawGroup group;
        //        if ((base._vtx.Length == 1) && (base._sections.Length == 1))
        //        {
        //            object renderInfo = (base._renderType == RenderType.Texture) ? ((object)base._tcNames) : ((object)base._colors);
        //            int[] index = new int[3];
        //            index[1] = 1;
        //            index[2] = 2;
        //            if (base.NewEmptyModel(index, base._renderType, renderInfo, out fmodel))
        //            {
        //                int[] numArray2 = new int[1];
        //                if (base.NewEmptyModel(numArray2, base._renderType, renderInfo, out smodel))
        //                {
        //                    goto Label_0086;
        //                }
        //            }
        //        }
        //        return false;
        //    Label_0086:
        //        group = null;
        //        group = fmodel.GetGroup(0);
        //        IDrawPrimitive primitive = group.GetPrimitive(0);
        //        group.GetPrimitive(1);
        //        group.GetPrimitive(2);
        //        IDrawPrimitive primitive2 = smodel.GetGroup(0).GetPrimitive(0);
        //        base.DrawConSingle(base._vtx[0], base._sections[0], ref fmodel);
        //        primitive2.Material.CullMode = gviCullFaceMode.gviCullNone;
        //        primitive2.VertexArray = primitive.VertexArray;
        //        primitive2.NormalArray = primitive.NormalArray;
        //        primitive2.TexcoordArray = primitive.TexcoordArray;
        //        primitive2.IndexArray = primitive.IndexArray;
        //        return true;
        //    }
        //    catch (Exception exception)
        //    {
        //        SystemLog.Instance.Log(exception.StackTrace);
        //        return false;
        //    }
        //}
        /// <summary>
        /// 单面封口绘制 FX 2014.04.04
        /// </summary>
        public override bool Draw(out IModelPoint mp, out IModel fmodel, out IModel smodel)
        {
            base.Draw(out mp, out fmodel, out smodel);
            try
            {
                IDrawGroup group;
                if ((base._vtx.Length == 1) && (base._sections.Length == 1))
                {
                    object renderInfo = (base._renderType == RenderType.Texture) ? ((object)base._tcNames) : ((object)base._colors);
                    int[]  index      = new int[2];
                    index[1] = 1;
                    // 调整封口处颜色 与管壁颜色一致
                    uint[] numArray1 = renderInfo as uint[];
                    if (numArray1.Length > 1)
                    {
                        for (int i = 1; i < numArray1.Length; i++)
                        {
                            numArray1[i] = numArray1[0];
                        }
                    }
                    if (base.NewEmptyModel(index, base._renderType, renderInfo, out fmodel))
                    {
                        int[] numArray2 = new int[1];
                        if (base.NewEmptyModel(numArray2, base._renderType, renderInfo, out smodel))
                        {
                            goto Label_0086;
                        }
                    }
                }
                return(false);

Label_0086:
                group = null;
                group = fmodel.GetGroup(0);
                IDrawPrimitive primitive  = group.GetPrimitive(0);
                IDrawPrimitive primitive2 = smodel.GetGroup(0).GetPrimitive(0);
                base.DrawConSingle1(base._vtx[0], base._sections[0], ref fmodel);
                primitive2.Material.CullMode = gviCullFaceMode.gviCullNone;
                primitive2.VertexArray       = primitive.VertexArray;
                primitive2.NormalArray       = primitive.NormalArray;
                primitive2.TexcoordArray     = primitive.TexcoordArray;
                primitive2.IndexArray        = primitive.IndexArray;
                return(true);
            }
            catch (Exception exception)
            {
                return(false);
            }
        }
Esempio n. 24
0
        public virtual IModelPoint GetModelPoint()
        {
            IModelPoint point = geoFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;

            if (point == null)
            {
                return(null);
            }
            point.ModelName = this._modelname;
            point.SetCoords(this._x, this._y, this._z, double.NaN, -1);
            point.SelfScale(this._scaleX, this._scaleY, this._scaleZ);
            point.SelfRotate(1.0, 0.0, 0.0, this._rotateX);
            point.SelfRotate(0.0, 1.0, 0.0, this._rotateY);
            point.SelfRotate(0.0, 0.0, 1.0, this._rotateZ);
            return(point);
        }
Esempio n. 25
0
        public bool DrawModel(out GvitechModelPoint mp, GvitechModel fmodel, GvitechModel smodel)
        {
            mp     = null;
            fmodel = null;
            smodel = null;
            IModelPoint point  = null;
            IModel      model  = null;
            IModel      model2 = null;

            if (!this.Draw(out point, out model, out model2))
            {
                return(false);
            }
            mp     = new GvitechModelPoint(point);
            fmodel = (model == null) ? null : new GvitechModel(model);
            smodel = (model2 == null) ? null : new GvitechModel(model2);
            return(true);
        }
Esempio n. 26
0
        private void LoadSkinMeshAndViewshed()
        {
            string fileName = (strMediaPath + @"\x\Character\QiYeYuanGong.X");

            if (skinMesh == null)
            {
                // 构造ModelPoint
                IGeometryFactory gf = new GeometryFactory();
                IModelPoint      mp = gf.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;
                mp.ModelName  = fileName;
                mp.SpatialCRS = new CRSFactory().CreateFromWKT(wkt) as ISpatialCRS;
                // 设置位置
                IMatrix matrix = new Matrix();
                matrix.MakeIdentity();
                matrix.SetTranslate(line.GetPoint(0).Position);
                mp.FromMatrix(matrix);
                // 创建骨骼动画
                skinMesh = this.axRenderControl1.ObjectManager.CreateSkinnedMesh(mp, rootId);
                if (skinMesh == null)
                {
                    MessageBox.Show("骨骼动画创建失败!");
                    return;
                }
                skinMesh.Loop = true;
                skinMesh.Play();
                skinMesh.MaxVisibleDistance = 1000;
                skinMesh.ViewingDistance    = 50;

                // 绑定到运动路径
                IMotionable m = skinMesh as IMotionable;
                position.Set(0, 0, 0);
                m.Bind2(dynamicObject, position, 0, 0, 0);
                this.axRenderControl1.Camera.FlyToObject(skinMesh.Guid, gviActionCode.gviActionFollowBehind);
            }

            if (tv == null)
            {
                tv = this.axRenderControl1.ObjectManager.CreateViewshed(line.GetPoint(0), rootId);
                IMotionable tvm = tv as IMotionable;
                position.Set(0, 0, 0);
                tvm.Bind2(dynamicObject, position, 0, 0, 0);
            }
        }
Esempio n. 27
0
 public static void TestDrawModel(IModelPoint mp, IModel model, List <string> filesPath)
 {
     if ((mp != null) && (model != null))
     {
         string str      = Application.StartupPath + @"\..\temp";
         string str2     = Path.Combine(str, "osg");
         string filePath = string.Format(@"{0}\{1}.osg", str2, mp.ModelName);
         if (!Directory.Exists(str))
         {
             Directory.CreateDirectory(str);
         }
         if (!Directory.Exists(str2))
         {
             Directory.CreateDirectory(str2);
         }
         IPropertySet images = null;
         IImage       image  = null;
         string       key    = string.Empty;
         images = new PropertySetClass();
         if (filesPath != null)
         {
             foreach (string str5 in filesPath)
             {
                 if (File.Exists(str5) || Directory.Exists(str5))
                 {
                     key   = Path.GetFileNameWithoutExtension(str5);
                     image = resFactory.CreateImageFromFile(str5);
                     images.SetProperty(key, image);
                 }
             }
         }
         model.WriteFile(filePath, images);
         IModelPointSymbol symbol = (ModelPointSymbol)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("6BCF8C9B-E506-43AE-AD6E-44A41D748431")));
         symbol.Color     = 0xaaaaaaaa;
         mp.ModelName     = filePath;
         mp.ModelEnvelope = model.Envelope;
         IRenderModelPoint item = Ocx.ObjectManager.CreateRenderModelPoint(mp, symbol, Ocx.ProjectTree.RootID);
         item.MaxVisibleDistance = 500000.0;
         tmpList.Add(item);
         Ocx.Camera.LookAtEnvelope(item.Envelope);
     }
 }
Esempio n. 28
0
        /// <summary>
        /// 创建并加载点云
        /// </summary>
        /// <returns></returns>
        IRenderModelPoint CreatePointCloud()
        {
            //准备容器
            IModel         model         = new ResourceFactory().CreateModel();
            IDrawGroup     drawGroup     = new DrawGroup();
            IDrawPrimitive drawPrimitive = new DrawPrimitive();
            IFloatArray    verList       = new FloatArray();  //点集
            IUInt32Array   colorList     = new UInt32Array(); //点色

            //点坐标
            float x = 3.3f, y = 4.4f, z = 5.5f;
            //点色
            byte a = 128, r = 255, g = 255, b = 255;
            uint col = (uint)(b | g << 8 | r << 16 | a << 24); //argb => uint

            for (int i = 0; i < 10; i++)
            {
                verList.Append(x);
                verList.Append(y);
                verList.Append(z);
                colorList.Append(col);
            }

            //塞入容器
            drawPrimitive.VertexArray          = verList;
            drawPrimitive.ColorArray           = colorList;
            drawPrimitive.Material.EnableBlend = false;                                     //关闭融合
            drawPrimitive.Material.EnableLight = false;                                     //关闭光照
            drawPrimitive.PrimitiveMode        = gviPrimitiveMode.gviPrimitiveModeLineList; //设置绘制模式为点
            drawGroup.AddPrimitive(drawPrimitive);                                          //塞入渲染组
            model.AddGroup(drawGroup);                                                      //塞入model
            axRenderControl.ObjectManager.AddModel("modelName", model);                     //塞入三维对象,与modelPoint通过名称匹配

            //创建modelPoint,用于索引模型
            IModelPoint mp = (IModelPoint) new GeometryFactory().CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ);

            mp.SpatialCRS    = (SpatialCRS)CRSFactory.CreateFromWKT("wkt");                     //设置坐标系
            mp.ModelEnvelope = model.Envelope;                                                  // 排除不显示BUG
            mp.SetCoords(3.3, 4.4, 5.5, 0, 0);
            mp.ModelName = "modelName";                                                         //匹配模型
            return(axRenderControl.ObjectManager.CreateRenderModelPoint(mp, null, Guid.Empty)); //创建完成
        }
Esempio n. 29
0
        private void tsb_Update_Click(object sender, EventArgs e)
        {
            this.cmdManager.StartCommand();

            //获取当前选中要素,将其放大一倍,作为新的行进行更新
            IRowBuffer row = curSelectFc.GetRow(curSelectFid);
            int geoPos = curSelectFc.GetFields().IndexOf("Geometry");
            if (geoPos != -1)
            {
                IModelPoint geo = row.GetValue(geoPos) as IModelPoint;
                geo.SelfScale(2, 2, 2);
                row.SetValue(geoPos, geo);
            }

            this.cmdManager.UpdateFeature(curSelectFc as IObjectClass, row);
            this.axRenderControl1.FeatureManager.EditFeature(curSelectFc, row);

            this.tsb_Redo.Enabled = this.cmdManager.CanRedo;
            this.tsb_Undo.Enabled = this.cmdManager.CanUndo;
            this.tsb_Update.Enabled = false;
        }
Esempio n. 30
0
        // 创建车模型
        private void CreateCarModelPoint()
        {
            string carImgPath = Path.Combine(Environment.CurrentDirectory, @"data\TrashCar\SSCMX01.osg");

            try
            {
                IModelPoint mp = (IModelPoint)_geoFactory.CreateGeometry(i3dGeometryType.i3dGeometryModelPoint, i3dVertexAttribute.i3dVertexAttributeZ);
                mp.ModelName  = carImgPath;
                mp.SpatialCRS = _spatialCRS;
                mp.SetCoords(121.27170, 31.17965, 1.5, 0, 0);
                CarRmp = _axRenderControl.ObjectManager.CreateRenderModelPoint(mp, null);
                CarRmp.MaxVisibleDistance = 15000;
                CarRmp.MinVisiblePixels   = 10;
                CarRmp.ClientData         = "111";
            }
            catch (Exception e)
            {
                LoggerHelper.Logger.Error(e, "执行SetCarModelPoint错误");
                throw e;
            }
        }