Exemple #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            // Создание объекта сцены
            scene = new Scene3D();

            // Добавление объектов на сцену
            scene.AddModel(new Model3D("models/table/table.obj", "Стол", true));
            scene["Стол"].size = new Vector3(4f);

            scene.AddModel(new Model3D("models/plates/plates.obj", "Тарелка", true));
            scene["Тарелка"].size     = new Vector3(1.8f);
            scene["Тарелка"].position = new Vector3(0.6f, 1.4f, -0.1f);

            scene.AddModel(new Model3D("models/piece_of_cake/piece_of_cake.obj", "Тортик1"));
            scene["Тортик1"].size     = new Vector3(0.4f);
            scene["Тортик1"].position = new Vector3(0.7f, 1.9f, -0.6f);

            scene.AddModel(new Model3D("models/piece_of_cake/piece_of_cake_full.obj", "Тортик2"));
            scene["Тортик2"].size     = new Vector3(0.8f);
            scene["Тортик2"].angle.Y  = 90;
            scene["Тортик2"].position = new Vector3(0.3f, 1.9f, -1.0f);

            scene.AddModel(new Model3D("models/cup/cup.obj", "Чашка"));
            scene["Чашка"].size     = new Vector3(0.5f);
            scene["Чашка"].position = new Vector3(-1.1f, 1.45f, 0.5f);

            scene.AddModel(new Model3D("models/teapot/teapot.obj", "Чайник"));
            scene["Чайник"].position = new Vector3(-22.2f, 2.5f, -20.6f);
            scene["Чайник"].size     = new Vector3(0.7f);
            scene["Чайник"].angle.Y  = -45;

            scene.AddModel(new Model3D("models/disco_ball/disco_ball.obj", "Дискошар"));
            scene["Дискошар"].position = new Vector3(0f, 4f, 0f);
            scene["Дискошар"].size     = new Vector3(0.7f);

            scene.AddModel(new Model3D("models/switch/switch.obj", "Выключатель"));
            scene["Выключатель"].position = new Vector3(-0.7f, 1.24f, 1.7f);
            scene["Выключатель"].size     = new Vector3(0.2f);

            scene.AddModel(new Model3D("models/switch/button/switch_button.obj", "Кнопка"));
            scene["Кнопка"].position = new Vector3(-0.7f, 1.3f, 1.7f);
            scene["Кнопка"].size     = new Vector3(0.15f);

            scene.AddModel(new Model3D("models/gas_bottle/gas_bottle.obj", "Гелий"));
            scene["Гелий"].position = new Vector3(3f, -0.25f, 3f);
            scene["Гелий"].angle.Y  = -90;
            scene["Гелий"].size     = new Vector3(1.4f);

            scene.AddModel(new Model3D("models/gas_bottle/cap/gas_bottle_cap.obj", "Вентиль"));
            scene["Вентиль"].position = new Vector3(3f, 1.17f, 3f);
            scene["Вентиль"].size     = new Vector3(0.12f);

            scene.AddModel(new Model3D("models/balloon/balloon.obj", "Шарик"));
            scene["Шарик"].position = new Vector3(3.35f, 0.6f, 3f);
            scene["Шарик"].angle.Z  = 210;
            scene["Шарик"].size     = new Vector3(0.4f);

            // Анимирование объектов
            // Приближение к сцене
            scene.position.Z = -250;
            scene.AnimationTrans.Add(Animation.MoveOn(z: 250, end: 380));
            scene.AnimationRotate.Add(Animation.MoveOn(x: -15, start: 350, end: 390));
            // Облет сцены
            scene.AnimationRotate.Add(Animation.MoveOn(y: 360, start: 360, end: 740));
            scene.AnimationScale.Add(Animation.MoveOn(new Vector3(2), start: 380, end: 720));
            scene.AnimationTrans.Add(Animation.MoveOn(y: -4, start: 380, end: 740));
            // Облет 2
            scene.AnimationRotate.Add(Animation.MoveOn(x: 30, y: 360, start: 740, end: 1160));
            scene.AnimationScale.Add(Animation.MoveOn(new Vector3(-1), start: 740, end: 1060));
            // Отлет
            scene.AnimationScale.Add(Animation.MoveOn(new Vector3(0.5f), start: 1180, end: 1400));
            scene.AnimationTrans.Add(Animation.MoveOn(y: 1, start: 1180, end: 1400));
            scene.AnimationRotate.Add(Animation.MoveOn(x: -15, start: 1180, end: 1400));
            // Подъезд к торту
            scene.AnimationRotate.Add(Animation.MoveOn(y: -60, x: 50, start: 1400, end: 1600));
            scene.AnimationScale.Add(Animation.MoveOn(new Vector3(1f), start: 1400, end: 1600));
            scene.AnimationTrans.Add(Animation.MoveOn(z: -8, start: 1380, end: 1560));
            // Отрезать торт
            scene["Тортик1"].AnimationTrans.Add(Animation.MoveOn(z: 1.49f, x: 0.30f, y: -0.35f, start: 1580, end: 1620));
            // Подъезд к чайнику
            scene.AnimationRotate.Add(Animation.MoveOn(y: 80, x: -40, start: 1620, end: 1680));
            // Налить чай
            scene["Чайник"].AnimationTrans.Add(Animation.MoveOn(z: 20.7f, x: 20.7f, start: 1600, end: 1790));
            scene["Чайник"].AnimationRotate.Add(Animation.MoveOn(z: -60f, start: 1800, end: 1830));
            scene["Чайник"].AnimationRotate.Add(Animation.MoveOn(z: 60f, start: 1860, end: 1890));
            scene["Чайник"].AnimationTrans.Add(Animation.MoveOn(z: -1.7f, x: -1.7f, start: 1890, end: 1940));
            // Подъезд к чашке
            scene.AnimationRotate.Add(Animation.MoveOn(y: 45, x: 20, start: 1960, end: 2020));
            scene.AnimationScale.Add(Animation.MoveOn(new Vector3(1f), start: 1960, end: 2020));
            // Подвинуть чашку
            scene["Чашка"].AnimationTrans.Add(Animation.MoveOn(z: -0.4f, x: -0.8f, start: 2040, end: 2100));
            // Посмотреть на нерабочий шар
            scene.AnimationRotate.Add(Animation.MoveOn(x: -50, start: 2110, end: 2160));
            scene.AnimationTrans.Add(Animation.MoveOn(y: -10, start: 2110, end: 2160));
            // Посмотреть на выключатель
            scene.AnimationRotate.Add(Animation.MoveOn(x: 70, y: -35, start: 2190, end: 2230));
            scene.AnimationTrans.Add(Animation.MoveOn(y: 10, z: -12, start: 2190, end: 2230));
            // Нажатие кнопки
            scene["Кнопка"].AnimationTrans.Add(Animation.MoveOn(y: -0.05f, start: 2250, end: 2260));
            // Включение шара
            scene["Дискошар"].AnimationRotate.Add(Animation.TickInc(y: 3f, start: 2260));
            // Опять смотреть на шар
            scene.AnimationRotate.Add(Animation.MoveOn(x: -70, y: 35, start: 2280, end: 2320));
            scene.AnimationTrans.Add(Animation.MoveOn(y: -10, z: 12, start: 2280, end: 2320));
            // Облет шара
            scene.AnimationTrans.Add(Animation.MoveOn(y: -2, start: 2350, end: 2410));
            scene.AnimationRotate.Add(Animation.MoveOn(y: -790, start: 2420, end: 2550));
            // Подъезд к балону с гелием
            scene.AnimationScale.Add(Animation.MoveOn(new Vector3(-1.2f), start: 2570, end: 2630));
            scene.AnimationTrans.Add(Animation.MoveOn(x: -7f, y: 17, start: 2570, end: 2630));
            scene.AnimationRotate.Add(Animation.MoveOn(x: 40, start: 2570, end: 2630));
            // Открыть вентиль
            scene["Вентиль"].AnimationRotate.Add(Animation.TickInc(y: 20f, start: 2650, end: 2700));
            // Надуть шар
            scene["Шарик"].AnimationScale.Add(Animation.MoveOn(x: 2.4f, y: 0.10f, z: 0.10f, start: 2720, end: 3040));
            scene["Шарик"].AnimationRotate.Add(Animation.MoveOn(z: 110f, start: 2720, end: 2960));
            scene["Шарик"].AnimationTrans.Add(Animation.MoveOn(x: 0.2f, y: 0.5f, start: 2720, end: 2880));
            scene["Шарик"].AnimationTrans.Add(Animation.MoveOn(x: -0.1f, y: 0.2f, start: 2880, end: 2960));
            // Закрыть вентиль
            scene["Вентиль"].AnimationRotate.Add(Animation.TickInc(y: -10f, start: 2880, end: 3040));
            // Шарик улетает
            scene["Шарик"].AnimationTrans.Add(Animation.MoveOn(y: 25f, start: 3060, end: 3700));
            scene.AnimationRotate.Add(Animation.MoveOn(x: -100, start: 3070, end: 3400));
            scene.AnimationTrans.Add(Animation.MoveOn(y: -30f, start: 3070, end: 3200));
        }