Ejemplo n.º 1
0
        private void ExportOrthoImage()
        {
            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter     = "Image Files(*.BMP)|*.BMP|Image Files(*.PNG)|*.PNG|Image Files(*.JPG)|*.JPG";
            dlg.DefaultExt = ".bmp";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                IPoint center = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                center.SpatialCRS = dataset.SpatialReference;
                center.SetCoords(env.Center.X, env.Center.Y, env.Center.Z, 0, 0);
                IVector3    position = new Vector3();
                IEulerAngle angle    = new EulerAngle();
                this.axRenderControl1.Camera.GetCamera(out position, out angle);
                IEnvelope newEnv = new Envelope();     //newEnv表示相机出图范围
                newEnv.MinX = env.MinX - env.Center.X; //偏移到原点处
                newEnv.MaxX = env.MaxX - env.Center.X;
                newEnv.MinY = env.MinY - env.Center.Y;
                newEnv.MaxY = env.MaxY - env.Center.Y;
                newEnv.MinZ = -100;  //相机出图深度
                newEnv.MaxZ = 100;
                bool b = this.axRenderControl1.ExportManager.ExportOrthoImage(dlg.FileName, 1024, center, angle, newEnv, false, System.Drawing.Color.Blue);
                if (!b)
                {
                    MessageBox.Show("错误码为:" + this.axRenderControl1.GetLastError().ToString());
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 单击表格记录进行变色和定位
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            foreach (string key in rowMap.Keys)
            {
                RowObject     r   = rowMap[key];
                int           fid = int.Parse(r.FID);
                IFeatureClass fc  = r.FeatureClass as IFeatureClass;
                this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Red);
            }
            DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];

            if (row != null)
            {
                string        fid = row.Cells["FID"].Value.ToString();
                IFeatureClass fc  = row.Cells["FID"].Tag as IFeatureClass;
                this.axRenderControl1.FeatureManager.HighlightFeature(fc, int.Parse(fid), System.Drawing.Color.Blue);
                IEnvelope   evn   = rowMap[fid].Envelop;
                IEulerAngle angle = new EulerAngle();
                angle.Set(0, -90, 0);
                if (geoFactory == null)
                {
                    geoFactory = new GeometryFactory();
                }
                IPoint pos = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                pos.SpatialCRS = datasetCRS;
                pos.Position   = evn.Center;
                this.axRenderControl1.Camera.LookAt2(pos, 1000, angle);
            }
        }
Ejemplo n.º 4
0
        private void numSunDirection_ValueChanged(object sender, EventArgs e)
        {
            IEulerAngle angle = new EulerAngle();

            angle.Set(double.Parse(numHeading.Value.ToString()), double.Parse(numTilt.Value.ToString()), 0);
            axRenderControl1.SunConfig.SetSunEuler(angle);
        }
Ejemplo n.º 5
0
        private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            int           featureId       = int.Parse((sender as DataGridView).CurrentRow.Cells[0].Value.ToString());
            IFeatureClass curFeatureClass = null;

            foreach (IFeatureClass fc in fcMap.Keys)
            {
                curFeatureClass = fc;
                IRowBuffer fdeRow = curFeatureClass.GetRow(featureId);
                if (fdeRow != null)
                {
                    int nPos = fdeRow.FieldIndex("Geometry");
                    if (nPos != -1 && !fdeRow.IsNull(nPos))
                    {
                        IPOI   mp  = fdeRow.GetValue(nPos) as IPOI; // 从库中读取值
                        IPoint pos = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                        pos.Position   = mp.Position;
                        pos.SpatialCRS = mp.SpatialCRS;
                        IEulerAngle angle = new EulerAngle();
                        angle.Heading = 0;
                        angle.Tilt    = -60;
                        angle.Roll    = 0;
                        this.axRenderControl1.Camera.LookAt2(pos, 3000, angle);
                        this.axRenderControl1.FeatureManager.UnhighlightAll();
                        this.axRenderControl1.FeatureManager.HighlightFeature(curFeatureClass, int.Parse(fdeRow.GetValue(0).ToString()), System.Drawing.Color.Yellow);

                        mp.ImageName = (strMediaPath + @"\png\lan.png");
                        IRenderPOI rpoi = this.axRenderControl1.ObjectManager.CreateRenderPOI(mp);
                        rpoi.Highlight(System.Drawing.Color.Red);
                        this.axRenderControl1.ObjectManager.DelayDelete(rpoi.Guid, 60000);
                    }
                }
            }
        }
