Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Отсечение невидимой геометрии (13 стр)

Отсечение невидимой геометрии (13 стр)

Поделиться
Страницы: 112 13 14 15 16 Следующая »
zavod3DПользовательwww30 сен. 201711:22#180
Andrey
> Openmp это по большей части директивы компиляции, к примеру для
> распараллелиания циклов по потокам.
Я применял его один раз как раз для распараллеливания цикла, поэтому и спросил.
> Врядли,
Судя по последнему ответу slava_mib, openmp как раз подходит - указал каждому потоку свою часть грида и расположился с чашечкой кофе в кресле, наблюдая за fps-ом
Вообщем я пойду почитаю умные пейперы, может я что-то не допонимаю.

Правка: 30 сен. 2017 11:26

Shurik7777Постоялецwww30 сен. 201712:45#181
innuendo
> давно уже нужно создать FAQ и сразу посылать
Daniil Petrov
> Кстати давно можно было бы такое дело по часто задаваемым вопросам сделать :) с
> примерами проработанного обществом форума кода.
Внезапно: FAQ http://www.gamedev.ru/faq/
А еще есть Термины http://www.gamedev.ru/terms/
И там: Binary Space Partitioning (Бинарное разделение пространства) http://www.gamedev.ru/code/terms/BSP
А оттуда по ссылке переходим сюда: Введение в BSP деревья или BSP для самых «маленьких». Часть первая, теоретическая. http://www.gamedev.ru/articles/?id=30128
Так что послать есть куда, было бы желание (ну и поискать немного, да).
g-contПостоялецwww30 сен. 201715:09#182
Раньше как было? Тема на форуме - это такой последний шанс, когда всё загуглил, всё прочитал, но не всё понял и задаёшь вопросы живым людям. Потому что совестно! А сейчас никто не гуглит, не читает, сразу на форум. Упадок нравов.
innuendoПостоялецwww30 сен. 201715:41#183
g-cont
> А сейчас никто не гуглит, не читает, сразу на форум. Упадок нравов.

причём ещё и хочет чтобы строчку с ошибкой указали в его кодопомойке :)

Daniil PetrovЗабаненwww1 окт. 20172:44#184
А у меня какая-то беда с отсечением сфер... точки отсекаются нормально (не вершины, а одиночная точка), сделал куб для проверки, тоже нормально отсекается, а вот сфера никак не хочет нормально отсекаться!
Хочу сделать, как slava_mib - сферами - не очень точно, но очень быстро, но чёт не прёт мне в них :)))

Правка: 1 окт. 2017 7:50

slava_mibМодераторwww1 окт. 20179:51#185
Daniil Petrov, отсечение сферы, по сути, мало чем отличается от отсечения точки... Скорее всего, где-то опечатался просто, либо, как писали выше - забыл отнормализовать...
Daniil PetrovЗабаненwww1 окт. 20179:58#186
slava_mib
Ладно, буду перепроверять, но всё нормализуется. Пробовал пример для не нормализованных плоскостей, результат лучше, но чёт не то...
P.S. Нет, всё перепроверил, именно проверка на сферу работает косячно!

А теперь вопрос ко всем: где можно покурить пример реализации Ray Casting? Хочется ещё его добавить и убить эту тему, чтоб сделать универсальное решение для большинства задач и без надобности не заморачиваться на всяких порталах и прочих вещах.

Правка: 1 окт. 2017 10:05

slava_mibМодераторwww1 окт. 201710:06#187
Daniil Petrov, покажи реализацию (код).

> где можно покурить пример реализации Ray Casting?
Рейкастинг - оно не совсем по теме куллинга, если что ) По крайней мере рилтайм-куллинга.

Daniil PetrovЗабаненwww1 окт. 201710:12#188
slava_mib
> Рейкастинг - оно не совсем по теме куллинга, если что ) По крайней мере рилтайм-куллинга.
Бля :)))

Расчёт фрастама:

+ Показать

Каждая плоскость нормализуется, всё по урокам NeHe :)
Проверка сферы:
+ Показать

Правка: 1 окт. 2017 10:12

slava_mibМодераторwww1 окт. 201710:16#189
> FrustumPyramid[RIGHT] = glm::normalize(FrustumPyramid[RIGHT]);
Daniil Petrov, может проблема тут? Ты 4хмерный вектор нормализуешь? Нормализовать-то надо только нормаль - т.е. x/y/z, но не w...
Daniil PetrovЗабаненwww1 окт. 201710:25#190
slava_mib
А здесь разве не так?
http://pmg.org.ru/nehe/nehex2.htm
Кубик с точкой-то нормально отсекаются!

Правка: 1 окт. 2017 10:27

slava_mibМодераторwww1 окт. 201710:31#191
> А здесь разве не так?
Daniil Petrov, нет, там не так, обрати внимание на строки
   t = sqrt( frustum[0][0] * frustum[0][0] + frustum[0][1] * frustum[0][1] + frustum[0][2] * frustum[0][2] );

Тут при расчёте t берутся только x/y/z , а делятся на это значение - x/y/z/w
Т.е. это совершенно не то же самое, что normalize(vec4)

На всякий случай тебе код из моего двига:

void Culler::normalizePlanes()
{
  for (int i=0; i<m_planesCount; i++)
  {
    const float l = sqrtf(getPlaneVar(i, 0)*getPlaneVar(i, 0) + getPlaneVar(i, 1)*getPlaneVar(i, 1) + getPlaneVar(i, 2)*getPlaneVar(i, 2));
    plane_var(i, 0) = plane_var(i, 0)/l;
    plane_var(i, 1) = plane_var(i, 1)/l;
    plane_var(i, 2) = plane_var(i, 2)/l;
    plane_var(i, 3) = plane_var(i, 3)/l;
  }
}

Правка: 1 окт. 2017 10:33

Daniil PetrovЗабаненwww1 окт. 201710:48#192
slava_mib
Я уже взял отсюда: http://masandilov.ru/opengl/opengl-frustum, но за подсказку благодарю :))) я в тригонометрии не силён, а тут она ещё и на программировании основана, так что мне вдвойне сложнее грызть этот гранит науки!
Но вот с радиусом маленько что-то не то, но буду разбираться!

Правка: 1 окт. 2017 10:49

g-contПостоялецwww1 окт. 201711:54#193
    if( dot( sphere->center, plane->normal ) - plane->dist <= -sphere->radius )
      return true; // sphere culled
Как можно накосячить в одной строчке?
g-contПостоялецwww1 окт. 201711:55#194
А, всё дошло. У тебя плоскости стандартные, а не позитивные.
Center.z + FrustumPyramid[i].w
плюс на минус поменяй.
Страницы: 112 13 14 15 16 Следующая »

/ Форум / Программирование игр / Графика

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