Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
1

Литература по OpenGL

08.04.2015, 18:29. Просмотров 1397. Ответов 29
Метки нет (Все метки)

Посоветуйте, пожалуйста, хорошую литературу по OpenGL. Сейчас читаю OpenGL Суперкнига, но, к примеру, есть функция отрисовки тора/сферы, а вот как она реализуется - нету (да, я могу посмотреть код, но мне нужен сам принцип построения, а не готовый код).
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2015, 18:29
Ответы с готовыми решениями:

Литература по OpenGL
Здравствуйте, подскажите пожлуйста книгу по OpenGL для новичка (курс по 3Д математики уже прошел),...

Литература по OpenGL ES
Здравствуйте, появилась срочная необходимость разобраться с OpenGl ES на C++. Подскажите пожалуйста...

Литература по OpenGL
Доброго времени суток, многоуважаемые программеры "и не очень"! ;) На курсе обучения у нас...

Литература по OpenGL
Хоть тема и банальная, но поискав в интернете, я начал читать OpenGL - суперкнига. Далеко я в ней...

Литература по OpenGL на JAVA
Какую посоветуете литературу, чтобы научиться программирjвать графику на Java при помощи OpenGL?

29
hays
Программист велосипедист
159 / 46 / 6
Регистрация: 23.11.2014
Сообщений: 313
08.04.2015, 20:14 2
Ну например это..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
point3 v[4]=
{{0,0,1},{0,0.942809,-0.333333},{-0.816497,-0.471405,-0.333333},{0.816497,-0.471405,-0.333333}};
 
void triangle(point3 a,point3 b,point3 c)
{
    glBegin(GL_POLYGON);
        glNormal3fv(a);
        glVertex3fv(a);
        glNormal3fv(b);
        glVertex3fv(b);
        glNormal3fv(c);
        glVertex3fv(c);
    glEnd();
}
 
void normal(point3 p)
{
    double sqrt(double);
    float d=0;
    int i;
    for(i=0;i<3;i++) d+=p[i]*p[i];
    d=sqrt(d);
    if(d>0) for(i=0;i<3;i++) p[i]/=d;
}
 
void divide_triangle(point3 a,point3 b,point3 c,int m)
{
    point3 v1,v2,v3;
    int j;
    if(m>0)
    {
        for(j=0;j<3;j++) v1[j]=a[j]+b[j];
        normal(v1);
        for(j=0;j<3;j++) v2[j]=a[j]+c[j];
        normal(v2);
        for(j=0;j<3;j++) v3[j]=b[j]+c[j];
        normal(v3);
        divide_triangle(a,v1,v2,m-1);
        divide_triangle(c,v2,v3,m-1);
        divide_triangle(b,v3,v1,m-1);
        divide_triangle(v1,v3,v2,m-1);
    }
    else(triangle(a,b,c));
}
 
void tetrahedron(int m)
{
    divide_triangle(v[0],v[1],v[2],m);
    divide_triangle(v[3],v[2],v[1],m);
    divide_triangle(v[0],v[3],v[1],m);
    divide_triangle(v[0],v[2],v[3],m);
}
Вызываешь tetrahedron(n), n - уровень апроксимации
0
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
08.04.2015, 20:38  [ТС] 3
hays, как-то это не особо похоже на литературу. Хочется научится самому это делать, а не юзать чужой код.
0
Fulcrum_013
Заблокирован
08.04.2015, 20:45 4
Лучший ответ Сообщение было отмечено Мизантроп_Лол как решение

Решение

http://algolist.manual.ru/maths/geom/
1
08.04.2015, 20:45
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
09.04.2015, 20:05  [ТС] 5
Fulcrum_013, спасибо

Добавлено через 23 часа 11 минут
Тема все еще актуальна. Хотелось бы узнать какую-то литературу по триангуляции и применении ее для построения различных геометрических фигур
0
Fulcrum_013
Заблокирован
09.04.2015, 20:17 6
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
о, к примеру, есть функция отрисовки тора/сферы, а вот как она реализуется - нету
Вообще для тора сферы и вообще поверхностей Безье второго порядка у GL присутствует такая штука как quadric
На тему триангуляция:
http://stu.sernam.ru/book_g_mod.php?id=111
0
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
09.04.2015, 20:30  [ТС] 7
Fulcrum_013, просто хочется уметь делать некоторые фигуры самому, не прибегать, допустим, к функциям GLUT, или чего-то подобное. Тем более, что там вряд ли будут все нужные мне фигуры. А все что мне выдает поисковик - это какие-то неотформатированные рефераты и прочую фигню, в которой явно не то что мне надо
0
Fulcrum_013
Заблокирован
09.04.2015, 21:35 8
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
не прибегать, допустим, к функциям GLUT, или чего-то подобное
Другого способа кроме quadric рисовать поверхности Безье 2-го порядка именно как поверхности Безье 2-го порядка, а не аппроксимировать их набором треугольников (поверхностей Безье 1-го порядка) там нет.