Ejemplo n.º 6
0
 private void SetAngle(EulerAngle angle)
 {
     transform.localRotation = Quaternion.Euler(
         (float)angle.XAngle,
         (float)angle.YAngle,
         (float)angle.ZAngle);
 }
Ejemplo n.º 7
0
        private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            try
            {
                if (this.listView1.SelectedItems.Count == 0)
                {
                    return;
                }
                myListNode item = (myListNode)this.listView1.SelectedItems[0];
                item.Checked = true;
                //this.axRenderControl1.Camera.LookAtEnvelope(item.layer.Envelope);

                IEnvelope env = item.layer.Envelope;
                if (env == null || (env.MaxX == 0.0 && env.MaxY == 0.0 && env.MaxZ == 0.0 &&
                                    env.MinX == 0.0 && env.MinY == 0.0 && env.MinZ == 0.0))
                {
                    return;
                }
                IEulerAngle angle = new EulerAngle();
                angle.Set(0, -20, 0);
                this.axRenderControl1.Camera.LookAt(env.Center, 500, angle);
            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(ex.Message);
            }
        }
Ejemplo n.º 8
0
 public BoneViewModel(RigEditorViewModel rig, IHaveBones parent, RigResource.RigResource.Bone bone, BoneManager manager)
 {
     if (rig == null)
     {
         throw new ArgumentNullException("rig");
     }
     if (bone == null)
     {
         throw new ArgumentNullException("bone");
     }
     if (manager == null)
     {
         throw new ArgumentNullException("manager");
     }
     mRig      = rig;
     mChildren = new ObservableCollection <BoneViewModel>();
     mParent   = parent;
     mBone     = bone;
     mManager  = manager;
     foreach (RigResource.RigResource.Bone b in manager.GetChildren(mBone))
     {
         mChildren.Add(new BoneViewModel(mRig, this, b, mManager));
     }
     mRotation                  = new EulerAngle(new Quaternion(bone.Orientation.A, bone.Orientation.B, bone.Orientation.C, bone.Orientation.D));
     manager.BoneAdded         += OnBoneAdded;
     manager.BoneRemoved       += OnBoneRemoved;
     manager.BoneParentChanged += OnBoneParentChanged;
     mSetOppositeCommand        = new UserCommand <BoneViewModel>(x => true, ExecuteSetOpposite);
 }
Ejemplo n.º 9
0
        private IEulerAngle SetAngle(double heading, double tilt, double roll)
        {
            IEulerAngle angle = new EulerAngle();

            angle.Set(heading, tilt, roll);
            return(angle);
        }
Ejemplo n.º 10
0
        private void CreateFeautureLayer()
        {
            bool hasfly = false;

            foreach (FeatureClass fc in featureClassMapping.Keys)
            {
                List <string> geoNames = featureClassMapping[fc];
                foreach (string geoName in geoNames)
                {
                    if (!geoName.Equals("Geometry"))
                    {
                        continue;
                    }
                    IFeatureLayer featureLayer = _axRenderControl.ObjectManager.CreateFeatureLayer(fc, geoName, null, null);
                    if (!hasfly)
                    {
                        IFieldInfoCollection fieldinfos  = fc.GetFields();
                        IFieldInfo           fieldinfo   = fieldinfos.Get(fieldinfos.IndexOf(geoName));
                        IGeometryDef         geometryDef = fieldinfo.GeometryDef;
                        IEnvelope            env         = geometryDef.Envelope;
                        if (env == null || (env.MaxX == 0.0 && env.MaxY == 0.0 && env.MaxZ == 0.0 && env.MinX == 0.0 && env.MinY == 0.0 && env.MinZ == 0.0))
                        {
                            continue;
                        }

                        EulerAngle angle = new EulerAngle();
                        angle.Set(0, -20, 0);
                        _axRenderControl.Camera.LookAt(env.Center, 1000, angle);
                    }
                    hasfly = true;
                }
            }
        }
