Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenGL: работа с камерой 
:(
    Опции темы
Ripper
Дата 5.1.2005, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



Вот недавно начал читать OpenGL и появилось кучу вопросов...
как пользоватся командой gluLookAt? Я так понимаю её можно использовать в качестве камеры?
Просто я смотрел примеры некоторые но все равно вообще не пойму с этими командами
типа glFrustum, glulookat, gluPerspective
Вот допустим рисую пару объектов и хочу перемещатся в пространстве кнопочками..
я видел пример посла с цилиндрами) вот классно smile
в gluLookAt первые 3 параметра - координаты точки откуда я смотрю. Вторые 3 параметра - куда я смотрю. и последние...непонимаю их смысл)
Так вот... нарисовал я допустим сферу. Вот что у меня в ресайзе. (кстати тут я про эти матрицы тоже не догоняю ничего. просто копирнул с примера..
Код

procedure TForm1.FormResize(Sender: TObject);
begin
glViewport(0, 0, ClientWidth, ClientHeight);
glMatrixMode (GL_PROJECTION);
glLoadidentity;// - я так понимаю сбрасывает все параметры на начальные т.е. саму систему координат?
gluPerspective(70,clientwidth/clientheight,1,900);// тоже не совсем пойму =(
glMatrixMode (GL_MODELVIEW);
glLoadidentity;
InvalidateRect(Handle, nil, False);
end;

Вот рисование:
Код

begin
BeginPaint(handle, ps);
wglMakeCurrent(Canvas.Handle, hrc);
 glPushMatrix;
 glViewPort(0,0,ClientWidth, ClientHeight);
 glMatrixMode (GL_MODELVIEW);
 glLoadidentity;
 gluLooKAt(cam_x,cam_y,cam_z,0,0,0,0,1,0);


 glClear(gl_color_buffer_bit or gl_depth_buffer_bit);
 glutSolidSphere(0.5,10,10);

 glPopMatrix;
 SwapBuffers(dc);
 wglMakeCurrent(0,0);
 endpaint(handle,ps);
end;


просто я не понимаю с матрицами эти функции и путаюсь в последовательности .. что куда надо влепить. вообще GL_MODELVIEW в ресайзе формы же должно быть? Или...хз.
И вот ещё:
Код


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
key:=UpCase(key);
case Key of
  'S' : cam_z := cam_z-0.1;
 end;
end;
end.

При создании формы cam_x, cam_y, cam_z := 0
Т.е. КАК Я понимаю сначала не че не должно быть видно а когда я нажимаю S то точка зрения по оси Z уменьшается т.е. я должен видеть сферу.. ну так тут все замудренно что кроме того как нарисовать кубик я вообще нечего не пойму)
кто нибудь объяснит как пользоватся glMAtrixMode, gluLookAt, glPerspective и что когда применять лучше? В итоге я хочу сделать хотя бы небольшой уровень из плоскостей по которому можно двигатся(опять же glulookat?)
Да и в примере посла о цилиндрах который тама в gllookat второй тройке параметры какие то непонятные были) меня вообще убивают синусы и косинусы т.к. я ещё в школе так легко применять их не могу =(
Вообще прошу помочь разобратся с этими видами блин)
smile


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
p0s0l
Дата 6.1.2005, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Цитата(Ripper @ 5.1.2005, 22:51)
в gluLookAt первые 3 параметра - координаты точки откуда я смотрю. Вторые 3 параметра - куда я смотрю. и последние...непонимаю их смысл)
Это направление "верха", с помощью этого вектора можно наклонять камеру влево-вправо...
Цитата(Ripper @ 5.1.2005, 22:51)
glLoadidentity;// - я так понимаю сбрасывает все параметры на начальные т.е. саму систему координат?
Загружает единичную матрицу в текущую активную матрицу (выбранную с помощью glMatrixMode)
Цитата(Ripper @ 5.1.2005, 22:51)
gluPerspective(70,clientwidth/clientheight,1,900);// тоже не совсем пойму =(
Тут параметры:
1) Угол обзора = 70
2) Aspect Ratio - соотношение ширины к высоте, чтобы было без искажения, нужно, чтобы отношение было такое же, как и у окна, в которое выводится изображение
3, 4) передняя и задняя отсекающая плоскость (в смысле, плоскость, перпендикулярная оси Oz), т.е. это расстояния по оси Z, между которыми будет рисоваться, а вне этой зоны - будет отсекаться...
Цитата(Ripper @ 5.1.2005, 22:51)
кто нибудь объяснит как пользоватся glMAtrixMode, gluLookAt, glPerspective и что когда применять лучше?

