просто где не прочтеш:
-все новички до поры пользуются эйлером,
в перофессиональных играх пользуются кватернионами.
отсюда и захотел чтоб сразу так сказать по проффесиональному:)
iArt
> вопрос ! стоит ли овчинка выделинки ? я про использование кватов в камере ?
daim
> такс а по поводу матриц вращения,
> такой вот вопросец:
> сами вращения представляют собой углы эйлера, так??
> если да то как же с "карданным сцеплением" решать вопрос?
Я думаю тут зависит от того, что у тебя может делать камера... Если это вид от первого лица, ты ведь не сможешь добиться gimbal lockа, а если это например камера самолёта, то тут без кватернионов никак... Также без кватернионов никак если придётся интерполировать (с матрицами вроде как глючно)...
http://gpwiki.org/index.php/OpenGL:Tutorials:Using_Quaternions_to… sent_rotation
А вот тут тоже можно про gimbal lock поглядеть:
http://www.anticz.com/eularqua.htm
Booster
> Что за карданное сцепление?
Шарнирный замок звучит не намного лучше... :))
Executor
как раз вид от первого лица
))) точнее не совсем как раз
Проблема блокировок гимбалов существует в гимбаловых системах координат, то есть в таких где углы задаются относительно мировой СК. Или нам нужно задавать углы в мировой системе координат. В FPS камере, где углы относительны, просто накапливаем изменения в матрице. Если нужны абсолютные углы, то конечно кватернион.
не получается........
void RenderScene()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
PushMatrix();
glMultMatrixf(my.mat); //my - член класса для работы с матрицами
glPushMatrix();
glColor3f(1.0f,1.0f,1.0f);
glTranslatef(0.0f,heightPlane,0.0f);
glEnable(GL_TEXTURE_2D);
.....
правильно начинаю рендер сцены нет?
уже сил бл... никаких нет.
мышиная функция, начало :
void mouse(int x, int y)
{
if(Nx1>x)
{
Angle2=-1;
my.RotateY(Angle2);
Nx1=x;
}
....
daim
> камера вращается вокруг 0,0,0, - всех осей,
всмысле мне надо вокруг своих осей вращение
daim
> PushMatrix();
> glMultMatrixf(my.mat); //my - член класса для работы с матрицами
Это многое сказало... :)
Где проэкционная матрица, где моделвью матрица?
Что в my.mat?
Executor
> Что в my.mat?
ну как что, массив из 16 дробных чисел.
Executor
> Где проэкционная матрица, где моделвью матрица?
вот
void ResizeFunc(GLsizei w,GLsizei h)
{
GLfloat AspectRatio;
if(h==0)h=1;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
AspectRatio=(GLfloat)w/(GLfloat)h;
gluPerspective(45.0f,AspectRatio,0.10f,4000.f);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
my=my.getIdentity();
my.mat[14]=2;
glMultMatrixf(my.mat);
}
Executor
> Где проэкционная матрица, где моделвью матрица?
в рендере сейчас нет,
или в рендере их тоже необходимо устанавливать?
я б, конечно с удовольствием еще и свой класс для работы с матрицами выложил ,
только боюсь читать никто не станет
вроде начинает прояснятся,
перемножал матрицы оказывается наоборот..
По-моему, такая пустяковая тема не стоит четырех страниц. Имхо, достаточно одну нормальную доку прочитать и не баломутить воду.
Woland
полностью с тобой согласен.
видимо нет нормальной доки,
читаю все подряд(((
вот если бы ты дал ссылку на нормальную доку
Woland
> такая пустяковая тема не стоит четырех страниц.
хотя не совсем я стобой согласен)))
вчера гнома начал читать)))
463 стр. ёханый бабай
Тема в архиве.
Тема закрыта.