Скелетная анимация актёра и его перемещение по сцене
Автор: hipane2830 • Февраль 6, 2024 • Лабораторная работа • 1,296 Слов (6 Страниц) • 71 Просмотры
Тема работы: Скелетная анимация актёра и его перемещение по сцене
Цель: Научиться создавать анимированные модели актёров, персонажей 3D сцен, перемещающихся по открытой местности или в помещениях средствами библиотеки GLScene для C++Builder.
Задание
- Создайте проект L12 с необходимыми компонентами на форме, объектом TGLActor и рельефом местности TGLTerrain.
- Добавьте пользовательские материалы к объекту
- Создайте визуализацию физического взаимодействия актера с объектами сцены при навигации по сцене.
- Включите снимок экрана, скриншот, в отчет.
Выполнение работы
1) Код программ в C++ Builder
Файл fAnimation.h:
//---------------------------------------------------------------------------
#ifndef fAnimationH
#define fAnimationH
#include <vcl.h>
#include <tchar.h>
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Imaging.Jpeg.hpp>
#include "GLS.Scene.hpp"
#include "GLS.Cadencer.hpp"
#include "GLS.SceneViewer.hpp"
#include "GLS.Objects.hpp"
#include "GLS.GeomObjects.hpp"
#include "GLS.BaseClasses.hpp"
#include "GLS.Coordinates.hpp"
#include "GLS.Navigator.hpp"
#include "GLS.SkyDome.hpp"
#include "GLS.VectorFileObjects.hpp"
#include "GLS.Keyboard.hpp"
#include "GLS.VectorGeometry.hpp"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TGLSceneViewer *GLSceneViewer1;
TPanel *Panel1;
TCheckBox *CBMouseLook;
TGLScene *GLScene1;
TGLSkyDome *SkyDome1;
TGLDisk *Disk1;
TGLLightSource *GLLightSource2;
TGLDummyCube *DummyCube1;
TGLFreeForm *FreeForm1;
TGLDummyCube *DummyCube2;
TGLActor *Actor1;
TGLActor *Actor2;
TGLDummyCube *DummyCube3;
TGLCamera *GLCamera1;
TGLCadencer *GLCadencer1;
TGLNavigator *GLNavigator1;
TGLUserInterface *GLUserInterface1;
TGLFreeForm *GLFreeForm3;
TGLFrustrum *GLFrustrum1;
TGLSphere *GLSphere1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall CBMouseLookClick(TObject *Sender);
void __fastcall GLCadencer1Progress(TObject *Sender, const double deltaTime, const double newTime);
private: // User declarations
void __fastcall AddMushrooms();
void __fastcall HandleKeys(const double deltaTime);
int MushRoomCounter;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Файл fAnimation.cpp:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "fAnimation.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "GLS.BaseClasses"
#pragma link "GLS.Cadencer"
#pragma link "GLS.Coordinates"
#pragma link "GLS.GeomObjects"
#pragma link "GLS.Navigator"
#pragma link "GLS.Objects"
#pragma link "GLS.Scene"
#pragma link "GLS.SkyDome"
#pragma link "GLS.VectorFileObjects"
#pragma link "GLS.SceneViewer"
#pragma link "GLS.File3DS"
#pragma link "GLS.FileMD2"
#pragma resource "*.dfm"
TForm1 *Form1;
const int
cWalkStep = 6;
const int
cStrafeStep = 6;
const int
cRotAngle = 60;
const int
cRunBoost = 2;
const int
cSpread = 90;
const int
cNbMushrooms = 15;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
...