В этом разделе есть закрепленная тема "Полезные ссылки" - поищи, это самые азы, должны быть расписаны...



--------------------
С уважением, г-н Посол.
PM   Вверх
Ripper
Дата 6.1.2005, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



хм.. ну все равно же в glLookAt последний параметр ненужен?? мы же может поставить координаты камеры куда угодно и смотреть куда угодно? И почему пример выше не работает? Помойму даже действие на кнопку не работает т.к. я ставил showmessage('..'); и он не чего не показывал по нажатию
у меня есть книга где это все описывется но понять я это не понимаю.. например glClipPlane - как она работает хз =) написано что отсекает по одной координате часть картинки.. ну незнаю как одной точкой задается плоскость... мы в геометрри в школе тока начали стереометрию проходить но все же.. через точку можно провести плоскость параллельную одной из осей.. тама просто координаты..
кароче блин..фигово)



--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
p0s0l
Дата 6.1.2005, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Цитата(Ripper @ 6.1.2005, 10:51)
хм.. ну все равно же в glLookAt последний параметр ненужен??
Нужен
Цитата(Ripper @ 6.1.2005, 10:51)
мы же может поставить координаты камеры куда угодно и смотреть куда угодно?
Да... Но как ты будешь смотреть, под каким углом ?
Пример:
камера = твоя голова
цель камеры = монитор
всё это можно задать первыми двумя векторами
теперь третий вектор - он отвечает за то, как у тебя наклонена голова - ты ведь можешь наклонить голову влево или вправо (положить на плечо (своё smile ) )... Не знаю уж как понятнее объяснить smile





--------------------
С уважением, г-н Посол.
PM   Вверх
Ripper
Дата 6.1.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



а ...ну так и как угол задать 3мя координатами? Он же ээ в градусах обычно задается...
ну допустим есть камера моя голова)) впереди объект. как мне посмотреть на него под 60 градусов влево (голову наклонил влево)
?)) НАпример если стоит y - 1 то под 90 градусов смотрю? Или как?
И почему пример тот не рабоатет?


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
p0s0l
Дата 6.1.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Цитата(Ripper @ 6.1.2005, 21:42)
а ...ну так и как угол задать 3мя координатами?
Ну я тебе очень упрощенно сказал smile
На самом деле этим тремя векторами (=9 параметрами) определяется точка обзора, и "направления" осей:
Цитата(MSDN)
The gluLookAt function creates a viewing matrix derived from an eye point, a reference point indicating the center of the scene, and an up vector. The matrix maps the reference point to the negative z-axis and the eye point to the origin, so that when you use a typical projection matrix, the center of the scene maps to the center of the viewport. Similarly, the direction described by the up vector projected onto the viewing plane is mapped to the positive y-axis so that it points upward in the viewport. The up vector must not be parallel to the line of sight from the eye to the reference point.

Короче, тебе больше надо вникать в теорию, геометрию, матрицы и векторы smile



Цитата(Ripper @ 6.1.2005, 21:42)
И почему пример тот не рабоатет?
А фиг его знает smile
Выложи полный код юнита, я гляну...


--------------------
С уважением, г-н Посол.
PM   Вверх
Ripper
Дата 6.1.2005, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



