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
 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. 3
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. 4
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. 5
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;
                }
            }
        }