Войти
ПрограммированиеФорумГрафика

Рисование bounding box

Страницы: 1 2 Следующая »
#0
15:05, 9 авг. 2019

Какой самый простой способ для отрисовки bounding box?
На ум приходят два способа.
Это генерирование вершин куба по min and max,
и я думаю можно сделать гораздо проще растянуть единичный куб с помощью матрицы.
Собственно свой велосипед писать не хочется, может быть кто имел с этим дело и может дать линки


#1
15:12, 9 авг. 2019

IBets
> Это генерирование вершин куба по min and max,
> и я думаю можно сделать гораздо проще растянуть единичный куб с помощью
> матрицы.
Ну так попробуй так и так. В чём проблема? Это же пятиминутное дело.

#2
15:22, 9 авг. 2019

Получил восемь вертексов и нарисовал.

#3
17:47, 9 авг. 2019

Ну вы даете. Я же вам уже отвечал:
https://gamedev.ru/code/forum/?id=238096

#4
17:52, 9 авг. 2019

eDmk
> Ну вы даете. Я же вам уже отвечал:
Животрепещущая тема, видимо)

#5
18:42, 9 авг. 2019

IBets
да как угодно рисуй, если у тебя сотни и тысячи тогда уже можешь задуматься об инстансинге. Если меньше, залей в один буфер и отрисуй как одну модель.

#6
18:47, 9 авг. 2019

IBets
> Какой самый простой способ для отрисовки bounding box?

а зачем простой ? нужно рисовать самым быстрым или самым крутым через тесселяцию

#7
19:01, 9 авг. 2019

Рисуй, как быстрее и проще. Дебаг-лееры так и пишутся.
https://en.m.wikibooks.org/wiki/OpenGL_Programming/Bounding_box

#8
19:15, 9 авг. 2019

eDmk
> Ну вы даете. Я же вам уже отвечал:
> https://gamedev.ru/code/forum/?id=238096
Почитал твой ответ. Хранить баундинг бокс как 8 вершин - так себе решение. Лучше хранить min max (то есть AABB) + трансформ.

#9
20:24, 9 авг. 2019

MrShoor
Т.е. каждый раз при отрисовке считать вершины заново?
У меня они считаются 1 раз и только при трансформации исходных точек.
Потом просто на MVP-матрицу умножаю. Рисую так:

+ Показать

Получается так:
+ Показать

Можно как то быстрее и удобнее?
#10
(Правка: 20:29) 20:26, 9 авг. 2019

MrShoor
> Хранить баундинг бокс как 8 вершин - так себе решение.
Я в системе дебага 12ю ребрами рисую )

IBets
Делай большой динамический юниформ буфер с возможностью выборочного обновления данных; для каждого бокса храни там матрицу; при отрисовке используй glBindBufferRange и единичный куб.

#11
20:33, 9 авг. 2019

eDmk
> Т.е. каждый раз при отрисовке считать вершины заново?
Что считать? Там 3 if-а. И при отрисовке чего? Куба? Построение буфера намного дороже, чем 3 if-а для вершин куба. Поэтому если надо рисовать, то есть смысл построить буфер и закешировать именно его.

> Рисую так:
Ну у тебя так то вообще софтварный рендер. И однопоточный насколько я понял? Если будешь прикручивать многопоточность - то и асинхронность появится. И тогда придется формировать буфер, как я выше написал, и этот буфер можно закешировать.

А как ты для своего варианта делаешь проверку "точка в кубе или нет"? Или "пересекает луч куб или нет"?

#12
20:35, 9 авг. 2019

BingoBongo
> Я в системе дебага 12ю ребрами рисую )
Это пожалуйста. Делай 12 ребер для отрисовки. Но ты же поди не хранишь куб как vec3 points[8] ?

#13
(Правка: 22:08) 22:07, 9 авг. 2019

eDmk
Да я уже на Compute Shader считаю Bounding Box для кадра анимации. Я уже сделал, просто хотел что бы кто-нибудь готовую матрицу подкинул или генерирование Cube by min and max

#14
(Правка: 10 авг. 2019, 9:17) 22:34, 9 авг. 2019

IBets
У меня на асме есть:

+ Показать

За скобками исходный текст на паскале.
На сишечку надеюсь переведете.
Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика