コード例 #1
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;
            }
        }
コード例 #2
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;
            }
        }
コード例 #3
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);
            }
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: batuZ/Samples
 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);
     }
 }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: batuZ/Samples
        private void clear()
        {
            if (renderLine != null)
            {
                this.axRenderControl1.ObjectManager.DeleteObject(renderLine.Guid);
                renderLine = null;
            }
            if (multiRenderLine != null)
            {
                this.axRenderControl1.ObjectManager.DeleteObject(multiRenderLine.Guid);
                multiRenderLine = null;
            }
            if (tour != null)
            {
                this.axRenderControl1.ObjectManager.DeleteObject(tour.Guid);
                tour = null;
            }
            if (renderModelPoint != null)
            {
                this.axRenderControl1.ObjectManager.DeleteObject(renderModelPoint.Guid);
                renderModelPoint = null;
            }
            if (skinMesh != null)
            {
                this.axRenderControl1.ObjectManager.DeleteObject(skinMesh.Guid);
                skinMesh = null;
            }

            if (renderLineArray.Count != 0)
            {
                foreach (IRenderPolyline line in renderLineArray)
                {
                    this.axRenderControl1.ObjectManager.DeleteObject(line.Guid);
                }
                renderLineArray.Clear();
            }
            if (multiRenderLineArray.Count != 0)
            {
                foreach (IRenderMultiPolyline line in multiRenderLineArray)
                {
                    this.axRenderControl1.ObjectManager.DeleteObject(line.Guid);
                }
                multiRenderLineArray.Clear();
            }
            if (tmpRenderLineArray.Count != 0)
            {
                foreach (IRenderPolyline line in tmpRenderLineArray)
                {
                    this.axRenderControl1.ObjectManager.DeleteObject(line.Guid);
                }
                tmpRenderLineArray.Clear();
            }
        }
コード例 #6
0
 /// <summary>
 /// 骨骼动画定位
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnLocateSkinmesh_Click(object sender, EventArgs e)
 {
     if (comboBox2.SelectedIndex == 0)
     {
         if (skinMeshCharacter != null)
         {
             CommonUnity.RenderHelper.Camera.FlyToObject(this.skinMeshCharacter.Guid, gviActionCode.gviActionFlyTo);
             curSkinMesh = skinMeshCharacter;
         }
     }
     else if (comboBox2.SelectedIndex == 1)
     {
         if (skinMeshTree != null)
         {
             position.SetCoords(treeX, treeY, treeZ, 0, 0);
             angle.Set(0, -45, 0);
             CommonUnity.RenderHelper.Camera.LookAt2(position, 20, angle);
             //CommonUnity.RenderHelper.Camera.FlyToObject(this.skinMeshTree.Guid, gviActionCode.gviActionFlyTo);
             curSkinMesh = skinMeshTree;
         }
     }
     else if (comboBox2.SelectedIndex == 2)
     {
         if (skinMeshTree1 != null)
         {
             position.SetCoords(tree1X, tree1Y, tree1Z, 0, 0);
             angle.Set(0, -45, 0);
             CommonUnity.RenderHelper.Camera.LookAt2(position, 20, angle);
             //CommonUnity.RenderHelper.Camera.FlyToObject(this.skinMeshTree1.Guid, gviActionCode.gviActionFlyTo);
             curSkinMesh = skinMeshTree1;
         }
     }
     else if (comboBox2.SelectedIndex == 3)
     {
         if (skinMeshTree2 != null)
         {
             position.SetCoords(tree2X, tree2Y, tree2Z, 0, 0);
             angle.Set(0, -45, 0);
             CommonUnity.RenderHelper.Camera.LookAt2(position, 20, angle);
             //CommonUnity.RenderHelper.Camera.FlyToObject(this.skinMeshTree2.Guid, gviActionCode.gviActionFlyTo);
             curSkinMesh = skinMeshTree2;
         }
     }
     else if (comboBox2.SelectedIndex == 4)
     {
         if (skinMeshPlane != null)
         {
             CommonUnity.RenderHelper.Camera.FlyToObject(this.skinMeshPlane.Guid, gviActionCode.gviActionFlyTo);
             curSkinMesh = skinMeshPlane;
         }
     }
 }
コード例 #7
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);
            }
        }
コード例 #8
0
        /// <summary>
        /// 加载动态树骨骼动画
        /// </summary>
        private void LoadXFileTrees()
        {
            {
                string fileName = (strMediaPath + @"\x\Trees\tree.X");
                if (skinMeshTree == 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(treeX, treeY, treeZ);
                    matrix.SetTranslate(v3);
                    mp.FromMatrix(matrix);
                    mp.SelfScale(0.75, 0.75, 0.75);
                    // 创建骨骼动画
                    skinMeshTree = CommonUnity.RenderHelper.ObjectManager.CreateSkinnedMesh(mp, rootId);
                    if (skinMeshTree == null)
                    {
                        MessageBox.Show("骨骼动画创建失败!");
                        return;
                    }
                    skinMeshTree.Duration = 4;
                    skinMeshTree.Loop     = true;
                    skinMeshTree.Play();
                    skinMeshTree.MaxVisibleDistance = 1000;
                }
            }

            {
                string fileName = (strMediaPath + @"\x\Trees\tree1.X");
                if (skinMeshTree1 == 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(tree1X, tree1Y, tree1Z);
                    matrix.SetTranslate(v3);
                    mp.FromMatrix(matrix);
                    mp.SelfScale(0.5, 0.5, 0.5);
                    // 创建骨骼动画
                    skinMeshTree1 = CommonUnity.RenderHelper.ObjectManager.CreateSkinnedMesh(mp, rootId);
                    if (skinMeshTree == null)
                    {
                        MessageBox.Show("骨骼动画创建失败!");
                        return;
                    }
                    skinMeshTree1.Duration = 3;
                    skinMeshTree1.Loop     = true;
                    skinMeshTree1.Play();
                    skinMeshTree1.MaxVisibleDistance = 1000;
                }
            }

            {
                string fileName = (strMediaPath + @"\x\Trees\tree2.X");
                if (skinMeshTree2 == 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(tree2X, tree2Y, tree2Z);
                    matrix.SetTranslate(v3);
                    mp.FromMatrix(matrix);
                    mp.SelfScale(0.25, 0.25, 0.25);
                    // 创建骨骼动画
                    skinMeshTree2 = CommonUnity.RenderHelper.ObjectManager.CreateSkinnedMesh(mp, rootId);
                    if (skinMeshTree2 == null)
                    {
                        MessageBox.Show("骨骼动画创建失败!");
                        return;
                    }
                    skinMeshTree2.Loop = true;
                    skinMeshTree2.Play();
                    skinMeshTree2.MaxVisibleDistance = 1000;
                }
            }
        }