Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
#1

Компьютерная графика 3D. - C++

22.04.2012, 20:47. Просмотров 1326. Ответов 6
Метки нет (Все метки)

Потребовалось мне сделать проект с 3D графикой. Т.е. надо было нарисовать плоскость Безье. Все вроде бы получилось, но во первых, хреново работает Z-буффер, если объекты находятся друг в друге(отрезок в плоскости), то происходит неприятное искажение. Далее, плоскость Безье рисуется треугольниками, но используемый мной алгоритм приводит к тому, что между рядом стоящими треугольниками есть просветы, т.е. если у двух треугольников есть две общие вершины, то когда я оба треугольника нарисую, то между ними будут черные точки, через которые будут просвечивать объекты, которые находятся за треугольниками. Но это все не очень критично, основная проблема у меня с добавляением освещения. Я начитался кучкой статей и парой книжек, даже есть некоторые сподвижки, но дальше совершенно не идет(( Если у кого-то есть, пожалуйста выложите свой проект на схожую тематику, либо дайте информацию, как все это дело вообще делается. Заранее предупреждаю, должна использоваться чистая математика(матрицы, векторы и т.п.), НИКАКИХ OpenGL и DirectX, вся 3D графика делается собственноручно. С отчаянием жду помощи от вас.

Добавлено через 24 минуты
В данный момент графика рисуется так: есть координаты вершин треугольника, все вершины умножаются на матрицы камеры и проецирования, все вершины проецируются на экран(получаем экранные координаты), а затем уже по трем точкам я рисую треугольник(закрашиваю его горизонтальными линиями).
Меня интересует вопрос, оправдает ли себя использование обратной трассировки лучей? Т.е. отказаться от текущего способа, и через каждый пиксель экрана пропускать луч, искать его пересечение с треугольниками, а далее определять цвет с учетом источника света, ну и т.п.?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 20:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Компьютерная графика 3D. (C++):

Компьютерная графика - C++
Есть две функцииvoid my_Line(int x1,int y1, int x2, int y2, int color)// Линия { int deltaX=abs(x2-x1); int deltaY=abs(y2-y1); ...

Компьютерная графика в c++ - C++
Помогите пожалуйста написать в с++ такой алгаритм, чтобы рисовать различные фигуры, к примеру прямоугольник.

Компьютерная графика - C++
Люди, прошу помощи. Мне нужно создать компьютерную 3D графику. Причем для меня это выглядело так: пришел препод, сказал всего 1 фразу, -...

Компьютерная графика и анимация - C++
Изобразить на экране монитора прямоугольник с изменяемыми длиной и шириной(+/-), расположением (стрелками). Кто-нибудь может сказать,...

Компьютерная графика. Реализация фигуры додекаэдр - C++
class MYAPPLICATION : public APPLICATION_3D { ... // Начальные координаты мыши int mX; int mY; // Изменение...

Компьютерная графика: нарисовать на экране куб - C++
нужно нарисовать куб на экране, а для этого преобразовать 3д координаты в 2д помогите, пожалуйста, не могу понять как это реализовать на...

6
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
23.04.2012, 00:21 #2
а как вы будете использоваться 3D без OpenGL и DirectX????
Цитата Сообщение от darkknight2008 Посмотреть сообщение
НИКАКИХ OpenGL и DirectX, вся 3D графика делается собственноручно.
WinAPI, но это 2Д
0
IFree Host
23.04.2012, 00:24
  #3

Не по теме:

По моему, darkknight2008, ты выдумал для себя экстремальный геморой. Однако хотелось спросить, зачем изобретать велосипед с самого начала, когда можно совершенствовать уже существующий? Или это просто для удовольствия?

0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.04.2012, 00:57 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от panicwassano Посмотреть сообщение
а как вы будете использоваться 3D без OpenGL и DirectX????
очень просто - из самого примитивного - аксонометрические проекции например
3
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
23.04.2012, 01:53  [ТС] #5
Считай основная база у меня сделана, это и работа с векторами и матрицами. Используется перспективная проекция. Реализованы методы, позволяющие нарисовать плоскость Безье, сделан Z-буфер. Но основная проблема в мелочах, и я не знаю, как их исправлять(( А на вопрос зачем это надо, ответ предельно понятен - институт.
0
IFree Host
23.04.2012, 02:20
  #6

Не по теме:

Понятно, значит, меня это тоже ожидает! Если, конечно, вообще дотяну до конца.

0
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
23.04.2012, 15:44  [ТС] #7
Ладно, помощь больше не требуется. Все сделано хоть и не в лучшем виде, но работает, освещается и отсекается невидимое.
0
23.04.2012, 15:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2012, 15:44
Привет! Вот еще темы с ответами:

Посоветуйте литературу по теме "Компьютерная графика и аналитическая геометрия" - C++
Доброе время суток.Возникла след. проблема.У нас появился такой предмет как комп. грфика,вроде все хорошо,но проблема в том,что препод на...

Компьютерная графика на VS C++ MFC. Срочно требуется помощь! - C++
Привет всем. Я с 3 курса факультета информационных технологий НГУ. Хочу попросить помощи в решении задач по курсу комп. графики....

У кого есть книга :"Интерактивная компьютерная графика" Вводный курс на базе Open GL со страницами 245-256? - C++
У кого есть книга :"Интерактивная компьютерная графика" Вводный курс на базе Open GL со страницами 245-256? они отсутствуют. ...

Задача Компьютерная игра C++ - C++
Здравствуйте! Помогите решить задачку на тему Динамическое программирование. У меня проходит только 5-тестов. Задача находится...


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

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

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