Да не школьный уровень эти матрицы)
эх.. незнаю че намутил... необижайтесь =)
Код

unit test;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, OpenGL, StdCtrls, ExtCtrls, math, dglut2; \\dglut2 - у мя так называется он =)

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormPaint(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure FormResize(Sender: TObject);
   procedure FormKeyPress(Sender: TObject; var Key: Char);

 private
 hrc: HGLRC;
 DC: HDC;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
var
   cam_x, cam_y, cam_z: GLFloat;

procedure SetDCPixelFormat (hdc: HDC);
var pdf: TPixelFormatDescriptor;
   nPixelFormat:Integer;
begin
FillChar(pdf, sizeof(pdf), 0);
pdf.dwFlags:=PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat:=ChoosePixelFormat(hdc, @pdf);
SetPixelFormat(hdc, nPixelFormat, @pdf);
end;

procedure TForm1.FormCreate(Sender: TObject);
const
   LPos: Array [0..2] of GLFloat =  (0, 0, 1);

begin

DC:=GetDC(handle);
SetDCPixelFormat(Canvas.Handle);
hrc:=wglCreateContext(Canvas.Handle);
wglMakeCurrent(dc, hrc);
glViewport(0, 0, ClientWidth, ClientHeight);

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glClearColor(0.0,0.0,0.0,0.0);
glLightFv(GL_LIGHT0,GL_POSITION,@Lpos);
cam_x:=0;
cam_z:=0;
end;

procedure TForm1.FormPaint(Sender: TObject);

var
   ps:TPaintStruct;

begin \\имхо я тут все перемутал.. т.к. вообщем то не совсем понимаю эти матрицы
BeginPaint(handle, ps);
wglMakeCurrent(Canvas.Handle, hrc);

glPushMatrix;
  glViewPort(0,0,ClientWidth, ClientHeight);
  glMatrixMode (GL_MODELVIEW);
  glLoadidentity;
  gluLooKAt(cam_x,0,cam_z,0,0,0,0,1,0);

  glClear(gl_color_buffer_bit or gl_depth_buffer_bit);
  glutSolidSphere(1,10,10);

  glPopMatrix;
  SwapBuffers(dc);
  wglMakeCurrent(0,0);
  endpaint(handle,ps);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
wglMakeCurrent(0, 0);
wglDeleteContext(hrc);
ReleaseDC (Handle, DC);
DeleteDC (DC);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
glViewport(0, 0, ClientWidth, ClientHeight);
glMatrixMode (GL_PROJECTION);
glLoadidentity;
gluPerspective(100,clientwidth/clientheight,1,900);
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
key:=UpCase(key);
case Key of
  'S' : cam_z:=cam_z-0.1;
  'W' : cam_z:=cam_z+0.1;
  'A' : cam_x:=cam_x-0.1;
  'D' : cam_x:=cam_x+0.1;
 end;
end;
end.



ВОт как я понимаю сначала я нахожусь в 0,0,0 ну голова ака камера))
потом кнопкой S я отдаляюсь от сферы и должен её видеть??
Просто половина команд я уже сто раз слышал про параметры а как то почуствовать не могу -_-
Ну... может ты объяснишь чего тут не так)


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
p0s0l
Дата 6.1.2005, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Всё работает smile

Ты только перерисовку поставь...
Ведь OnPaint метод вызывается только когда нужно рисовать форму...
А нажатие кнопки "S" (к примеру) не означает, что надо перерисовывать форму...
Ты сам это должен указать - либо вызвать метод Paint, либо сделать InvalidateRect (Handle, nil, False) - тогда OnPaint сам сработает...
Куда это нужно поместить ? Либо в OnKeyPress, а лучше - повесь таймер с интервалом 1, и в его событии OnTimer напиши:
Код
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Paint;
end;


А у тебя получалось, что камера "ездила", но на экране это не отображалось, т.к. не происходило перерисовки...

