Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.30.162] |
|
Сообщ.
#1
,
|
|
|
Доброго всем времени суток.
Хочется сделать нечто вроде пузатого(старого) телевизора, на котором буде показываться изображение. Как сделать - я беру, рисую текстурку на сетку(допустим 32 линии Х 32 столбца), а потом искажая сетку добиваюсь выпуклости(ил вогнутости) изображения. Собственно вопрос, где бы найти формулу по которой можно было бы построить такую вот штуку???? |
Сообщ.
#2
,
|
|
|
Берете трехмерный редактор с рейтрейсингом. Рисуете текстуру с сеткой. В трехмерном редакторе ставите перед камерой прямоугольник, затекстурированный вашей текстурой, между камерой и прямоугольником рисуете линзу с необходимыми параметрами. Рендерите сцену, получаете картинку с правильно искаженной сеткой. Берете из нее координаты.
|
Сообщ.
#3
,
|
|
|
Вот на картинке пример метода. Нужная область накрывается выпуклым куполом (здесь используется сфера, на практике лучше пользоваться параболоидом вращения). А дальше просто. Из рисуемой точки проводишь перпендикуляр. Точку пересечения его с куполом соединяешь с некоторой точкой ниже плоскости. И в качестве нужного цвета берешь цвет точки пересечения этой наклонной линии с плоскостью. Степень увеличения будет определяться отношением расстояний от точки схождения до плоскости и до вершины купола
Обозначим радиус линзы - R, увеличение в центре линзы - 1+k rt - радиус итоговой точки rs - радиус исходной точки yс - высота купола над итоговой точкой получаем пару уравнений yс = k*(1-(rt/R)2) rs/1=rt/(1+yс) или rs=rt/(1+k*(1-(rt/R)2)) м.б. можно его упростить Прикреплённая картинка
|
Сообщ.
#4
,
|
|
|
n0rd, эээ а можно как-то поподробнее??? что за редактор, что такое ретрейсинг, и координаты узлов сетки мне потом надо будет в своей прописать и все будет окей?
Дико извиняюсь за тупизну... |
Сообщ.
#5
,
|
|
|
Ray Tracing - трассировка лучей.
Обычно используют обратную трассировку лучей. Из камеры в каждую точку изображения выпускается луч, пока он не наткнется на что-нибудь. Поскольку распространение света обратимо луч расщепляется (на самом деле наоборот собирается) на три составляющие: луч испущенный поверхностью, отраженный луч и преломленный луч. Ну с испущенным лучом все ясно, эту составляющую мы просто запоминаем, а те два луча тянем дальше, пока их доли не уменьшатся до незаметности, или пока не наберем некоторого числа столкновений. Лучше поискать на той же вики В принципе у тебя тут только преломленный луч, можешь сам попробовать лучи потрассировать. Но результат может тебе не понравиться. Идеальная линза (без аберраций) просто равномерно увеличивает изображение, без каких бы то ни было искажений Добавлено Да, любой графический редактор, поддерживающий эффекты, обычно имеет и линзу, название эффекта правда не вспомню. Картинку придется взять с запасом, с полем размером в половину картинки или больше. |