Официальный сайт студ.городка НГТУ
Программирование и БД » Open GL вырезка. 

#1  18.05.10 13:10

Open GL вырезка.

Никто не знает как из 3д поверхности вырезать цилиндр,так что бы дырка получилась, используя Open GL?

Offline

#2  18.05.10 13:27

Re: Open GL вырезка.

Я знаю как в АвтоКаде сделать... Могу сказать если хочешь )

Offline

#3  18.05.10 14:32

Re: Open GL вырезка.

Kefir 1%, формируй фигуру как таковую с отверстием

Offline

#4  18.05.10 14:55

Re: Open GL вырезка.

R0mm,  с квадратным отверстие, я еще могу представить, но мне нужно круглое, и что бы в работе программы я мог его изменять. Это возможно сделать как-нибудь по простому?

Wanseg, автокад наверно будет бесполезен, ну все равно спасибо)

Offline

#5  18.05.10 15:04

Re: Open GL вырезка.

Kefir 1%, ну а круглое от квадратного отличается лишь сложностью реализации. идея-то одна

Offline

#6  18.05.10 15:09

Re: Open GL вырезка.

R0mm,  а радиус отверстия в течении выполнения программы регулировать можно будет?

Offline

#7  18.05.10 16:42

Re: Open GL вырезка.

Kefir 1%, а линейная алгебра и аналитическая геометрия для чего нужны?

Offline

#8  18.05.10 16:43

Re: Open GL вырезка.

как запрогаешь так и будет епт :] я то что))

Offline

#9  18.05.10 19:58

Re: Open GL вырезка.

понятно.

Offline

#10  19.05.10 08:46

Re: Open GL вырезка.

Народ а в целях повышения образованности можно узнать что такое Open GL? Я так понял, это что то типа MathCad?

Offline

#11  19.05.10 11:10

$up
Профиль

Re: Open GL вырезка.

OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Включает более 250-ти функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с Direct3D.

Offline

#12  19.05.10 22:28

Re: Open GL вырезка.

помойму там есть какая-то функция для вырезания, когда курил GLScene там помоему встречал)
Еще вариант замутить в 3D редакторе и там вырезать, а в OpenGL подгружать из файла, только наверное придется библиотеку для загрузки модельки найти)
на каком языке пишешь?

Offline

#13  20.05.10 23:15

Re: Open GL вырезка.

Fire Stream,  На С++
вчера и сегодня GL_POLYGON курил, он  впуклые фигуры не рисует сволочь, как дырку в квадрате замутить ума не приложу...

Offline

#14  21.05.10 02:35

Re: Open GL вырезка.

Kefir 1%, рисует впуклые

Offline

#15  21.05.10 08:33

Re: Open GL вырезка.

R0mm, Ну или выпуклые, уже запутался...

Offline

#16  21.05.10 11:11

Hix
Профиль

Re: Open GL вырезка.

Kefir 1%, не стой стороны смотришь. Тебе нужно не дырку в квадрате рисовать а рисовать квадрат вокруг дырки. то есть определиться с количеством точек которые будут определять окружность дырки (два варианта сложный и простой 1 -  число точек постоянное - тогда круг с большим радиусом будет не круг. 2- сложный но круг будет красивый) затем написать функцию которая будет разбивать твой квадрат на примитивы .   только после этого рисуй свой квадрат с дыркой. нарисуй два квадрата с дыркой соединен образующими получишь цилиндр с дыркой (и еще дырки в пирожковом техникуме а в НГТУ это отверстия)
и что бы натолкнуть на мысль вот:

http://hostel.nstu.ru/uploaded/gallery/377_1274416008.jpg



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

Исправлено Hix (21.05.10 12:41)

Offline

#17  21.05.10 13:11

Re: Open GL вырезка.

Kefir 1%, да все он рисует)

Offline

#18  21.05.10 17:34

Re: Open GL вырезка.

Hix, Хорошая задумка, сегодня попробую.

R0mm,  рисует.

Offline

#19  21.05.10 18:44

