Трассировка лучей, OpenGl, C++ |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Трассировка лучей, OpenGl, C++ |
legat |
28.02.2010 18:37
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Сергей Репутация: 1 |
Необходимо реализовать трассировку лучей на OpenGl и C++, задача вроде проста, есть базовая сфера( радиус =1, центр в начале координат) необходимо ее отрисовать. У меня почти получилось, только вот точки пересечения не получается найти, по моему что-то с заданием направления луча. Может кто-то сталкивался с этим? Буду благодарен за код=)
Может кто знает, где можно найти книгу Лорен Хейни "Построение изображений метод слежения луча"? Сообщение отредактировано: Lapp - 3.03.2010 5:22 |
volvo |
28.02.2010 21:56
Сообщение
#2
|
Гость |
Цитата У меня почти получилось Чего ж ты не показал, что именно у тебя получилось? |
legat |
2.03.2010 20:57
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Сергей Репутация: 1 |
Все добавил код
|
volvo |
2.03.2010 22:18
Сообщение
#4
|
Гость |
Странно. В Reshape используешь функции из GLUT-а, а рисуешь сферу вручную, вместо того, чтоб сделать вот так:
void Display(void) (твой код запустить не могу, что такое у тебя Ray - без понятия). |
legat |
2.03.2010 23:30
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Сергей Репутация: 1 |
Так сферу конечно нарисовать мог, но мне именно надо использовать трассировку, на сферу вообще можно не обращать внимание, я ее использую, чтобы понять как алгоритм можно реализовать
Цитата (твой код запустить не могу, что такое у тебя Ray - без понятия). struct Point |
volvo |
3.03.2010 13:36
Сообщение
#6
|
Гость |
Значит, смотри...
Вот - основа: http://www.codermind.com/articles/Raytrace...First-rays.html (тут - само объяснение того, что происходит при RayTracing-е) Я чуть-чуть доработал код, чтобы он не сбрасывал изображение в файл, а выводил его на экран. И избавился от STL-ных контейнеров... Вот что получилось: arith.txt ( 2.49 килобайт ) Кол-во скачиваний: 672 (векторная математика, нужно переименовать в arith.h) main.cpp ( 4.65 килобайт ) Кол-во скачиваний: 776 (а это сам код) |
legat |
3.03.2010 15:37
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Сергей Репутация: 1 |
Большое спасибо. Буду разбираться с кодом.
|
Client |
3.03.2010 17:11
Сообщение
#8
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
А где взять файлик glut.h ?
|
volvo |
3.03.2010 17:54
Сообщение
#9
|
Гость |
Здесь: ftp://ftp.sgi.com/sgi/opengl/glut/
Там есть файл, название которого начинается с glutdlls... А дальше уж выбирай, что качать Либо бету 3.7, либо стабильную 3.6, либо альфу... У меня 3.6, если что... |
Client |
3.03.2010 18:33
Сообщение
#10
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
спасибо, скачал этот
Цитата 12/11/1997 12:00 1,757,854 glut-3.6.tar.gz Сколько там файлов....если подключая файл указать его в кавычках, поиск идет в папке с .exe, а если в угловых скобках то в сисетмной папке (или где-то там). Интересно, где это "где-то там" ? Сообщение отредактировано: Client - 3.03.2010 18:34 |
volvo |
3.03.2010 19:22
Сообщение
#11
|
Гость |
Цитата скачал этот Ну, и зачем тебе это все? Я ж говорил, что тебе надо только DLL-ки. Там всего 5 файлов... и размер у него раз в 10 меньше.Цитата если подключая файл указать его в кавычках, поиск идет в папке с .exe Это тебе кто сказал? У меня вот EXE создается в подпапке \bin\Debug или \bin\Release, а ищется h-файл относительно той же папке, где лежит исходник, из которого сделан #include...Цитата Интересно, где это "где-то там" ? The #include Directive А вообще - все implementation defined, зависит от конкретного компилятора и среды разработки. |
legat |
3.03.2010 19:33
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Сергей Репутация: 1 |
Не могу понять зачем нужна переменная level?
|
volvo |
3.03.2010 19:39
Сообщение
#13
|
Гость |
Цитата зачем нужна переменная level? А, это чтобы не затормаживать отрисовку сцены. Если будет больше 10 отражений луча - надо прекратить его обработку. В сложных сценах такое очень даже возможно. |
legat |
3.03.2010 21:14
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Сергей Репутация: 1 |
float temp = n * n; Можно еще объяснить это? |
volvo |
4.03.2010 3:03
Сообщение
#15
|
Гость |
Это нахождение нормали (направления отраженного луча) в точке пересечения луча со сферой: с учетом того, что нормаль в точке пересечения имеет направление вектора, выпущенного из центра сферы в эту самую точку пересечения, да еще и учитывая нормализацию, вектор N (нормаль) находится вот так:
N = (newStart - sphereCenter) / |newStart - sphereCenter| Что, собственно, и сделано: // чуть выше того, что ты процитировал, находим N = newStart - sphereCenter |
legat |
1.05.2010 23:49
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Сергей Репутация: 1 |
Пишу трассировку лучей по книге "Программирование компьютерной графики" Ф. Хилла
направление луча задается след. образом: Код float x=-W+(float)col*2*W/(float)nCols; float y=-H+(float)row*2*H/(float)nRows; //вычисляем направление луча theRay.setDir(-nearDist*n.x+x*u.x+y*v.x, -nearDist*n.y+x*u.y+y*v.y, -nearDist*n.z+x*u.z+y*v.z); вектора n, u, v - поля класса Camera а камеру задаю: Код Point3 eye(0,0,100); Point3 look(0,0,0); Vector3 up(0,1,0); Camera cam; cam.set(eye,look,up); может кто задавал параметры для камеры? а то с моими получается, что луч никогда не пересекает даже хотя бы базовую сферу Raytracer.v.2.rar ( 3.69 килобайт ) Кол-во скачиваний: 538 (а вот весь код, который у меня есть) |
volvo |
5.05.2010 11:41
Сообщение
#17
|
Гость |
Цитата (а вот весь код, который у меня есть) Оно что у тебя, компилируется? Мне вот чего выдает:
|
ttt |
4.11.2011 13:30
Сообщение
#18
|
Гость |
Может у кого-то есть книга
"Лорен Хейни. Построение изображений методом слежения луча"? |
Текстовая версия | 6.05.2024 4:34 |