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

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

Отсечение по пирамиде видимости6 окт. 20049:57#56
frol
>Незнаю как у тебя реализован класс Camera. У меня в нем есть позиция и направление куда она смотрит.
у меня камра задается с помощью векторов  так и у тебя
Position - позиция
Right,Up,Direction - задание направления
так я поробую твой вариант
Отсечение по пирамиде видимости6 окт. 20048:51#52
frol
На третьей странице пост 33 разве не подходит?
Я попробую твой вариант.
>А как на счет выворачивания нормалей плоскостей.
Объясни пожалуйста что это такое.
Отсечение по пирамиде видимости5 окт. 200414:29#50
frol
>Чтото я не нашел на странице 2 этого способа. Я так делаю и у меня все работает.

Извини я ошибся это на первой было вот

//Проверка нахождения точки в пирамиде видимости
  inline bool Frustum::PointInFrustum( float x, float y, float z)
  {
     int p;
//     for (p = 0; p < 6; p++)
    //  if (PlaneDistance(x, y, z, frustum[p][0], frustum[p][1], frustum[p][2],frustum[p][3]) <= 0)
      if (PlaneDistance(x , y, z, frustum[0][0], frustum[0][1], frustum[0][2]) <= 0 ||
         PlaneDistance(x , y, z, frustum[1][0], frustum[1][1], frustum[1][2],frustum[p][3]) <= 0 ||
         PlaneDistance(x , y, z, frustum[2][0], frustum[2][1], frustum[2][2],frustum[p][3]) <= 0 ||
         PlaneDistance(x , y, z, frustum[3][0], frustum[3][1], frustum[3][2],frustum[p][3]) <= 0 ||
         PlaneDistance(x , y, z, frustum[4][0], frustum[4][1], frustum[4][2],frustum[p][3]) <= 0 ||
         PlaneDistance(x , y, z, frustum[5][0], frustum[5][1], frustum[5][2],frustum[p][3]) <= 0)
       return false;
     return true;
}
//Расстояние от точки (x1;y1;z1) до плоскости с нормалью {x2,y2,z2} d - расстояние по нормали до начала координат
inline float Frustum::PlaneDistance(float x1, float y1, float z1, float x2, float y2, float z2, float d)
{
  return (x1 * x2) + (y1 * y2) + (z1 * z2) + d;
}



//Теперь я пробую определить нахождения треугольника в пирамиде видимости:

//Проверка нахождения всех 3 вершин в пирамиде видимости
if (PointInFrustum(_x1, _y1, _z1) && PointInFrustum(_x2, _y2, _z2) && PointInFrustum(_x3, _y3, _z3)) {
          //...Отрисовка треугольника
}

Помогите оценить проект.5 окт. 20049:26#24
frol
Не открываются скриншоты :(
Я так понял использовали DirectX?
Раздел ОБУЧЕНИЕ проекта Almighty.5 окт. 20049:21#238
kronos_vano
Ну ладно не обижайся я все понял.Буду ждать :)
Обработка нажатия клавиши для консоли.5 окт. 20049:04#10
>С WM_KEYDOWN не отловишь некоторые вещи, например SHIFT+что-то, по крайней мере у меня не получалось, а решилось >все просто : WM_CHAR
Да ты прав у меня тоже не получается.Даже пробел.И все символы верхнего регистра.Даже когда Caps Lock нажат.Надо WM_CHAR попробовать.
Отсечение по пирамиде видимости5 окт. 20048:47#48
frol
Так я уже пробовал посмотри на странице 2 сообщение.Не работает :(
>Так вот, по иерархии этих объемов можно также иерархично отслеживать попадание во фрустум

Я так понял тут пахнет разбиением пространства на восьмиричнык деревья или AABB деревья?

Раздел ОБУЧЕНИЕ проекта Almighty.5 окт. 20048:34#235
bounz
>под чем подписываетесь-то?
Значит быть в курсе развития данной темы форума (это можно и не писать) для этого поставь галку "Получить письма на E-Mail" Это просто традиция стала писать "(подписываюсь)" :)
kronos_vano
Ты вообще куда делся ?????????? хоть бы в аську написал что-нибудь.Как там твой движок? У меня уже есть сдвиги.Столкновения работают ну заходи в аську поговорим.

Правка: 5 окт. 2004 8:34

Раздел ОБУЧЕНИЕ проекта Almighty.4 окт. 200413:57#230
(подписываюсь)
Сообщения windows опаздывают4 окт. 200413:46#4
Signess

У меня также все было.Я думаю такой способ не подходит если уже не тривиальный проект
Я сделал очень странно но работает.
в фоновом цикле создаю все время событие от клавиатуры и добавляю его в список.Там же его и обрабатываю.В процессе обработки,смотрю буфер клавиатуры,в который звписывается код клавиши по событию WM_KEYDOWN.Если нужная клавиша нажата то делаем что надо.После обработки это событие удаляется из памяти.Этим способом я продолжаю использовать стандартную обработку но у меня не тормозит.Попробуй так.

Правка: 4 окт. 2004 13:46

Обработка нажатия клавиши для консоли.4 окт. 200413:38#7
jpeter
case WM_KEYDOWN:
      //Обработка клавишь консолью
      console -> ProcessingKey(wParam);
break;

у меня этот код работает.

Отсечение по пирамиде видимости4 окт. 200412:59#44
Zloy
>И всё-таки, поясни, зачем тебе треугольники то проверять ?
>Проверяй объекты покрупней по bbox'ам и bsphere'ам.
Ну понимаешь это мой первый движок, поэтому  я над этим только начал думать.И пробую все что приходит в голову.
Если что-то не получается пробую другое.
а про AABB и BoundingSphere я прочитал вот тут  http://gdlinks.hut.ru/cdfaq/ но пока ни чего не получилось.Все работает на простом примере.пробовал сделать простое столкновение полной сцены например с камерой.
Сцену задал объектом  AABB а камеру сферой но получается что камера далеко от сцены а столкновение уже есть.
Отсечение по пирамиде видимости4 окт. 200410:15#42
Mega
спасибо за совет попробую
Отсечение по пирамиде видимости4 окт. 20048:37#40
Mega
>как насчет такого: преобразуем точку в систему координат фрустума, а в этой системе просто проверяем на нахождение в >единичном кубе.
Это не медленно будет?
А как это сделать?
Отсечение по пирамиде видимости1 окт. 200418:40#38
Zloy
Давай сюда мыло в инфе не написано

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

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