Ejemplo n.º 11
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            // 初始化RenderControl控件
            IPropertySet ps = new PropertySet();

            ps.SetProperty("RenderSystem", gviRenderSystem.gviRenderOpenGL);
            this.axRenderControl1.Initialize(true, ps);

            rootId = this.axRenderControl1.ObjectManager.GetProjectTree().RootID;
            this.axRenderControl1.Camera.FlyTime = 1;

            // 设置天空盒

            if (System.IO.Directory.Exists(strMediaPath))
            {
                string  tmpSkyboxPath = strMediaPath + @"\skybox";
                ISkyBox skybox        = this.axRenderControl1.ObjectManager.GetSkyBox(0);
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBack, tmpSkyboxPath + "\\1_BK.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBottom, tmpSkyboxPath + "\\1_DN.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageFront, tmpSkyboxPath + "\\1_FR.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageLeft, tmpSkyboxPath + "\\1_LF.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageRight, tmpSkyboxPath + "\\1_RT.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageTop, tmpSkyboxPath + "\\1_UP.jpg");
            }
            else
            {
                MessageBox.Show("请不要随意更改SDK目录名");
                return;
            }

            string       tmpTdbPath = (strMediaPath + @"\sdk.tdb");
            I3DTileLayer tilelayer  = this.axRenderControl1.ObjectManager.Create3DTileLayer(tmpTdbPath, "", rootId);

            if (tilelayer != null)
            {
                IVector3 pos = new Vector3();
                pos.Set(15404.97, 35575.28, 59);
                IEulerAngle ang = new EulerAngle();
                ang.Set(0, -30, 0);
                this.axRenderControl1.Camera.LookAt(pos, 10, ang);
            }
            else
            {
                this.Text = "tilelayer create failed!";
            }

            this.comboBox1.SelectedIndex = 2;

            this.axRenderControl1.RcCameraFlyFinished += new _IRenderControlEvents_RcCameraFlyFinishedEventHandler(axRenderControl1_RcCameraFlyFinished);



            {
                this.helpProvider1.SetShowHelp(this.axRenderControl1, true);
                this.helpProvider1.SetHelpString(this.axRenderControl1, "");
                this.helpProvider1.HelpNamespace = "WalkGround.html";
            }
        }
Ejemplo n.º 12
0
 /// <summary>
 /// 姿态数据更新,roll水平移动,pitch竖直移动
 /// </summary>
 /// <param name="upperArmOffsetThisTime">本次大臂偏移角度</param>
 /// <param name="foreArmOffsetThisTime">本次小臂偏移角度</param>
 private void OnGestureUpdated(EulerAngle upperArmOffsetThisTime, EulerAngle foreArmOffsetThisTime)
 {
     this.Invoke(new MethodInvoker(delegate()
     {
         this.lbroll1.Text  = upperArmOffsetThisTime.Roll.ToString();
         this.lbPitch1.Text = upperArmOffsetThisTime.Pitch.ToString(); this.lbYaw1.Text = upperArmOffsetThisTime.Yaw.ToString(); this.lbRoll2.Text = foreArmOffsetThisTime.Roll.ToString(); this.lbPitch2.Text = foreArmOffsetThisTime.Pitch.ToString(); this.lbYaw2.Text = foreArmOffsetThisTime.Yaw.ToString();//打印根据传感器角速度计算的偏移量
     }));
     _robotHandler.MoveArm(upperArmOffsetThisTime.Pitch, upperArmOffsetThisTime.Yaw, upperArmOffsetThisTime.Roll, foreArmOffsetThisTime.Pitch, foreArmOffsetThisTime.Yaw, foreArmOffsetThisTime.Roll);
 }
