проблема с Frustum Culling

Тема в разделе "WASM.GRAPHICS", создана пользователем varnie, 15 авг 2005.

  1. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    всем привет.

    у меня вопрос по frustum culling.

    получил я 6 плоскостей раструба камеры, затем пытаюсь проверить, лежит ли допустим моя определенная точка в этом объеме раструба, или нет. и почему-то всегда выдает, что не принадлежит, хотя точка стопудово по идее видна и лежит в этом раструбе. и как бы я не крутил камеру и не перемещался, все равно точка почему-то остается 'типа' невидима (и куча др точек полигонов).

    что не так может быть, какие подводные камни?

    перечитал неск. статей, теорию понял, код сто раз перепроверил...а выдает неправильные результаты! ;'-(

    сначала я обрабатываю повороты камеры, поворачиваюсь при помощи glRotated и glTranslatef, а затем получаю ее 6 плоскостей и проверяю точку на принадлежность ее объему.

    где может быть ошибка?
     
  2. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    хмм, покопался еще и выяснил, что почему-то всегда получается, что тестуруемая(ые) точки лежат в плоскости, но никак не перед ней.

    :dntknw:
     
  3. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    varnie

    Шесть проскостей сразу слишком много, добавляй по одной и меняй знак в условии так, чтобы ничего лишного не исчезало. А ближайшую из пары плоскостей, параллельных к экрану, можно безболезненно удалить, так как отсекаемый ею объём, который не может быть отсечён другими плоскостями обычно очень мал. Если же местность открытая, а камера всегда на пару десятков градусов(или более) наклонена вниз, то можно выкинуть и дальнюю плоскость.
     
  4. Dart_Bobr

    Dart_Bobr New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    100
    Адрес:
    Ukraine
    А у тебя правильно заданы нормали?
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    varnie



    Читать SDK от nVidia! :)
     
  6. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Dart_Bobr

    хм, вообще-то я их не задавал, но когда получал уравнения плоскостей раструба камеры, то "нормализировал" эти плоскости.

    вот.



    плин, сейчас вот все боле менее ОК (спасибо black_mirrorу за совет уменьшить проверки по пресечению с плоскостями).

    сейчас в проверке я откинул тест на пересечение с передней и задней плоскостью; осталась проблемка на поворотах вокруг оси. т.е. когда я поворачиваюсь, стоя на одном месте (или чуть сдвигаясь постепенно), то в конце концов наступает такой момент, что из ландшафта вообще ничего не видно.

    неужели опять какую-то плоскость из проверки выкидывать? :-/
     
  7. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    эээ, а куда собссно говоря все делись? :-/



    _DEN_, не подскажешь где этот мануал слить можно?
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    varnie



    www.developer.nvidia.com



    Надеюсь, ты не такой ленивый как я, потому что я бы попросил прямую ссылку ;) Там на сайте много чего интересного есть, главное чтобы канал широкий был.
     
  9. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    ээ..ну так что подскажете мне делать чтоб избавиться от этого пренеприятного явлениия? :-/
     
  10. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    varnie



    Эта задача решается чуть ли не в два матричных умножения. Я точно не помню. Погугли на тему subj matrix.
     
  11. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    здравжелаю!

    --

    c фрустумом разобрался таки...

    небольшой вопрос - допустим, я вывожу ландшафт используя метод quadTrees, посему появляются неприятные дыры ака 'артефакты' на стыке областей, выведенных с разными детализациями. естественно, хочется эту неприятность как-нибудь пофиксить. сейчас пока что решил просто увеличить радиус вывода ландшафта с наибольшей детализацией, тем самым отодвинув злополучный (читать 'некрасивый') контур, на котором и проявляются эти артефакты.

    по идее нужно бы как-то по-умному поднимать/опускать вершины, находящиеся рядом с контуром артефактов, вот только как бы это сделать? не хочется просто в цикле где выводятся треугольники кажд. раз делать проверку на нахождение рядом с контуром, т.к. она потребуется то оч. ограниченное число раз.

    ---

    теперь вопрос про камеру и quadTrees. все пашет, но, я бы сказал, местами грубо - иногда механизЪм отбрасывает области, которые все ж видны. и я уж молчу, про то, чтО будет если изменить угол вертикального наклона. та же ботва. можно конечно, ИМХА, поиграться с коэффициентами-множителями, которые использую для увеличения протяженности ландшафта, но они и так уже 1024 :-0.

    ---

    внешние очертания рельефа на дальних расстояниях почему-то какие-то беспонтовые, и я б даже сказал - пиксельные. как бороцца?

    ---

    вопрос о текстуре:

    допустим, у меня размерность всего ландафта (т.е. его габаритные размеры) 1024x512 X 1024x512, где 512 - реальная размерность реальной карты высот, а 1024 - множитель для протяженности. для текстуризации используется карта высот 512 X 512. ясен пень, что при таких соотношениях текстура дичайшим образом растягивается, чтО отражается на качестве при выводе ее на ландшафт. как тут быть?

    ---

    почему-то никак не могу подрубить всякие там ARB расширения для OGL'a. может, какие хидеры скачать надобно?



    спасибо за уделенное внимание.

    ps: по почкам не пинать:)
     
  12. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    дык, это...

    ни у кого никаких мыслей? :-/
     
  13. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    varnie



    А в чем собственно вопрос? :)
     
  14. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    _DEN_,

    а разве в моем посте нне видно ниодного вопроса? :-/
     
  15. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан




    Вруби туман. А вобще, в таких случаях надо скрины давать.







    Используй для карты высот тайлинг и мультитекстурирование.







    www.gamedev.ru - статьи - OpenGL - че-то про расширения для чайников ;)
     
  16. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    не сочтите за понт, но я так и не нашел - где бы этот NVIDIA SDK слить.. а тот что наа нвидиа.ком весит за 60 мегов.

    или это он и есть и никуда от него не денешься - придется качать? мне всего-лишь нужны инклюдники для расширения ОГЛа.

    может, у кого-нить они уже есть?
     
  17. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    varnie







    Тот что на nvidia.com весит за 300 мегов ;)







    google: opengl extensions headers
     
  18. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    хоть убейте, но что-то не могу найти где бы их скачать кроме нвидиа.ком
     
  19. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
  20. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    ээ, glext.h у меня есть, но сами ф-ции расширений не видны даже с подрубленным этим хидером.

    вот я про что говорю..

    в чем дело может быть?