Добавлено через 48 минут
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
Тем более, что там вряд ли будут все нужные мне фигуры
Да кстати, все тела вращения триангулируются тривиально. принцип - берешь точки образующей и вращаешь вокруг оси. полученные точки соединяешь хоть треугольниками хоть поверхностями Безье, которых получится 4 на полный оборот. Тор там немного другой принцип - замкнутый контур (в данном случае окружность) протягивается по траектории (для тора - другой окружности). т.е на каждом шаге получаешь смещенную копию исходных точек. Исходные соединяешь с копией, дальше за исходные берешь копию и пока траектория не закончится (ну или не замкнется в случае тора). Вообще построение вытянутых и повернутых (приплюснуто-повернутых (например эллипсоид) и т.д.) тел достаточна проста. Кстати так же можно строить и граненые тела. К примеру параллелепипед - эллиптический цилиндр с шагом построения 90градусов. 6-гранная пирамида - конус с шагом аппроксимации 60градусов
0
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
09.04.2015, 21:54  [ТС] 9
Fulcrum_013, в конечном счете (вероятно что не скоро еще), как амбициозно это не звучало бы, я хочу сделать игру (и, хотелось бы еще, хоть и корявый, но движок свой). Поэтому мне интересно, как рисуются произвольные объекты (я понимаю, что скорее всего, они строятся из геометрических примитивов, но, к примеру, мне не приходит в голову, какие примитивы использовать для отрисовки человеческой головы). То бишь, хочется знать сам принцип построения.
0
Fulcrum_013
Заблокирован
09.04.2015, 22:00 10
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
какие примитивы использовать для отрисовки человеческой головы
Можно кривыми Безье. А можно полигонами. но принцип как у скульптора - берут куб и отсекают плоскостями все лишнее.
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
в конечном счете (вероятно что не скоро еще), как амбициозно это не звучало бы, я хочу сделать игру (и, хотелось бы еще, хоть и корявый, но движок свой)
Тоже когда-то хотелось... результат плачевный... поступил на ВТ и ПМ и покатился... сейчас новая хотелка покоя не дает - 3D CAD. Другое дело что этот бы опыт да в те времена когда в универе учился... (и даже не в плане знаний, они и тогда были, а в плане уверенности в себе... а то тогда казалось что 3D RENDER к примеру это очень сложно реализовать, а зарабатывать на заводе надо) послал бы я тогда точно универ на втором курсе и занялся бы 3D софтом вплотную...
0
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
09.04.2015, 22:05  [ТС] 11
Fulcrum_013, у меня это уже третья попытка) Правда после предыдущих таки ума набрался вроде и хочу заняться посерьезнее)
0
Fulcrum_013
Заблокирован
09.04.2015, 22:11 12
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
я понимаю, что скорее всего, они строятся из геометрических примитивов, но, к примеру, мне не приходит в голову, какие примитивы использовать для отрисовки человеческой головы
Главное определится с термином примитив. Сейчас делаю CAD. Для 2D выделил 4 типа примитивов - точка, прямая, дуга(окружность/эллипс), кривая Безье. (Ну или если языком математики - кривые Безье от 0-го до 3-го порядков).
Соответственно определенные модификации (поворот,протаскивание по траектории,построение по сечениям (что сводится к протаскиванию по траектории перменного сечения)) этих примитивов дадут 3D состоящую из 4 типов примитивов - тоже 4 порядка поверхностей Безье. Ну а голова человека обычно по сечениям строится, правда не всегда для этого равномерная сетка используется.

Добавлено через 2 минуты
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
у меня это уже третья попытка) Правда после предыдущих таки ума набрался вроде и хочу заняться посерьезнее)
Та я их и считать давно перестал, и как бы не то чтобы вообще результата нету, просто лет 20 относился к 3D графике как к хобби. А тут прижало - понадобился CAD профессионального уровня причем заточенный под собственные нужды... ну и понеслась душа в рай..
0
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
09.04.2015, 22:15  [ТС] 13
Fulcrum_013, а не подскажете ли какую-то не слишком сложную, но в то же время понятную литературу (если такая существует) по этой теме? (триангуляция, кривые и поверхности Безье и тому подобное)

Ну, я пока только вот начал изучать эту тему. А т.к. еще только учусь на третьем курсе - время у меня пока есть)
0
Fulcrum_013
Заблокирован
09.04.2015, 22:36 14
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
Правда после предыдущих таки ума набрался вроде и хочу заняться посерьезнее)
Кстати наибольшие трудности обычно не в самой геометрии а в обвязке. К примеру в CAD который делаю сами примитивы и их коллекцию, и Transfomable Canvas для их отрисовки сделал за день. Еще дня за три смастерил к ним универсальный ObjectInspector. А сейчас застрял на системе навески тулсов, и уже дня три буксую, и хохма даже не в том что к ним похоже понадобится проектировать язык и компилятор, а в куче мелочи типа древовидного списка, практически полного перекраивания системы событий мыши (а то и полной перекройке визуальной части VCL начиная от TEdit и до TForm) и т.д. и т.п.

