GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (211 стр.)

Сообщения на форуме пользователя Andrey (211 стр.)

Проблема с поворотом камеры при переходе через 90 градусов, камера переворачивается3 авг. 200520:15#4
Nazik
>Или я не так понял вопрос?
ты все правильно понял, только у тебя камера жестко привязана к конретному Api т.е. к OpenGL, а у меня она работает и в OpenGL и в Direct3D использую матрицы и вектора посчитанные вручную при повороте...
Проблема с поворотом камеры при переходе через 90 градусов, камера переворачивается3 авг. 200520:09#2
Семен
Я знаю, а с матрицей можно это же сделать?есть же выход :)
Проблема с поворотом камеры при переходе через 90 градусов, камера переворачивается3 авг. 200519:44#0
Привет всем!!!
думаю проблема понятна.Хочу чтобы камера не переворачивалась.
Вот как я это попробовал сделать сохраняем изменяемые вектора потом их пересчитываем умножая на матрицу поворота.
потом проверяем угол между вектором направленяи камеры с плоскостью X0Z(т.е. с проекцией этого вектора на эту плоскость). Если угол больше 90 градусов, то перезаписываем сохраненные вектора значениями сохраненными до перемножения с матрицей поворота, иными словами не меняем эти вектора
    if (point.y != 0) {     //если поворот был
//проекция вектора направления на плоскость X0Z
        Vector3D projX0Z(Direction.x, 0, Direction.y);
//сохранить вектор напрвления
        Vector3D dir = Direction;
//сохранить вектор верха
        Vector3D up = Up;
//повернуть
        Mat.RotateMatrix(Right, -point.y);
//повернуть вектор напрвления
        Direction = Direction * Mat;
//повернуть вектор верха
        Up = Up * Mat;
//выичислить угол между векторами
        float a = AngleBetweenVectors(Direction, projX0Z);
//проверить угол на 90 градусов
        if (a >= Pi / 2) {
            Direction = dir;
            Up = up;
        }

    }
Почему не корректо работает? к примеру, иногда камера не вращается застревая  в каком-то месте, иногда она все равно переворачивается. Что я делаю не так?
Спасибо всем заранее.
С  Уважением Андрей.
Странная проблема со смешанными массивами(glInterleavedArrays) в OpenGL3 авг. 200518:59#11
L00bis
Еще раз говорю что этот код работает на более сложной структуре:
 //вершина для OpenGL
    struct OpenGLVertex {
        //Текстурные координаты
        Vector2D tvert;
        //Нормаль
        Vector3D normal;
        //координаты вершины
        Vector3D vert;
    };
//Грань Для OpenGL API
    struct OpenGLVertice {
        OpenGLVertex openGLVertex[3];
    };
    //Поверхность
    class Surface {
...
        //полигоны
        void *vertices;
        //число полигонов
        unsigned int numVertices;
};
...
            glInterleavedArrays(GL_T2F_N3F_V3F, 0, surface.numVertices);
            glDrawArrays(GL_TRIANGLES, 0, 3 * surface.vertices);
