3D World SandBox
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Форма входа
Категории раздела
Мои статьи [7]
Поиск
Главная » Статьи » Мои статьи

Первые шаги в GLScene

Нашим первым шагом будет создание простого кубика, звучит не так страшно =).

Поместим на форму два объекта: 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
Public
   mx, my : Integer

Должно получиться что-то вроде этого:


Теперь с помощью мышки мы можем вращать камеру вокруг куба.

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;
Категория: Мои статьи | Добавил: 3dgid (13.06.2009)
Просмотров: 1588 | Рейтинг: 5.0/1 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Друзья сайта
Контакты
Мой почтовый ящик www.eva.net@gmail.com
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2026
Конструктор сайтовuCoz