Ejemplo n.º 13
0
 public static string ToEuler(Quaternion q, bool flip)
 {
     var matrix = new Matrix(new s3piwrappers.RigEditor.Geometry.Quaternion(q.A, q.B, q.C, q.D));
     var euler = new EulerAngle(matrix);
     if (flip)
     {
         euler = new EulerAngle(0, 0, Math.PI/2);
     }
     return String.Format("{0:F10} {1:F10} {2:F10}", euler.Roll, euler.Yaw, euler.Pitch);
 }
Ejemplo n.º 14
0
        private void btnFlyToFeatureLayer_Click(object sender, EventArgs e)
        {
            IVector3 position = new Vector3();

            position.Set(envX, envY, envZ);
            IEulerAngle angle = new EulerAngle();

            angle.Set(0, -20, 0);
            this.axRenderControl1.Camera.LookAt(position, 800, angle);
        }
Ejemplo n.º 15
0
        private void seTilt_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
        {
            if (app == null || app.Current3DMapControl == null)
            {
                return;
            }
            IEulerAngle ang = new EulerAngle();

            ang.Set(Convert.ToDouble(this.seHeading.EditValue), Convert.ToDouble(this.seTilt.EditValue), 0);
            app.Current3DMapControl.SunConfig.SetSunEuler(ang);
        }
Ejemplo n.º 16
0
 public Node()
 {
     Children = new Dictionary <Node, Vector3>();
     Position = new Vector3();
     Limit    = new Range <EulerAngle>
     {
         Min = new EulerAngle(-180, -180, -180),
         Max = new EulerAngle(180, 180, 180)
     };
     Angle = new EulerAngle();
 }
Ejemplo n.º 17
0
        public static string ToEuler(Quaternion q, bool flip)
        {
            var matrix = new Matrix(new s3piwrappers.RigEditor.Geometry.Quaternion(q.A, q.B, q.C, q.D));
            var euler  = new EulerAngle(matrix);

            if (flip)
            {
                euler = new EulerAngle(0, 0, Math.PI / 2);
            }
            return(String.Format("{0:F10} {1:F10} {2:F10}", euler.Roll, euler.Yaw, euler.Pitch));
        }
Ejemplo n.º 18
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;
        }
Ejemplo n.º 19
0
 public Quaternion(EulerAngle e)
 {
     double c1 = Math.Cos(e.Yaw*0.5d);
     double c2 = Math.Cos(e.Pitch*0.5d);
     double c3 = Math.Cos(e.Roll*0.5d);
     double s1 = Math.Sin(e.Yaw*0.5d);
     double s2 = Math.Sin(e.Pitch*0.5d);
     double s3 = Math.Sin(e.Roll*0.5d);
     W = c1*c2*c3 - s1*s2*s3;
     X = s1*s2*c3 + c1*c2*s3;
     Y = s1*c2*c3 + c1*s2*s3;
     Z = c1*s2*c3 - s1*c2*s3;
 }
Ejemplo n.º 20
0
 /// <summary>
 /// 飞入目标点
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnFlyToTargetPoint_Click(object sender, EventArgs e)
 {
     if (this.startX.Text != "" && this.startY.Text != "" && this.startZ.Text != "" &&
         this.endX.Text != "" && this.endY.Text != "" && this.endZ.Text != "")
     {
         IVector3 position1 = new Vector3();
         position1.Set(double.Parse(endX.Text), double.Parse(endY.Text), double.Parse(endZ.Text));
         IVector3 position2 = new Vector3();
         position2.Set(double.Parse(startX.Text), double.Parse(startY.Text), double.Parse(startZ.Text));
         IEulerAngle angle = new EulerAngle();
         angle = axRenderControl1.Camera.GetAimingAngles(position1, position2);
         axRenderControl1.Camera.LookAt(position1, 0, angle);
     }
 }