Re: Open GL вырезка.

Kefir 1%,

R0mm написал(а):

формируй фигуру как таковую с отверстием

я как бы сразу говорил лол)

Offline

#20  21.05.10 21:58

Re: Open GL вырезка.

glBegin(GL_QUAD_STRIP);
  for(int i = 0; i < 32; i++) {
   glVertex3f(cos(0.049087385 * i),sin(0.049087385 * i),-1);
   glVertex3f(cos(0.049087385 * i),1,-1);
  }
glEnd();

вот как бы, делаю  четыре таких штуки)) и получилась вполне нормальное отверстие, осталось связать , спасибо за помощь !

Исправлено Kefir 1% (21.05.10 22:01)

Offline

#21  22.05.10 01:51

Hix
Профиль

Re: Open GL вырезка.

Kefir 1%, скрины выложишь???

Offline

#22  22.05.10 14:25

Re: Open GL вырезка.

Hix,  если скажешь как в форуме картинки выкладывать, то без проблем, тк не часто я бываю сдесь, и выкладывать ничего не приходилось...  ><

Исправлено Kefir 1% (22.05.10 14:25)

Offline

#23  23.05.10 08:50

Hix
Профиль

Re: Open GL вырезка.

Kefir 1%, для начала выложи в галерею. потом суда ссылку запость с тегами [img][/img] и все

Offline

#24  23.05.10 17:05

Re: Open GL вырезка.

тогда вот

http://hostel.nstu.ru/uploaded/gallery/21626_1274609099.png

=)

Offline

#25  23.05.10 17:21

Re: Open GL вырезка.

Да.. здорово вышло) молодцом)

Offline

#26  23.05.10 18:23

Re: Open GL вырезка.

R0mm спасибо, но это самое легкое из всей работы, там саму мат. модель хз как сделать >_>
ну что касается интерфейса и рабочей установки я все сделал.

Исправлено Kefir 1% (23.05.10 18:24)

Offline

#27  23.05.10 19:48

Hix
Профиль

Re: Open GL вырезка.

Kefir 1%, посмотрел на картинку, и мне показалось что у тя с векторами нормалей что то не то (точнее их совсем нет). Конечно же это имеет смысл есдли тебе нужно внести в сцену освещение и улучшить отображение предметов.
так будет с освещением, решать тебе.

http://hostel.nstu.ru/uploaded/gallery/377_1274618877.jpg

Исправлено Hix (23.05.10 19:49)

Offline

#28  23.05.10 22:21

Re: Open GL вырезка.

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

я прописывал только: glEnable(GL_LINE_SMOOTH);
                        glShadeModel(GL_SMOOTH);

Offline

#29  24.05.10 01:12

Re: Open GL вырезка.

Hix, хотя нет, сорри, со светом правда что - то не так....

Offline

#30  24.05.10 12:47

Hix
Профиль

Re: Open GL вырезка.

[b]Kefir 1% короче если у тя стоит автонормаль то зря ждешь эффекта.
Вектор нормали - вектор перпендикулярный плоскости полигона.
находил я его так:

struct vertex           //Вершина, хотя и сойдет для вектора.
    {
        float x;
        float y;
        float z;
    };

vertex vNormal (vertex Av,vertex Bv,vertex Cv)  //функция возвращает вектор нормали.
    {
        vertex V1,V2;
        vertex result;
        V1.x = Bv.x-Av.x;
        V1.y = Bv.y-Av.y;
        V1.z = Bv.z-Av.z;
        V2.x = Cv.x-Bv.x;
        V2.y = Cv.y-Bv.y;
        V2.z = Cv.z-Bv.z;
        result.x = (V1.y*V2.z)-(V1.z*V2.y);
        result.y = (V1.z*V2.x)-(V1.x*V2.z);
        result.z = (V1.x*V2.y)-(V1.y*V2.x);
        return result;
     }   



Av, Bv Cv - координаты точек вершин полигона (в моем случае полигоны были треугольники, в твоем это 3 любые точки твоего четырех угольника.)

при рисовании сцены делаешь так:

