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

Сечение модели плоскостью

Страницы: 1 2 3 4 Следующая »
#0
14:30, 14 июня 2023

Как можно малой кровью выполнить сечение 3д сцены плоскостью? Вот посмотрите на картинку:
Изображение

Сделать простое сечение не сложно, достаточно во фрагментный шейдер запушить плоскость и дискардить пиксели с одной из сторон от плоскости, это понятно, но как сделать такое сечение с "крышкой" (cap), то что на рисунке синим закрашено? То есть ты отсёк модель и видишь как бы её требуха, пространство между стенками и тд и вот что бы такого не было, нужна как бы крышка, а как её сделать по простому? В шейдерах?
Понятно дело, что можно булевыми операциями тупо модель отсечь и построить новую, но мне кажется, для данной задачи это конкретный оверкил, может через стенсил как-то...?

#1
14:54, 14 июня 2023

Можно постпроцессом делать трассировку и соединять грани, типа SSR.

Можно всю геометрию хранить ввиде передняя и задняя стенка, тогда в геом шейдере можно отсекать и соединять.

В компьют шейдере отрезать, сохранять места отреза и потом их соединять. После рисовать.

#2
15:02, 14 июня 2023

/A\
> Можно всю геометрию хранить ввиде передняя и задняя стенка, тогда в геом
> шейдере можно отсекать и соединять.
вроде так раньше делали, в общем буду думать...

#3
15:13, 14 июня 2023

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

#4
15:23, 14 июня 2023

Солидворкс ... Крутотень
Csg кури

#5
16:00, 14 июня 2023

С ориентированными полигонами такое легко можно было провернуть даже в FFP, просто используя секущую плоскость и рисуя задники исключительно эмиссионным цветом (одним и тем же).

#6
16:21, 14 июня 2023

Отключить куллинг и отрисовать с проверкой на дот клип-плейн нормал в пиксельном шейдере.

#7
16:25, 14 июня 2023

Интереснее будет, когда надо будет сечь углом или вообще каким-нибудь коническим или цилиндрическим сечением.

#8
16:39, 14 июня 2023

Не будет: + проверять принадлежность пикселя той или иной фигуре

#9
20:43, 14 июня 2023

innuendo
> Солидворкс ... Крутотень
Ага. Они там UI в shared context-е через glBegin glEnd рисуют (по крайней мере года 4 назад так было), мощные ребята.

THE_MASTER
> может через стенсил как-то...?
Если модель замкнутая и без самопересечений - то да, через стенсил можно. Отключаешь DepthTest. Стенсил тест в GL_ALWAYS и GL_INVERT на pass. Рисуешь модель с отсечением. Там где стенсил не 0 - можно красить синим.

#10
20:47, 14 июня 2023

MrShoor
Сделай гибку металла sheet metal operation
Развертку из солид боди как у них я за тебя порадуюсь

#11
20:52, 14 июня 2023

ncuxonaT
> Если модель замкнутая и без самопересечений
Тогда просто ставим плоскость отсечения и рисуем в первый проход только в Z-буфер, а второй с инвертированным куллингом в Color-буфер.

#12
21:18, 14 июня 2023

innuendo
> Сделай гибку металла sheet metal operation
Гибку уже делал. Не рокетсаинс.

> Развертку из солид боди как у них
Разверку не делал, ибо задачи не стояло

На 50% порадуешься?

#13
21:23, 14 июня 2023

MrShoor
Гибку делал? Да ты просто герой ...куда мне до тебя ...
Какое ядро юзал али не секрет?

#14
21:26, 14 июня 2023

innuendo
> Какое ядро юзал али не секрет?
Зачем ядро? Сам гибку пилил. Любое ядро сдохнет по перфомансу на моих требованиях.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.