Первое – это конечно создание самой сцены. Сцен или простую 3d модель можно создать в любом удобном вам редакторе, но затем ее необходимо экспортировать в форматы файлов VRML или X3D, так как Castle game engine поддерживает только такие файлы.
Мы будем использовать 3ds max. Создадим простую сцену с кубом на плоской земле и одним источником дневного света.
После создания необходимо экспортировать в VRML. Для этого вначале активируем встроенные плагины для VRML. В меню Customize выбираем Plug-in Manager…
Затем в открывшимся окне ищем VRMLEXP.DLE и VRMLIMP.DLI
Далее Щелкаем правой кнопкой на Selected Plug-ins и выбираем Load. Так же делаем с вторым плагином.
Теперь можно непосредственно приступить к экспорту.
Выбираем File, затем Export. В открывшемся окне печатаем имя файла ( в данном случае это Prim), а тип файла выбираем VRML97(*.WRL). И нажимаем сохранить.
Теперь у нас готова пробная 3d сцена и нам необходимо вставить ее форму. У вас должен быть установлен Castle game engine для Lazarus.
В Lazarus Создаем новое приложение (Файл – Создать – Приложение – ОК). Для добавления сцены потребуются два компонента. Эти компоненты находятся на вкладке Castle.
Это CastleControl и CastleScene. Если CastleScene не как не отобразится на форме, не беспокойтесь, он сработает только как хранилище сцены.
Теперь создаем событие FormCreate для нашей формы (Окно инспектор объектов – Form1:TForm1 – Вкладка события – OnCreate – Дважды щелкнуть по пустому полу рядом).
В окне редактора исходного кода должен появится такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
procedure TForm1.FormCreate(Sender: TObject); begin end; Между Begin и end; набираем такой код: CastleScene1.Load('C:/prog/Ex_1/Prim.wrl'); // Загружаем в CastleScene нашу сцену. CastleScene1.Spatial := [ssRendering, ssDynamicCollisions]; // Настраиваем сцену, делаем объекты не проходимыми для камеры и включаем рейдинг. CastleScene1.ProcessEvents := true;// Разрешаем сцене события, то есть работу анимации. CastleControl1.SceneManager.MainScene := CastleScene1 ; CastleControl1.SceneManager.Items.Add( CastleScene1);// Загружаем сцену в CastleControl для отображения на форме. |
Теперь запускаем проект. Вот что получилось:
Сохранять проект необходимо в папке с именем на латинице. И путь так же на латинице это позволит избежать ошибок совместимости. Lazarus иногда некорректно работает с латиницей.
Так же, если на форме есть CastleControl, то при запуске сохраненного проекта могут возникнуть проблемы. Проект запустится, но логотип Lazarus не пропадет.
Если необходимо быстро запустить проект, то можно удалить с формы CastleControl и проект сразу запустится. Вернув на форму CastleControl можно продолжить работу. Поэтому желательно не менять имя CastleControl
Об авторе