Только странно это:
Цитата(Ripper @ 6.1.2005, 10:51)
Помойму даже действие на кнопку не работает т.к. я ставил showmessage('..'); и он не чего не показывал по нажатию
Это может быть лишь в том случае, если обработчик у тебя написан, но ты не назначил его на событие (Events в инспекторе объектов, посмотри у формы событие OnKeyPress - там должно быть "FormKeyPress")...


--------------------
С уважением, г-н Посол.
PM   Вверх
Ripper
Дата 6.1.2005, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



Так.. работает но не так как надо)) Непойму...
Вот я нажимаю S (Я еЩЁ ОДНу сферу дорисовал : glTranslatef(0,1,0); glutSolidSphere(1,10,10);)
у меня появляется 2 сферы. нажимаю несолько раз вид увеличивается, а должен уменьшатся же. Потом ещё нажимаю - начинает уменьшатся и сферы начинают светиться... так я же источник поставил в 1 по Z.. вроде сразу должна светится.. вообщем как бы я не тыркал эфект один и тот же
кстати помойму надо так писать:
'S' : cam_z:=cam_z+0.1;
'W' : cam_z:=cam_z-0.1;
я со знаками перепутал.. ведь когда я отдаляюсь моя камера увеличивается по Z.. но все равно бред почему сначала сферы приближаются потом отдаляются.. как то не так все работает smile


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
p0s0l
Дата 7.1.2005, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Цитата(Ripper @ 6.1.2005, 22:59)
Так.. работает но не так как надо)) Непойму.
А как надо ?

Цитата(Ripper @ 6.1.2005, 22:59)
Потом ещё нажимаю - начинает уменьшатся и сферы начинают светиться... так я же источник поставил в 1 по Z.. вроде сразу должна светится..
Дело в том, что вначале камера находится внутри сферы, поэтому она видит внутреннюю поверхность сферы... А по-умолчанию освещение применяется только для передней части поверхности... Поэтому когда камера в сфере, освещения якобы и нет...
Когда выезжаешь из сферы - ты уже видишь передние грани, и они освещаются...

Цитата(Ripper @ 6.1.2005, 22:59)
кстати помойму надо так писать:
'S' : cam_z:=cam_z+0.1;
'W' : cam_z:=cam_z-0.1;
я со знаками перепутал.. ведь когда я отдаляюсь моя камера увеличивается по Z..
Не знаю - на знаю smile Смотря какое направление ты считаешь "приближением", а какое - "отдалением" smile... Таких направлений - бесконечное множество в твоем случае, ты рассмотрел только 2 - вдоль оси Oz smile...

Цитата(Ripper @ 6.1.2005, 22:59)
но все равно бред почему сначала сферы приближаются потом отдаляются..
Ты же понял, что gluLookAt задаёт по крайней мере эти 2 параметра:
1) координаты камеры
2) координаты "цели" (на которую смотрит камера)

Ты сделал так, что цель всегда находится в центре сферы по координатам (0, ,0, 0). Теперь, как бы ты не двигал камеру, она всё равно будет смотреть на эти сферы... Это понятно ?...
Далее, когда ты едешь издалека на сферу, она приближается (камера смотрит в направлении движения к сфере). Потом ты в неё въезжаешь, видишь неосвещяемые кишки сферы, выезжаешь. И едешь в том же направлении... Но куда ты смотришь теперь ? На сферу, т.е. уже назад smile, против направления движения... Поэтому теперь она будет от тебя удаляться...

Сам подумай: разве можно вечно приближаться с одинаковой скоростью к неподвижной сфере ? Всё равно когда-нибудь въедешь в неё и выедешь...

