Re[12]: OpenGL Need HELP
От: GERDA  
Дата: 17.05.05 10:39
Оценка: :)
Здравствуйте, hemmul, Вы писали:

GERDA это то что ранее был Аноним
OpenGL Need HELP
От: Аноним  
Дата: 16.05.05 08:08
Оценка:
Кто-нибудь всетаки знает и подскажет?
Как получить часть сложной поверхности, находящейся внутри другой фигуры ?
Re: OpenGL Need HELP
От: Аноним  
Дата: 16.05.05 10:53
Оценка:
В форуме никого или никто не знает
Re[2]: OpenGL Need HELP
От: Аноним  
Дата: 16.05.05 10:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В форуме никого или никто не знае


Нет никого
Re[3]: OpenGL Need HELP
От: B_A_D Израиль  
Дата: 16.05.05 11:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>В форуме никого или никто не знае


А>Нет никого


Да нет, скорее всего постановка и формулировка вопроса не способствует ответу.
Re[4]: OpenGL Need HELP
От: Аноним  
Дата: 16.05.05 11:41
Оценка:
Здравствуйте, B_A_D, Вы писали:

Ну тогда еще раз

Вход:
1. 3D-поверхность(не 3D-тело), имеющая FRONt и BACK
2 3D-тело
Выход
Получение части 1,находящейся внутри 2
Re[5]: OpenGL Need HELP
От: hemmul США  
Дата: 16.05.05 12:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, B_A_D, Вы писали:


А>Ну тогда еще раз


А>Вход:

А> 1. 3D-поверхность(не 3D-тело), имеющая FRONt и BACK
А> 2 3D-тело
А>Выход
А> Получение части 1,находящейся внутри 2

вах, как эти анонимы читать не любят... ну зачем же столько веток разводить? тут
Автор: alex_raider
Дата: 12.05.05
же русским по белому написано, что можно включать face culling и выключать его когда надо... в той же ветке чуть по-выше полно ссылок на алгоритмы со стенсил буфером и даже есть сами алгоритмы...

vox clamantis in deserto
Re[6]: OpenGL Need HELP
От: Аноним  
Дата: 16.05.05 13:24
Оценка:
Здравствуйте, hemmul, Вы писали:

Все что ВЫ пишете правильно,
однако
Берем готовые реализации

1. Пепесечение 2-х тел А и Б
1.1 Находим часть A внутри Б
1.2 Находим часть Б внутри A
Все. На телах OK.
2. Пересечение поверхности А и тела Б
2.1 Находим часть A внутри Б
Искать часть Б внутри A нет смысла,т.к.А — поверхность

Не срабатывает(У меня когда видны FRONT и BACK одновременно
и там где они перекрываются = цвет фона )

Усли не трудно набрасайте ход рассуждений,
ведь форум существует не только для общения ГУРУ
(где же тогда набраться уму-разуму)
Re[6]: OpenGL Need HELP
От: Аноним  
Дата: 16.05.05 14:01
Оценка:
Здравствуйте, hemmul, Вы писали:


A- поверхность
B — тело

Вот это при неких трансформациях показывает не правильно.
Может есть ошибка?

glDisable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glColorMask(FALSE, FALSE, FALSE, FALSE);
a.ReDraw;

glEnable(GL_CULL_FACE);
glDepthMask(FALSE);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_ALWAYS, 0, 0);

glStencilOp(GL_KEEP, GL_KEEP, GL_INCR);
glCullFace(GL_BACK);
B.Redraw;

glStencilOp(GL_KEEP, GL_KEEP, GL_DECR);
glCullFace(GL_FRONT);
b.ReDraw;

glDisable(GL_CULL_FACE);
glDepthMask(TRUE);

glColorMask(TRUE, TRUE, TRUE, TRUE);


glStencilFunc(GL_notEqual, 0, 1);
glDisable(GL_DEPTH_TEST);