Ejemplo n.º 21
0
        void Update()
        {
            if (this.isPositionChanging)
            {
                var point = this.currentPosition.Point;
                if (this.isMoving)
                {
                    point = new Point(
                        this.Approximate(point.X, this.targetPosition.Point.X, this.movementSpeed),
                        this.Approximate(point.Y, this.targetPosition.Point.Y, this.movementSpeed),
                        this.Approximate(point.Z, this.targetPosition.Point.Z, this.movementSpeed));

                    this.SetPoint(point);

                    this.SetIsMoving();
                }

                var angle = this.currentPosition.Angle;
                if (this.isTurning)
                {
                    angle = new EulerAngle(
                        this.Approximate(angle.XAngle, this.targetPosition.Angle.XAngle, this.rotationSpeed),
                        this.Approximate(angle.YAngle, this.targetPosition.Angle.YAngle, this.rotationSpeed),
                        this.Approximate(angle.ZAngle, this.targetPosition.Angle.ZAngle, this.rotationSpeed));

                    this.SetAngle(angle);

                    this.SetIsTurning();
                }

                var lenght = this.currentPosition.Lenght;
                if (this.isLenghtChanging)
                {
                    lenght = this.Approximate(lenght, this.targetPosition.Lenght, this.lenghtChangingSpeed);

                    this.SetLenght(lenght);

                    this.SetIsLenghtChanging();
                }

                this.currentPosition = new VectorPosition(
                    this.currentPosition.IsVisible,
                    point,
                    angle,
                    lenght);

                this.SetIsPositionChanging();
            }
        }
Ejemplo n.º 22
0
        private void FrmSunSimulation_Load(object sender, EventArgs e)
        {
            if (app == null || app.Current3DMapControl == null)
            {
                return;
            }
            app.Current3DMapControl.SunConfig.SunCalculateMode = gviSunCalculateMode.gviSunModeUserDefined;
            System.Drawing.Color color  = this.colorPickEdit1.Color;
            System.Drawing.Color color1 = System.Drawing.Color.FromArgb(this.trackBarControl1.Value, color.R, color.G, color.B);
            app.Current3DMapControl.SunConfig.ShadowColor = (uint)color1.ToArgb();
            IEulerAngle ang = new EulerAngle();

            ang.Set(Convert.ToDouble(this.seHeading.EditValue), Convert.ToDouble(this.seTilt.EditValue), 0);
            app.Current3DMapControl.SunConfig.SetSunEuler(ang);
            app.Current3DMapControl.SunConfig.EnableShadow(0, true);
        }
Ejemplo n.º 23
0
        public override void Run(object sender, EventArgs e)
        {
            DF3DApplication app = (DF3DApplication)this.Hook;

            if (app == null || app.Current3DMapControl == null)
            {
                return;
            }
            IVector3    v3  = new Vector3Class();
            IEulerAngle ang = new EulerAngle();

            app.Current3DMapControl.Camera.GetCamera(out v3, out ang);
            string str = v3.X + ";" + v3.Y + ";" + v3.Z + ";" + ang.Heading + ";" + ang.Tilt + ";" + ang.Roll;

            Config.SetConfigValue("InitView3D", str);
        }
Ejemplo n.º 24
0
        private void btnCreateFeature_Click(object sender, EventArgs e)
        {
            _geoEditor.FinishEdit();   //用于当拾取到基准面时,或者没有正常右键结束连续调用Start时

            IVector3 position = new Vector3();

            position.Set(envX, envY, envZ);
            IEulerAngle angle = new EulerAngle();

            angle.Set(0, -20, 0);
            this.axRenderControl1.Camera.LookAt(position, 800, angle);
            MessageBox.Show("请选择一个Feature");
            this.axRenderControl1.MouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectFeatureLayer;
            this.axRenderControl1.MouseSelectMode       = gviMouseSelectMode.gviMouseSelectClick;
            this.axRenderControl1.RcMouseClickSelect   -= new _IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect_CreateFeature);

            this.axRenderControl1.RcMouseClickSelect += new _IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect_CreateFeature);
        }