Код::

        glNormal3f(normal.x,normal.y,normal.z); //пример рисования одного полигона.
        glVertex3f(A.x,A.y,A.z);
        glVertex3f(B.x,B.y,B.z);
        glVertex3f(C.x,C.y,C.z);

Тогда собственно тебе ненадо будет рисовать линии на пересечении плоскостей. разница в освещенности будет давать границу.
а это мне понадобилось для включения света.

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);

а это непосредственно источник в сцене.
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);

pos и dir  - x,y,z координаты позрциия "лампочки" и направление соответственно.

Начем пишешь???
Есь рабочие примеры как для Делфи. так и для С++

Исправлено Hix (24.05.10 13:29)

Offline

#31  24.05.10 14:28

Re: Open GL вырезка.

Hix,  ммм, спасибо, сегодня попробую, когда сделаю результат покажу.

Пишу на С++, в рад студио, с окнами проблем меньше, в отличии от вижуала.

Offline

#32  24.05.10 16:26

Hix
Профиль

Re: Open GL вырезка.

Kefir 1%, я на С++ балуюсь тока в DEV C++  окна мне не особо нужны )

Offline

#33  24.05.10 16:30

Re: Open GL вырезка.

Hix,  ну у меня физик требует, что бы все было по уму, со свистелками перделками, поэтому нужны окна. А в вижуале все как то не ясно с этим, а в DEV C++ вроде вообще нет))

Offline

#34  24.05.10 17:51

Re: Open GL вырезка.

Kefir 1%, :) отсутствие кнопочки "создать окно" не значит что его нельзя создать лол ;]

Offline

#35  24.05.10 18:46

Re: Open GL вырезка.

R0mm,  ну как бы да =)
в РАД Студио все до такой степени все тривиально с виндовыми окнами, что даже думать лень...просто делаешь и все)))) а в DEV C++ прописывать все придется?

Offline

#36  24.05.10 21:14

Re: Open GL вырезка.

Kefir 1%, а есть еще Visual Studio

Offline

#37  24.05.10 22:07

Hix
Профиль

Re: Open GL вырезка.

Kefir 1%, Не слушай что говорят "ТРу" программеры. для каждой задачи человек сам выбирает инструментарий если удобно и продуктивно значит ничего менять не нужно.

Offline

#38  24.05.10 22:09

Re: Open GL вырезка.

Revenger, в вижуале сложнее, там прописывать надо многие вещи...тем временем как в рад студио меняешь в events все взаимодействия подпрограм....

Offline

#39  24.05.10 23:45

Re: Open GL вырезка.

Так я и не говорю что нужно менять. Нужно просто попробовать.

Offline

#40  25.05.10 00:07

Re: Open GL вырезка.

Kefir 1%, ну как сказать сложнее) с помощью MFC все очень просто делается)

Offline

#41  25.05.10 01:00

Re: Open GL вырезка.

ТR0mm, Revenger,  там framework нужен будет в дальнейшем, конечно он сейчас есть на каждом компьютере, но чем черт не шутит. Мне на самом деле вижуал больше нравится чем РАД студио, недавно 2010 поставил, прикольный, хорошо сделали... .

Hix,  Каждый инструмент хорош, у каждого свои преимущества и недостатки, поэтому там где удобней? там и прогается неплохо =)

Offline

#42  25.05.10 01:09

Re: Open GL вырезка.

vi + g++ + make - рулит)))

Offline

#43  25.05.10 01:11

Re: Open GL вырезка.

Revenger,  и gdb к ним приплюсуй)))

Offline

#44  25.05.10 01:39

Hix
Профиль

Re: Open GL вырезка.

Kefir 1%, когда будет результат с освещением???

Offline

#45  25.05.10 01:43

Re: Open GL вырезка.

Hix,  сегодня, вчера убил день на долги...а сегодня на проект убью день...

Исправлено Kefir 1% (25.05.10 01:44)

Offline

Программирование и БД » Open GL вырезка. 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.044 сек.
Выполнено 11 запросов.