Exemple #1
0
        public Urho.VertexBuffer.PositionNormalColor[] GetVertextData()
        {
            var data = new Urho.VertexBuffer.PositionNormalColor[Vertices.Count];

            for (int i = 0; i < Vertices.Count; i++)
            {
                var v = Vertices[i];
                var n = Normals[i];

                Urho.Color clr = Urho.Color.Green;
                if (Vertices.Count == Colors.Count)
                {
                    var c = Colors[i];
                    clr = Urho.Color.FromByteFormat((byte)(c.R * 255), (byte)(c.G * 255), (byte)(c.B * 255), 255);
                }

                var d = new Urho.VertexBuffer.PositionNormalColor();

                d.Position = new Urho.Vector3(v.X, v.Y, v.Z);
                d.Normal   = new Urho.Vector3(n.X, n.Y, n.Z);
                d.Color    = clr.ToUInt();

                data[i] = d;
            }

            return(data);
        }
Exemple #2
0
        private static Urho.VertexBuffer.PositionNormalColor[] GetVertextData(List <Vector3> vertices, List <Vector3> normals, List <Color> colors)
        {
            var data = new Urho.VertexBuffer.PositionNormalColor[vertices.Count];

            for (int i = 0; i < vertices.Count; i++)
            {
                var v = vertices[i];
                var n = normals[i];

                Urho.Color clr = Urho.Color.Green;
                if (vertices.Count == colors.Count)
                {
                    clr = colors[i];
                }

                var d = new Urho.VertexBuffer.PositionNormalColor();

                d.Position = v;
                d.Normal   = n;
                d.Color    = clr.ToUInt();

                data[i] = d;
            }

            return(data);
        }
Exemple #3
0
        Node AddMarker(Node parent, float lat, float lon, string id, Urho.Color color)
        {
            var markerNode     = parent.CreateChild("MarkerRoot_" + id);
            var markerHeadNode = markerNode.CreateChild("MarkerHeadModel_" + id);
            var markerTailNode = markerNode.CreateChild("MarkerTailModel_" + id);

            var pinCone = markerTailNode.CreateComponent <Urho.Shapes.Cone>();

            markerTailNode.Scale = new Vector3(0.045f, 0.09f, 0.045f);
            pinCone.Color        = color;

            var pinHead = markerHeadNode.CreateComponent <Urho.Shapes.Sphere>();

            markerHeadNode.SetScale(0.1f);
            //pinHead.SetMaterial(Material.FromImage(id + ".jpg"));
            pinHead.Color = color;

            GetPositionForHeight(lat, lon, 2.25f, out double x1, out double y1, out double z1);
            markerTailNode.Position = new Vector3((float)x1, (float)y1, (float)z1);
            markerTailNode.LookAt(new Vector3(0, 0, 0), new Vector3(0, 1, 0),
                                  TransformSpace.Parent);
            markerTailNode.Rotate(new Quaternion(90, 0, 0), TransformSpace.Local);

            GetPositionForHeight(lat, lon, 2.3f, out double x2, out double y2, out double z2);
            markerHeadNode.Position = new Vector3((float)x2, (float)y2, (float)z2);
            return(markerNode);
        }
Exemple #4
0
        private void btnColorPick_Click(object sender, EventArgs e)
        {
            var dialogResult = colorPicker.ShowDialog(btnColorPick);

            if (dialogResult == DialogResult.OK)
            {
                System.Drawing.Color color = colorPicker.Color;
                _colour                = new Urho.Color(color.R, color.G, color.B, color.A);
                _eventArgs.Colour      = _colour;
                lblColorView.BackColor = color;
                OnColorChanged();
            }
        }