...
дак вот тут stride == 0
почему не работает на простых линиях? ну скажи ответ :)
Прошу Оценить Octree-дерево + столкновения2 авг. 200518:48#18
Zlodei
>ну тоесть если все точки полигона лежат в разных узлах а он пересекает еще пару то он запишется во все узлы?...
я просто оппутно имею временный контейнер (массив) индексов полигонов уже попавших в какой-то узел. при обработке очередного полигона я сморю а не занесен ли он уже в другой узел если нет то заношу и попутно заношу его индекс в контейнер описанный выше. Таким образом ликвидируется дублирование полигонов.
>и еще вопрос..ты хранишь саму геометрию ?в узлах?или в узлах только индексы?...
когда доработаю то будет так: я гружу геометрию во временный мешь, потом копирую весь контейнер матрериалов из этого меша в узел ввиде static переменной.Для каждого узла я храню контейнер(массив) так называемых поверхностей. Поверхностть - это структура данных хранящая в себе вершинный буфер + массив полигонов пренадлежащих конкретному материалу с индексом этого материала. Вершинный буфер нужен для рендера, а массив полигонов можно тоже для этого пимернить когда видео карта не поддерживает расширения ARB_vertex_buffer_Object, это в частности относиться для OpenGL-рендера, т.к. для Direct3D всегда рендер использует вершинный буфер.А так массив полигонов использую для проверки столкновений внутри узла с камерой.
Прошу Оценить Octree-дерево + столкновения2 авг. 200518:19#16
Keysall
>и + немогу понять каким образом можно уменьшить высоту полёта ,никакие клавиши >кроме стрелочек результата не дали,
дак "F" и "f" прекрасно работают! может клавиатура не была переключена? берешь нажимаешь их потом опскаешь камеру и запрещаешь полет опять нажимая эти клавиши.  у всех работает.
>а по default можно столкнуться только с башней :)
как опустишься можно сталкиваться не только с ней.
L1f
>Даа, камера ужастная...
это же демка камеру еще не доработал...
1. fps показываются только в fullscreen, в окне его не видно
да забей на оконный режим...
>2. Почему если убрать отрисовку узлов октри, убирается и коллижн?
ты видать нажал рендер напрямую вот и отрубились проверки на столкновения.
>3. При колизии камеру трясет - либо слишком далеко отодвигаешь, либо еще что-то.
я пока делал тривиально если камера столкнулаь просто ставим ее на предыдущую позицию.

Правка: 2 авг. 2005 18:20

Прошу Оценить Octree-дерево + столкновения1 авг. 200519:27#13
Keysall
>столкновения к сожалению не работают...
как не работают??? можно поподробнее?
ты первый это сказал никто такое не говорил :(
может ты имеешь ввиду они не совсем корректно работают?
Прошу Оценить Octree-дерево + столкновения1 авг. 200519:15#11
Keysall
Привет!!!!
>1. несколько странно ведёт себя свет.... если директионал , думаю неправильно считаешь направление...
All, Keysall
давай-те пока забьем на графику и освещение? и т.д. :))  я хочу чтобы все было живое, т.е. работали столкновения потом уже текстуры освещение тени шейдеры и т.д...
>2. почему кол-во полигонов всегда одинаково? смотрим мы на несколько узлов или на один или на все , одинаково?????
это просто отображает число полигонов всегьо уровня... я попытался сделать отображение в данный момент потом забил...
>3. по какой причине переделывал с AABB tree на октрее??? вроде тогда ты собирался грамотно доделать октрее???
Ты меня с кем-то спутал я делаю и делал только Octree :)
>4. на управление пока забей, это же демо octree а не управления :))
я так и делаю чуть чуть исправил для удобство
Прошу Оценить Octree-дерево + столкновения1 авг. 200518:57#8
all
Исправелены глупые ошибки по обработке столкновений.
Остались как мне кажется частные случаи которые я не учел.
У меня несолько вопрос как слделать скольжение по стене?
я предстьавляю это так:
если есть столкновение то мы вычисляем вектор скольжения оставялю нетронутой ту координату ыектора положения камеры по которой есть ограничения  из-за присутсвия полигона. Я обяснил как смог надеюсь понятно? Я правильно опнимаю? просто сегодня думожет попробую.

gvm
>Если с объемом архива что-нибудь сделаеш, то заценю :)
>(поменьше текстур там сделай чтоли...)
>ЗЫ не в обиду - просто трафик не хочется превышать...
Давай на почту скину? я сделал чуть больше 1 метра...

Странная проблема со смешанными массивами(glInterleavedArrays) в OpenGL1 авг. 200518:36#8
cppguru
Привет! ты кстати мне уже помогал :)
и сколько его ставить в данном случае? по моему 0 т.к. они плотно упакованы в массиве.
Странная проблема со смешанными массивами(glInterleavedArrays) в OpenGL29 июля 200519:02#5
All
больше никто не может ничего подсказать?

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр