Пример #1
0
        private void CreateDefaultModels()
        {
            Material = PhongMaterials.White;
            var b2 = new MeshBuilder(true, true, true);

            b2.AddSphere(new Vector3(15f, 0f, 0f), 4, 64, 64);
            b2.AddSphere(new Vector3(25f, 0f, 0f), 2, 32, 32);
            b2.AddTube(new Vector3[] { new Vector3(10f, 5f, 0f), new Vector3(10f, 7f, 0f) }, 2, 12, false, true, true);
            DefaultModel = b2.ToMeshGeometry3D();
            DefaultModel.OctreeParameter.RecordHitPathBoundingBoxes = true;
            DefaultModel.UpdateOctree();

            PointsModel = new PointGeometry3D();
            var offset = new Vector3(1, 1, 1);

            PointsModel.Positions = new Vector3Collection(DefaultModel.Positions.Select(x => x + offset));
            PointsModel.Indices   = new IntCollection(Enumerable.Range(0, PointsModel.Positions.Count));
            PointsModel.OctreeParameter.RecordHitPathBoundingBoxes = true;
            PointsModel.UpdateOctree();
            for (int i = 0; i < 10; ++i)
            {
                for (int j = 0; j < 10; ++j)
                {
                    Items.Add(new SphereModel(new Vector3(-10f + i + (float)Math.Pow((float)j / 2, 2), -10f + (float)Math.Pow((float)i / 2, 2), -10f + (float)Math.Pow(j, ((float)i / 5))), rnd.NextDouble(1, 3)));
                }
            }
            PointsHitModel = new PointGeometry3D()
            {
                Positions = new Vector3Collection(), Indices = new IntCollection()
            };
            //var landerItems = Load3ds("Car.3ds").Select(x => new DataModel() { Model = x.Geometry as MeshGeometry3D, Material = PhongMaterials.Copper }).ToList();
            //var scale = new Vector3(0.007f);
            //var offset = new Vector3(15, 15, 15);
            //foreach (var item in landerItems)
            //{
            //    for (int i = 0; i < item.Model.Positions.Count; ++i)
            //    {
            //        item.Model.Positions[i] = item.Model.Positions[i] * scale + offset;
            //    }

            //    item.Model.UpdateOctree();
            //}
            //LanderItems = landerItems;
        }