Чтобы разбить твои иллюзии, нужно создать сцену, которая будет не симметрична относительно оси Oy - иначе нет разницы между движением по оси Ox и по оси Oz (вернее есть, но ты её не увидишь)...
Для этого вместо glTranslatef(0,1,0) постававь хотя бы glTranslatef(0,1,1)...



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 7.1.2005, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Насчет:
Цитата(Ripper @ 6.1.2005, 10:51)
glClipPlane - как она работает хз =) написано что отсекает по одной координате часть картинки.. ну незнаю как одной точкой задается плоскость...
Может быть несколько отсекающих плоскостей...
Первый параметр функции задает № отсекающей плоскости (GL_CLIP_PLANE0, GL_CLIP_PLANE1 и т.д.)
Второй параметр указывает на массив из 4 GLdouble'ов, являющихся коэффициентами уравнения плоскости:
Ax + By + Cz + D = 0
(как видишь, нужно всего 4 числа, чтобы задать плоскость, а ты говорил про 3 точки - а это уже 9 чисел...)

Это сообщение отредактировал(а) p0s0l - 7.1.2005, 00:57


--------------------
С уважением, г-н Посол.
PM   Вверх
Ripper
Дата 7.1.2005, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



Ну про массив в clipplane я лично не догоняю... как это делается... что за D кстати,)
А насчет камеры... хм.. ура =)
В прорисовке: gluLooKAt(cam_x,cam_y,cam_z,look_x,look_y,look_z,0,1,0);
в создании oкна:
Код


cam_x:=0;
cam_y:=0;
cam_z:=0;
look_x:=0;
look_y:=0;
look_z:=-1;

и обработка клавиш:
Код

case Key of
  'S' :
    begin
     cam_z:=cam_z+0.1;
     look_z:=look_z+0.1;
    end;
  'W' :
    begin
     cam_z:=cam_z-0.1;
     look_z:=look_z-0.1;
    end;
  'A' :
   begin
    cam_x:=cam_x-0.1;
    look_x:=look_x-0.1;
   end;
  'D' :
   begin
    cam_x:=cam_x+0.1;
    look_x:=look_x+0.1;
   end;
   'E' :
    begin
     cam_y:=cam_y+0.1;
     look_y:=look_y+0.1;
    end;
   'Q' :
    begin
     cam_y:=cam_y-0.1;
     look_y:=look_y-0.1;
    end;

все работает =))
Добавлено @ 11:34
Но про поворот я не догнал) как это все делается и вот я наугат поставил в камере 1 по У...



--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
p0s0l
Дата 7.1.2005, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Цитата(Ripper @ 7.1.2005, 11:32)
Ну про массив в clipplane я лично не догоняю... как это делается... что за D кстати,)
Просто коэффициент уравнения...

Цитата(Ripper @ 7.1.2005, 11:32)
Но про поворот я не догнал) как это все делается и вот я наугат поставил в камере 1 по У...
А попробуй вместо (0, 1, 0) поставить:
(0, -1, 0) - камера будет вниз головой
(1, 0, 0) - камера будет повернута на 90 градусов влево (как если положить голову на левое плечо)



--------------------
С уважением, г-н Посол.
PM   Вверх
Ripper
Дата 7.1.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



погоди а как тогда менять угол зрения понемногу? Т.е. если я имняю от 0.1 до 1 то постепенно меняю угол зрения?


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
p0s0l
Дата 7.1.2005, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Цитата(p0s0l @ 7.1.2005, 21:32)
(1, 0, 0) - камера будет повернута на 90 градусов влево (как если положить голову на левое плечо)
Т.е. я тут оговорился: вправо конечно же smile

Цитата
погоди а как тогда менять угол зрения понемногу? Т.е. если я имняю от 0.1 до 1 то постепенно меняю угол зрения?
Эмм... Где меняешь ?...
Для угла обзора есть отдельный параметр в gluPerspective...
Добавлено @ 22:01
А... Всё понял smile

Ты говорил про угол наклона ?
попробуй (cos(alpha), sin(alpha), 0), где alpha - угол наклона в радианах...



--------------------
С уважением, г-н Посол.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0985 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.