Ejemplo n.º 25
0
        private void Export25D()
        {
            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter     = "Image Files(*.IMG)|*.IMG";
            dlg.DefaultExt = ".img";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                IVector3    position = new Vector3();
                IEulerAngle angle    = new EulerAngle();
                this.axRenderControl1.Camera.GetCamera(out position, out angle);
                float meterPerPixel = (float)env.Width / 1024;
                bool  b             = this.axRenderControl1.ExportManager.Export25DEx(dlg.FileName, env, meterPerPixel, angle, fcGUIDs.ToArray(), false);
                if (!b)
                {
                    MessageBox.Show("错误码为:" + this.axRenderControl1.GetLastError().ToString());
                }
            }
        }
Ejemplo n.º 26
0
        private void CreateFeautureLayer()
        {
            bool hasfly = false;

            foreach (FeatureClass fc in fcMap.Keys)
            {
                List <string> geoNames = (List <string>)fcMap[fc];
                foreach (string geoName in geoNames)
                {
                    if (!geoName.Equals("Geometry"))
                    {
                        continue;
                    }

                    IFeatureLayer featureLayer = this.axRenderControl1.ObjectManager.CreateFeatureLayer(
                        fc, geoName, null, null);

                    if (!hasfly)
                    {
                        IFieldInfoCollection fieldinfos  = fc.GetFields();
                        IFieldInfo           fieldinfo   = fieldinfos.Get(fieldinfos.IndexOf(geoName));
                        IGeometryDef         geometryDef = fieldinfo.GeometryDef;
                        env = geometryDef.Envelope;
                        if (env == null || (env.MaxX == 0.0 && env.MaxY == 0.0 && env.MaxZ == 0.0 &&
                                            env.MinX == 0.0 && env.MinY == 0.0 && env.MinZ == 0.0))
                        {
                            continue;
                        }
                        EulerAngle angle = new EulerAngle();
                        angle.Set(0, -20, 0);
                        if (geoFactory == null)
                        {
                            geoFactory = new GeometryFactory();
                        }
                        IPoint pos = geoFactory.CreatePoint(i3dVertexAttribute.i3dVertexAttributeZ);
                        pos.SpatialCRS = datasetCRS;
                        pos.Position   = env.Center;
                        this.axRenderControl1.Camera.LookAt2(pos, 1000, angle);
                    }
                    hasfly = true;
                }
            }
        }
Ejemplo n.º 27
0
 public BoneViewModel(RigEditorViewModel rig, IHaveBones parent, RigResource.RigResource.Bone bone, BoneManager manager)
 {
     if (rig == null) throw new ArgumentNullException("rig");
     if (bone == null) throw new ArgumentNullException("bone");
     if (manager == null) throw new ArgumentNullException("manager");
     mRig = rig;
     mChildren = new ObservableCollection<BoneViewModel>();
     mParent = parent;
     mBone = bone;
     mManager = manager;
     foreach (RigResource.RigResource.Bone b in manager.GetChildren(mBone))
     {
         mChildren.Add(new BoneViewModel(mRig, this, b, mManager));
     }
     mRotation = new EulerAngle(new Quaternion(bone.Orientation.A, bone.Orientation.B, bone.Orientation.C, bone.Orientation.D));
     manager.BoneAdded += OnBoneAdded;
     manager.BoneRemoved += OnBoneRemoved;
     manager.BoneParentChanged += OnBoneParentChanged;
     mSetOppositeCommand = new UserCommand<BoneViewModel>(x => true, ExecuteSetOpposite);
 }