Добавлено через 8 минут
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
а не подскажете ли какую-то не слишком сложную, но в то же время понятную литературу (если такая существует) по этой теме? (триангуляция, кривые и поверхности Безье и тому подобное)
Ну, я пока только вот начал изучать эту тему. А т.к. еще только учусь на третьем курсе - время у меня пока есть)
Ну по триангуляци я тебе ссылку кинул. По поверхностям и кривым Безье все просто. там и в Вики достаточно сказано. Т.е. праметрическое уравнение прямой нормализованной по длине т.е. x(t)=c.x+v.x*t; y(t)=с.y+v.y*t , t[0,1] - это кривая Безье первого порядка. Соответственно второго контролируется двумя точками (фактически является параметрическим уравнением эллиптической дуги в пределах 1/2 PI ) а третьего - тремя. В вики точные формулы как вычислить коэффициенты уравнений по точкам.
0
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
09.04.2015, 22:45  [ТС] 15
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Кстати наибольшие трудности обычно не в самой геометрии а в обвязке
Таки да. Параллельно искал информацию о том, как делать архитектуру движка, пытался что-то об этом думать, но ничего не додумал. Поэтому решил пойти, так сказать, эволюционным путем. Начать с чего-то попроще, типа тетриса, пакмена и 2Д танчиков и по мере усложнения, полагаю, идеи придут сами.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
там и в Вики достаточно сказано
Видимо моих знаний математики не достаточно чтобы понять сказанное в Википедии (я вообще не перевариваю математические пояснения с вики, хотя их аналоги с других сайтов - в основном понимаю).
0
Fulcrum_013
Заблокирован
09.04.2015, 22:46 16
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
А т.к. еще только учусь на третьем курсе - время у меня пока есть)
Ну а поскольку учишся на третьем курсе, то наверное на первом лабу по отрисовке функции делал. Ну там где табулируеш функцию а точки последовательно соединяешь секущими. С триангуляцией тел с известным уравнением то же самое, только в двух направлениях. А поскольку прямоугольник может не лежать в одной плоскости, то его просто разделяют на два смежных треугольника.
0
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
09.04.2015, 22:49  [ТС] 17
Fulcrum_013, на первом курсе я лабы по паскалю делал) Специальность у меня вообще не связана с графикой (защита информации).

Просто у меня появилась идея игры, реализацию которой я нигде не находил. Вот и решил: "А почему я не могу сам ее сделать?". Вот и решил таки сделать. Да и для себя хочется чему-то новому учиться)
0
Fulcrum_013
Заблокирован
09.04.2015, 22:54 18
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
как делать архитектуру движка
Движка или конвейера? С движком все достаточно просто (обычно) хотя я в свое время малехо забуксовал именно на организайции структуры подгрузки модели (имеется в виду не одного Mesh а иерархии) с текстурами. Да и то в конце концов припилил бы, но вышел DirectX9, и его мне как то не удалось прикрутить к Builder-у. Библиотеки не того формата, а вытянутые impdefom в тупую не хотели создавать устройства. А потом и не до графики стало. Хотя в конечном итоге понял - сначала надо свой CAD делать, тогда и модели будут рисоваться под твои хотелки без проблем, и подгрузка-выгрузка и т.д. Ну а из толкового CAD - GameEngine сделать - отекстурить получше, урезать физику, добавить звук и AI.
0
Мизантроп_Лол
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
Завершенные тесты: 1
09.04.2015, 23:01  [ТС] 19
Движка. Полностью. Графика, звук, физика, ввод и т.д. Но вот пока не могу представить себе взаимодействие всего этого (опыта мало).
Вообще хотелось бы попрактиковаться в каком-то реальном проекте, с другими людьми, даже за бесплатно. Просто для того чтобы поучиться у более опытных программистов и набраться опыта. Но даже не представляю где так можно было бы устроиться
0
Fulcrum_013
Заблокирован
09.04.2015, 23:04 20
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
на первом курсе я лабы по паскалю делал)
Аналогично, во втором семестре... ох и было матов по поводу паскаля после лаб и курсака по C++ в первом. И табуляция с графиком была и там и там. Ну просто функции табулировали наверное вообще все. Это в лабах по всем языкам есть. С этого кстати информатика вообще начинается. И машина Бэбиджа, и машина Паскаля для этих целей задумывалась.

Добавлено через 2 минуты
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
Движка.
Движок он обычно конвейер пользует, или свой софтверный имеет. Примеры конвейеров Direct3D и OpenGL
0
09.04.2015, 23:04
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2015, 23:04

Литература, уроки по OpenGL 3+
Подскажите пожалуйста литература, уроки и т.п. по OpenGL 3+. Желательно на русском.

OpenGL: литература, статьи и туториалы, что посоветуете
Ребят, какие книги, статьи и туториалы посоветуете по хотябы OpenGL 3.0-3.3? Желательно на русском...

Создаю игру с научным уколоном на C++/opengl. Как подключить openGL и добиться кроссплатформенности
Я читал про opengl - для его инициализации нужно создавать windows - окно. Для linux видимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.