Exemple #5
0
        // Imitates QTM's 3D frame colors on grid view
        private void GetFrameColors(out Urho.Color leftColor, out Urho.Color topColor, out Urho.Color rightColor, out Urho.Color bottomColor)
        {
            // Colors follow QTM conventions
            Urho.Color litFrame    = Urho.Color.FromByteFormat(131, 131, 131, 255);
            Urho.Color shadowFrame = Urho.Color.FromByteFormat(29, 29, 29, 255);

            // Handle camera rotation in QTM
            switch (orientation)
            {
            default:
                leftColor   = shadowFrame;
                topColor    = shadowFrame;
                rightColor  = litFrame;
                bottomColor = litFrame;
                break;

            case 90:
                leftColor   = shadowFrame;
                topColor    = litFrame;
                rightColor  = litFrame;
                bottomColor = shadowFrame;
                break;

            case 180:
                leftColor   = litFrame;
                topColor    = litFrame;
                rightColor  = shadowFrame;
                bottomColor = shadowFrame;
                break;

            case 270:
                leftColor   = litFrame;
                topColor    = shadowFrame;
                rightColor  = shadowFrame;
                bottomColor = litFrame;
                break;
            }
        }
 public Button(string action, Urho.Color color)
 {
     this.color          = color;
     this.actionString   = action;
     ReceiveSceneUpdates = true;
 }
        void CreateScene()
        {
            scene = new Scene();
            octree = scene.CreateComponent<Octree>();

            rootNode = scene.CreateChild(name: "Root");

            var earthNode = rootNode.CreateChild(name: "Earth");
            var earth = earthNode.CreateComponent<Sphere>();
            earth.Color = Urho.Color.Blue;
            earthNode.SetScale(4.5f);
            earth.SetMaterial(Material.FromImage("earth3.jpg"));
            earthNode.Rotate(new Quaternion(x: 2f, y: -0.75f, z: 0), TransformSpace.Local);

            cameraNode = scene.CreateChild();
            camera = cameraNode.CreateComponent<Camera>();
            cameraNode.Position = new Vector3((float)9.5, (float)9.90, 10) / 1.75f;
            cameraNode.Rotation = new Quaternion(-0.121f, 0.878f, -0.305f, -0.35f);

            Node lightNode = cameraNode.CreateChild();
            var light = lightNode.CreateComponent<Light>();
            light.LightType = LightType.Point;
            light.Range = 100;
            light.Brightness = 1.3f;

            var markersNode = rootNode.CreateChild(name: "Markers");

            var positions = new Dictionary<string, float[]> {
                { "hnd", new float[] { 35.549140f, 139.780053f }},//tokyo
                { "ams", new float[] { 52.309876f, 4.768231f } },//amsterdam
                { "del", new float[] { 28.639446f, 77.123433f } },//delhi
                { "dab", new float[] { 29.182539f, -81.053463f } },//daytona
                { "eyw", new float[] { 24.555340f, -81.757469f } },//keywest
                { "fll", new float[] { 26.072924f, -80.151160f } },//fort lautrade
                { "gcn", new float[] { 35.951838f, -112.144504f } },//grand canyon
                { "hnl", new float[] { 21.323464f, -157.925074f } },//honulu
                { "iad", new float[] { 38.952591f, -77.455981f } },//washington
                { "las", new float[] { 36.083722f, -115.153288f } },//las vegas
                { "lax", new float[] { 33.940965f, -118.408637f } },//los angeles
                { "myr", new float[] { 33.682854f, -78.928141f } },//myrtle
                { "nyc", new float[] { 40.729441f, -73.969534f } },//new york
                { "ord", new float[] { 41.973764f, -87.907429f } },//orlando
                { "san", new float[] { 32.733358f, -117.193808f } },//san diego
                { "sfo", new float[] { 37.620752f, -122.380050f } },//san fransico
                { "snu", new float[] { 22.491947f, -79.945303f } },//santa calra
                { "vps", new float[] { 30.494920f, -86.550364f } },//destin
                { "mes", new float[] { 37.215442f, -108.458600f } },//mesa verde
                { "den", new float[] { 39.855932f, -104.673233f } },//denver
                { "ase", new float[] { 39.219123f, -106.864559f } },//aspen
            };

            var colors = new Urho.Color[] {
                Urho.Color.FromHex("#f3b50c"),
                Urho.Color.FromHex("#4ab075"),
                Urho.Color.FromHex("#f0399d")
            };

            foreach (var row in positions.Keys)
                AddMarker(markersNode,
                          lat: positions[row][0],
                          lon: positions[row][1], 
                          id: row,
                          color: colors.GetRandomElement());

            AutoRotate();
        }