Ejemplo n.º 28
0
        /// <summary>
        /// 飞入目标点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnFlyToTargetPoint_Click(object sender, EventArgs e)
        {
            if (this.startX.Text != "" && this.startY.Text != "" && this.startZ.Text != "" &&
                this.endX.Text != "" && this.endY.Text != "" && this.endZ.Text != "")
            {
                if (geoFactory == null)
                {
                    geoFactory = new GeometryFactory();
                }
                IPoint pos1 = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                pos1.SpatialCRS = currentEnvCRS;
                pos1.SetCoords(double.Parse(endX.Text), double.Parse(endY.Text), double.Parse(endZ.Text), 0, 0);

                IPoint pos2 = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                pos2.SpatialCRS = currentEnvCRS;
                pos2.SetCoords(double.Parse(startX.Text), double.Parse(startY.Text), double.Parse(startZ.Text), 0, 0);

                IEulerAngle angle = new EulerAngle();
                angle = this.axRenderControl1.Camera.GetAimingAngles2(pos1, pos2);
                this.axRenderControl1.Camera.LookAt2(pos1, 0, angle);
            }
        }
Ejemplo n.º 29
0
        private void toolStripExportPanorama_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter     = "Image Files(*.BMP)|*.BMP|Image Files(*.PNG)|*.PNG|Image Files(*.JPG)|*.JPG";
            dlg.DefaultExt = ".bmp";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                IVector3    position = new Vector3();
                IEulerAngle angle    = new EulerAngle();
                this.axRenderControl1.Camera.GetCamera(out position, out angle);
                IPoint center = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                center.SpatialCRS = dataset.SpatialReference;
                center.Position   = position;

                bool b = this.axRenderControl1.ExportManager.ExportPanorama(dlg.FileName, 1024, center, angle);
                if (!b)
                {
                    MessageBox.Show("错误码为:" + this.axRenderControl1.GetLastError().ToString());
                }
            }
        }
Ejemplo n.º 30
0
        /// <summary>
        /// 单击表格记录进行变色和定位
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            foreach (string key in rowMap.Keys)
            {
                RowObject     r   = rowMap[key];
                int           fid = int.Parse(r.FID);
                IFeatureClass fc  = r.FeatureClass as IFeatureClass;
                axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Red);
            }
            DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];

            if (row != null)
            {
                string        fid = row.Cells["FID"].Value.ToString();
                IFeatureClass fc  = row.Cells["FID"].Tag as IFeatureClass;
                axRenderControl1.FeatureManager.HighlightFeature(fc, int.Parse(fid), System.Drawing.Color.Blue);
                IEnvelope   evn   = rowMap[fid].Envelop;
                IEulerAngle angle = new EulerAngle();
                angle.Set(0, -30, 0);
                axRenderControl1.Camera.LookAt(evn.Center, 40, angle);
            }
        }
Ejemplo n.º 31
0
        static void Main(string[] args)
        {
#if DEBUG
            string path = @"C:\tmp\Sample_000000000213_keypoints.vmd";
#else
            string path = args[0];
#endif

            var vr  = new VmdReader(path);
            var vmd = vr.Read();

            var vw = new VmdWriter(path.Substring(0, path.LastIndexOf('.')) + "_rewrite.vmd");
            vw.Write(vmd);

            foreach (var frame in vmd.Frames)
            {
                Console.WriteLine($"Frame #{frame.Index}");
                Console.WriteLine($"-----------------------------------------");

                foreach (var bone in frame.Bones)
                {
                    Console.WriteLine($"Bone {bone.Key}:");

                    var p = bone.Value.Position;
                    Console.WriteLine($"  Position     (x,y,z)   = ({p.X}, {p.Y}, {p.Z})");
                    var q = bone.Value.Quaternion;
                    Console.WriteLine($"  Quartenion   (x,y,z,w) = ({q.X}, {q.Y}, {q.Z}, {q.W})");
                    var e = EulerAngle.FromQuaternion(q);
                    Console.WriteLine($"  Euler angles (h,p,b)   = ({e.HeadingDeg}, {e.PitchDeg}, {e.BankDeg})");
                }
                Console.WriteLine($"");
            }

#if DEBUG
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey(true);
#else
#endif
        }
