Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Компьютерная графика


Автор: Hidrag 26.12.2006, 23:28
Такая вот задача, нужно нарисовать фигуру в 3D, директХ и ОпенГл применять запретили smile приходится самому разбираться со всеми этими матрицами преобразований, учебник скудный без примеров. Я еще выпросился делать работу в C# (когда другие студенты на паскале). Кое что стало получаться (пример в файле, требует .Net Framework 2), но вот как реализовать последовательность выводов полигонов и как не выводить то, что "за кадром" пока не разобрался smile
Фигура вертится, а вывод полигонов всегда в одном и том же порядке а из за этого коллизии...

Не подскажете какую-нибудь литературу по теме или конкретно по проекту.
Проект вместе с экзешником в архиве (MS Visual C# Express Edition).

Автор: Bitter 27.12.2006, 00:26
Вообще-то есть такая книга:

OpenGL. Программирование компьютерной графики. Для профессионалов. - СПб.: Питер, 2002. - 1088с.: ил. 

так вот, эту книгу скорее надо было назвать "3D своими руками", поскольку про OpenGL там ОЧЕНЬ мало (а страниц, как вы уже догадались, >1000). В книге подробно описаны все внутринности 3D движка. И как отсечения делать, и проекции на экран, и аффинные преобразования, и трассировка луча и ..... В основном математика и алгоритмы. Всё на с++.

Автор: Hidrag 27.12.2006, 21:40
Спасибо!
Попробую найти в электронном варианте. Покупать бумажную книгу ради зачета не хочется smile

Автор: PoloS 29.12.2006, 10:51
Компьютерная графика. Учебное пособие. Автор: Виктор Порев Издатель:bhv

Есть все, что тебе может понадобится для "чистого" 3D.  От алгоритмов, до реализации на чистом WInApi под C++

Автор: DragonFire 30.12.2006, 10:47
smile 
А тоже самое на  Delphi не подскажите, извиня.сь за офф топ...

Автор: DENNN 30.12.2006, 12:53
DragonFire, тебя должна интересовать теория. А она в сущности одна - за много лет найдены наиболее приемлемые мат.решения для ЭВМ. 

Автор: DragonFire 30.12.2006, 19:19
Сейчас постараюсь изложить свою точку зрения:
Теория чистая это конечно хорошо, но мне бы хотелось применить ее на практике. И очень часто написанный тобою алгоритм по теории не является рабочим, из-за какой-нибудь мелочи технической или глупой ошибки. Для этого всегда хорошо иметь под ругой хорошшие примеры, где можно посмотреть рабочий алгоритм.
Вот поэтому спрашиваю)

Автор: Bitter 31.12.2006, 00:56
та книга, которую я написал,
Цитата

OpenGL. Программирование компьютерной графики. Для профессионалов. - СПб.: Питер, 2002. - 1088с.: ил. 


содержит как словесное описание алгоритмов, так и реализованных на с++. Соответственно, читая их словесное описание, реализуешь на Delphi. Я сам пишу на Delphi и все алгоритмы реализовываю именно таким образом.

Автор: DragonFire 31.12.2006, 11:13
А автор кто?

Автор: Bitter 31.12.2006, 14:19
автор Френсис Хилл

Автор: Bitter 31.12.2006, 19:06
Именно эта книга. Качайте, не пожалеете.

Автор: Hidrag 26.1.2007, 00:19
Ни как не могу сообразить, кто знает подскажите...

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

Автор: arilou 26.1.2007, 00:42
сортировать по удаленности от юзера и рисовать с конца списка

Автор: Hidrag 26.1.2007, 10:09
arilou, Логично, но как высчитать эту удаленность от юзера? По идее удаленность должна определяться осью Z, но координаты точек полигона состоят из координат только X и Y, координата Z как такавая в процессе рисования не учавствует, она и спользуется только для расчета координат X и Y.

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

Автор: $tatic 26.1.2007, 14:30
Для куба оптимальным будет алгоритм отсечения невидимых граней. Он в случае выпуклого многогранника достаточен.

Автор: Hidrag 26.1.2007, 14:32
Благодаря $taticу и его отлчному знанию теории задача была решена! smile

Автор: arilou 28.1.2007, 00:52
Hidrag, так Z-координата у тебя ж и так есть, пусть она и не используется для рисования, но для рассчетов-то она используется. Вот по ней и сортировать...

Автор: Elfet 5.7.2007, 09:10
Ф.Хилл 'OpenGL. Программирование компьютерной графики'
Кто-нибудь делал тематическое задание 7.4? Если да, дайте посмотреть smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)