Нашим первым шагом будет создание простого кубика, звучит не так страшно =).
Поместим на форму два объекта: GLScene и GLSceneViewer.
GLScene – инспектор объектов нашей сцены.
GLSceneViewer – окно в котором отображается наша сцена.
Если хотите, то можете поменять цвет GlSceneViewer1 в его свойствах поставив Buffer.BackgroundColor=clWhite
Двойным щелчком левой кнопки мыши на GLScene1 входим в инспектор объектов и создадим простой объект Cube (Scene objects => Add object => Basic geometry => Cube ).
Далее создадим камеру (Cameras => Add camera) и источник света (Scene objects => Add object => LightSource).
Теперь в GLSceneViewer1 в разделе Camera выбираем GLCamera1.
Займёмся настройкой камеры: Выбрав GLCamera1 в Object Inspector’е находим раздел TargetObject и выбираем Cube1.
А теперь поменяем координаты камеры (т.к. всем объектам в момент
создания задаются одинаковые координаты и наша камера просто не увидит
кубик) в разделе Position устанавливаем x = 1, y = 1 , x = 1 (писать
без знака равно естественно). Установим такие же координаты и источнику
света GLLightSource1.
Теперь немного программного кода (на события OnMouseDown и OnMouseMove у GlSceneViewer1):
Код на языке Delphi procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
mx:=x; my:=y; //Запомнить координаты мыши
end;
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Shift<>[] then begin //Если нажата клавиша
GLCamera1.MoveAroundTarget(my-y, mx-x); //Перемещаем камеру вокруг целевого объекта
GLLightSource1.Position:=GLCamera1.Position; //Пусть источник освещения будет рядом с камерой
mx:=x; my:=y;
end;
end;
И в разделе public не забудьте объявить переменные mx и my:
Код на языке Delphi
Должно получиться что-то вроде этого:
Теперь с помощью мышки мы можем вращать камеру вокруг куба.
4. Текстуры
Во-первых можно изменять цвет объекта без использования текстур. В Object Inspector’е выбрав раздел Material нажимаем на троеточие:
В появившемся окне Material Editor можно менять цвет объекта. При
запуске приложения будет заметно что световые эффекты остались, но при
использовании текстуры световых эффектов не будет видно (затемнение и
т.д.). Чтобы они стали видны TextureMode надо указать в tmModulate.
Чтобы наложить текстуру на объект необходимо в Material Editor’е выбрать раздел Texture:
Нажав на троеточие указать путь к текстуре (ВНИМАНИЕ!!! Текстура
должна быть формата *.BMP иначе при использовании других форматов
текстура не будет отображаться. Чтобы использовать текстуры других
форматов, необходимо подключить соответствующие модули в раздел USES.
Например JPEG, для *.jpg).
И не забудьте убрать галочку Disable, чтобы текстуру было видно.
5. Примитивное движение - вращение
Для движения нам понадобится GLCadencer (поместите на форму).
Поставьте GLCadencer1.Scene=GLScene1
Теперь от вас необходимо только писать:
Cube1.Turn(deltaTime*X) – Вращение объекта (в нашем случае куба), где X скорость вращения.
Cube1.Roll(deltaTime*X) – Вращение(качение) объекта, трудно объяснить словами лучше один раз увидеть.
Код на языке Delphi procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
begin
Cube1.Turn(deltaTime*10);
end;
или
Код на языке Delphi procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
begin
Cube1.Roll(deltaTime*10);
end;
|