Ejemplo n.º 32
0
        private void menuLoadData_Click(object sender, EventArgs e)
        {
            if (layers.Count > 0)
            {
                MessageBox.Show("数据已加载");
                return;
            }

            // CreateFeautureLayer
            bool hasfly = false;

            foreach (IFeatureClass fc in fcMap.Keys)
            {
                List <string> geoNames = (List <string>)fcMap[fc];
                foreach (string geoName in geoNames)
                {
                    IFeatureLayer featureLayer = this.axRenderControl1.ObjectManager.CreateFeatureLayer(
                        fc, geoName, null, null, rootId);
                    layers.Add(featureLayer);

                    if (!hasfly)
                    {
                        IFieldInfoCollection fieldinfos  = fc.GetFields();
                        IFieldInfo           fieldinfo   = fieldinfos.Get(fieldinfos.IndexOf(geoName));
                        IGeometryDef         geometryDef = fieldinfo.GeometryDef;
                        IEnvelope            env         = geometryDef.Envelope;
                        if (env == null || (env.MaxX == 0.0 && env.MaxY == 0.0 && env.MaxZ == 0.0 &&
                                            env.MinX == 0.0 && env.MinY == 0.0 && env.MinZ == 0.0))
                        {
                            continue;
                        }
                        IEulerAngle angle = new EulerAngle();
                        angle.Set(0, -20, 0);
                        this.axRenderControl1.Camera.LookAt(env.Center, 1000, angle);
                    }
                    hasfly = true;
                }
            }
        }
Ejemplo n.º 33
0
        void axRenderControl1_RcObjectEditing(IGeometry Geometry)
        {
            polyline = Geometry as IPolyline;
            if (polyline.PointCount == 2)
            {
                this.axRenderControl1.ObjectEditor.FinishEdit();
                this.axRenderControl1.InteractMode     = gviInteractMode.gviInteractNormal;
                this.axRenderControl1.MouseSelectMode  = gviMouseSelectMode.gviMouseSelectDrag;
                this.axRenderControl1.RcObjectEditing -= new _IRenderControlEvents_RcObjectEditingEventHandler(axRenderControl1_RcObjectEditing);


                IEulerAngle angle       = this.axRenderControl1.Camera.GetAimingAngles2(polyline.GetPoint(0), polyline.GetPoint(1));
                IEulerAngle cameraAngle = new EulerAngle();
                cameraAngle.Heading = angle.Heading - 90;
                cameraAngle.Tilt    = cameraAngle.Roll = 0;
                IPoint center = polyline.Midpoint;

                IEnvelope newEnv = new Envelope();  //newEnv表示相机出图范围
                newEnv.MinX = -polyline.Length / 2; //相机出图宽度
                newEnv.MaxX = polyline.Length / 2;
                newEnv.MinY = -10;                  //相机出图高度
                newEnv.MaxY = 100;
                newEnv.MinZ = -100;                 //相机出图深度
                newEnv.MaxZ = 100;

                SaveFileDialog dlg = new SaveFileDialog();
                dlg.Filter     = "Image Files(*.BMP)|*.BMP|Image Files(*.PNG)|*.PNG|Image Files(*.JPG)|*.JPG";
                dlg.DefaultExt = ".bmp";
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    bool b = this.axRenderControl1.ExportManager.ExportOrthoImage(dlg.FileName, 1024, center, cameraAngle, newEnv, false, System.Drawing.Color.Blue);
                    if (!b)
                    {
                        MessageBox.Show("错误码为:" + this.axRenderControl1.GetLastError().ToString());
                    }
                }
            }
        }
Ejemplo n.º 34
0
 public Matrix(EulerAngle euler)
     : this(new Quaternion(euler))
 {
 }