三维场景中的飞行问题

0 投票

在三维场景中,选择了起始点和结束点后,然后沿线路飞行。在球面场景中可以实现此功能的代码,但是在平面场景中却无法实现。主要显示为,飞行时贴着平面场景的边缘飞行,到达目的地是再跳转到目的地。怎么办呢。

        public FlyManager CurrentFlyManager
        {
            get
            {
                FlyManager currentFlyManager = null;
                if (m_sceneControl.Scene.FlyManager != null)
                {
                    currentFlyManager = m_sceneControl.Scene.FlyManager;
                }
                return currentFlyManager;
            }
        }

        // 开始飞行
        public void BeginFly(Double speed, Boolean isCircle)
        {
                CurrentFlyManager.Routes.Clear();
                Route route = new Route();
                route.FromGeoLine3D(m_line3D);
                route.IsAltitudeFixed = false;
                route.IsFlyAlongTheRoute = true;
                route.IsHeadingFixed = false;
                route.IsTiltFixed = false;
                route.IsStopsVisible = false;
                route.IsFlyingLoop = isCircle;
                route.Speed = speed;
                for (int i = 0; i < route.Stops.Count; i++)
                {
                    Camera camera = route.Stops[i].Camera;
                    camera.Altitude = 11.9;
                    camera.Tilt = 60;
                    camera.Heading = 90;
                    route.Stops[i].Camera = camera;
                    route.Stops[i].TurnTime = 0.2;
                }

                CurrentFlyManager.Routes.Add(route);
                Camera sceneCamera = new Camera(route.Stops[0].Camera.Longitude, route.Stops[0].Camera.Latitude, 300);
                sceneCamera.Tilt = 45;
                m_sceneControl.Scene.Camera = sceneCamera;
                CurrentFlyManager.Play();
        }

10月 24, 2018 分类:  509次浏览 | 用户: LLLDDDW 初出茅庐 (23 分)

1个回答

0 投票
您好!平面场景的飞行不好控制,您可以在iDesktop里打开平面场景加载飞行路线试一下,是一样的效果。您代码里的相机高度一定,相机俯仰角一定,在平面场景中效果就差强人意的。建议您用当前相机视角创建站点,而不是鼠标拾取点来创建站点。
10月 24, 2018 用户: 胡延南 名扬四海 (3,300 分)
调用外部的飞行文件可以正常飞行。那个请问当前相机视角创建视角怎么操作呢。

您用RouteStop.Camera这个接口试试呢,我没做过平面场景的飞行,但是从桌面的操作来看,最好每个站点获取当前相机的经纬度和高度即可。

搞不定。。。。。可能是我不太会用RouteStop接口。。。。
感觉我做不出来了。。。。
您先在iDesktop的平面场景中操作一下,看效果怎样。iDesktop就是.Net组件开发的,如果桌面可以,组件也就能实现。
我试了试在桌面软件可以通过鼠标拾取点飞行,但是在VS里就不可以了,实在想不出是为什么。
...