a.ReDraw;
Re[7]: OpenGL Need HELP
От: hemmul США  
Дата: 16.05.05 16:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Усли не трудно набрасайте ход рассуждений, ведь форум существует не только для общения ГУРУ (где же тогда набраться уму-разуму)

сорри, не имел в виду ничего такого нехорошего ... да и не гуру я вовсе, если так посмотреть

А>2. Пересечение поверхности А и тела Б

А> 2.1 Находим часть A внутри Б
А> Искать часть Б внутри A нет смысла,т.к.А — поверхность

А> Не срабатывает(У меня когда видны FRONT и BACK одновременно и там где они перекрываются = цвет фона )


так... вот тут немного сложно: что называть пересечением поверхности и тела? если, например, вся поверхность лежит внутри тела? что тогда рисовать? если бы поверхность была бесконечной плоскостью — тогда всё понятно, а так —
вот часть А внутри Б найти можно, как вы правильно заметили, а понятие "часть Б внутри А" — искать нет смысла, потому что "внутри" для незамкнутой поверхности неопределено! его, конечно можно определить, если заведомо известно что поверхность скажем намного больше тела, и их пересечение определено и существует.
а в противном случае просто непонятно что рисовать! поэтому нарисовать это и не удастся
т.е. нужно больше информации о поверхности...

vox clamantis in deserto
Re[7]: OpenGL Need HELP
От: hemmul США  
Дата: 16.05.05 16:25
Оценка:
Здравствуйте, Аноним, Вы писали:

просто чисто глупая догадка:
может в конце программы:
glStencilFunc(GL_EQUAL, 1, 1);
glDisable(GL_DEPTH_TEST);
a.ReDraw;

ато -1 тоже ведь не равно нулю
а так вроде всё верно...

vox clamantis in deserto
Re[8]: OpenGL Need HELP
От: Аноним  
Дата: 17.05.05 05:49
Оценка:
Здравствуйте, hemmul, Вы писали:



.. вот тут немного сложно: что называть пересечением поверхности и тела?

Есть поверхность Z=F(X,Y), но она ограничена(не бесконечна, хотя какая разница)
и есть некое замкнутое тело ( в моем случае это призма, хотя и тут какая разница).
Я помещаю это тело на "сцену" и хочу иметь далее дело только с той частью поверхности,
которая попала внутрь тела
Re[8]: OpenGL Need HELP
От: Аноним  
Дата: 17.05.05 05:59
Оценка:
Здравствуйте, hemmul, Вы писали:

не прошло- эффект тотже,
но огромное СПАСИБО, что посмотрел код(я ведь ORACLист, а заставляют заниматься OpenGL)
Re[9]: OpenGL Need HELP
От: hemmul США  
Дата: 17.05.05 07:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>не прошло- эффект тотже,

а ну-ка если в самом конце вместо отмены теста глубины подставить:
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
a.ReDraw;


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

А>но огромное СПАСИБО, что посмотрел код(я ведь ORACLист, а заставляют заниматься OpenGL)

заставляют? безобразие! это же трудно страшно, когда заставляют

vox clamantis in deserto
Re[10]: OpenGL Need HELP
От: Аноним  
Дата: 17.05.05 08:13
Оценка:
Здравствуйте, hemmul, Вы писали:

Не помогло.
А вам нельзя послать картинку, чтобы воочию
увидеть в чем проблемы?
Re[11]: OpenGL Need HELP
От: hemmul США  
Дата: 17.05.05 09:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, hemmul, Вы писали:


А>Не помогло.

А>А вам нельзя послать картинку, чтобы воочию
А>увидеть в чем проблемы?

можно: прямо сюда даже можно, чего уж секретничать — пусть все видят
там около кнопки "отправить" при написании нового сообщения есть ссылка "загрузить"... а картинки вставляются [ img ] здесь линк [ / img ] (без пробелов естессно)

vox clamantis in deserto
Re[12]: OpenGL Need HELP
От: Аноним  
Дата: 17.05.05 10:27
Оценка:
Здравствуйте, hemmul, Вы писали:



Сама поверхность(левый верх- видно как загнулся BACK)


С отсекающей призмой


Без нее — белая область не нужна
Re[12]: OpenGL Need HELP
От: GERDA  
Дата: 17.05.05 10:29
Оценка:
Здравствуйте, hemmul, Вы писали:

C первого раза не получилось
Re[12]: OpenGL Need HELP
От: GERDA  
Дата: 17.05.05 10:34
Оценка:
Здравствуйте, hemmul, Вы писали:



Сама поверхность(левый верх- видно как загнулся BACK)


С отсекающей призмой
А>

Без нее — белая область не нужна
Re[7]: OpenGL Need HELP
От: hemmul США  
Дата: 19.05.05 12:30
Оценка:
Здравствуйте, Аноним, Вы писали:

Ы:

 
glDisable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glColorMask(FALSE, FALSE, FALSE, FALSE);
a.ReDraw;

glEnable(GL_CULL_FACE);
glDepthMask(FALSE);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_ALWAYS, 0, 0);

glStencilOp(GL_KEEP, GL_KEEP, GL_INCR);
glCullFace(GL_BACK);
B.Redraw;

glStencilOp(GL_KEEP, GL_INCR, GL_KEEP);
glCullFace(GL_FRONT);
b.ReDraw;

glDisable(GL_CULL_FACE);
glDepthMask(TRUE);

glColorMask(TRUE, TRUE, TRUE, TRUE);

glStencilFunc(GL_EQUAL, 2, 1);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);

a.ReDraw;


если и это не сработает — код a.ReDraw() и B.Redraw() в студию!

vox clamantis in deserto
Re[8]: OpenGL Need HELP
От: Аноним  
Дата: 19.05.05 13:52
Оценка:
Здравствуйте, hemmul, Вы писали:

К сожалению вынужден бежать домой,
завтра с утра сразу проверю,
если и это не сработает — код a.ReDraw() и B.Redraw() в будет в студии.

спасибо.
Re[8]: OpenGL Need HELP
От: Аноним  
Дата: 20.05.05 06:19
Оценка:
Здравствуйте, hemmul, Вы писали:


если и это не сработает — код a.ReDraw() и B.Redraw() в студию!

Не работает. На вскидку показывает то,что за B и еще что-то лишнее

Пример на котором не работает

A — поверхность
A.REDRAW :
glBegin(GL_QUADS);
glNormal3f(0,0,-1);
glVertex3f(0,0,0);
glVertex3f(0,1,0);
glVertex3f(1,1,0);
glVertex3f(1,0,0);

glNormal3f(0,-1,0);
glVertex3f(0,0,0);
glVertex3f(0,0,-1);
glVertex3f(0,1,-1);
glVertex3f(0,1,0);
glEnd;

В — куб
B.Redraw:
glutSolidCube(1.5);
Re[9]: OpenGL Need HELP
От: hemmul США  
Дата: 20.05.05 06:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, hemmul, Вы писали:



А>Не работает. На вскидку показывает то,что за B и еще что-то лишнее


и правильно что не работает — не должно работать, перед рисованием не будем делать glClear(GL_STENCIL_BUFFER_BITS);

vox clamantis in deserto
Re[10]: OpenGL Need HELP
От: Аноним  
Дата: 20.05.05 10:12
Оценка:
Здравствуйте, hemmul, Вы писали:



и правильно что не работает — не должно работать, перед рисованием не будем делать glClear(GL_STENCIL_BUFFER_BITS)

И что же я потом получу при разворотах,смещениях и масштабировании
Re[11]: OpenGL Need HELP
От: hemmul США  
Дата: 20.05.05 12:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, hemmul, Вы писали:




А>и правильно что не работает — не должно работать, перед рисованием не будем делать glClear(GL_STENCIL_BUFFER_BITS)

я имел в виду что если не будем чистить буфер, то ничего не получится

А>И что же я потом получу при разворотах,смещениях и масштабировании

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

vox clamantis in deserto
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.