LINUX.ORG.RU

Рендер графона как в ELITE

 , ,


0

2

Собственно, как? Я бы хотел запилить, но как оно устроено - не знаю и не понимаю. Киньте список литературы/статей и прочего.

П.С. Интересует именно софтварный рендер. Исходники можете кидать, но теория куда лучше.

Deleted
Ответ на: комментарий от bvn13

Там почти нет годных статей (или вообще нет) по софт рендеру. Я там сижу с 2008 года, запомнил бы.

Deleted
()
Ответ на: комментарий от devl547

Во, типа такого, да. На русском бы еще, ваще круто было. Но имхо, там мало объяснений на тему как оно вообще работает, в основном код.

Deleted
()
Ответ на: комментарий от frozenix

Там только рисование линий, а 3D делается путем преобразований координат и т.д.

Так мне это и надо.

Deleted
()
Ответ на: комментарий от waker

Лол, вы запарили:

А что сложного в wireframe?

Проекции, преобразования координат и т.д. Я во все это не мочь, а хочется.

Линии рисовать я умею.

Deleted
()
Ответ на: комментарий от Deleted

координаты точек, составляющие линии, пишешь в виде X,Y,Z. трансформируешь в экранные координаты, обрезаешь, рисуешь алгоритмом сверху.

если не знаешь как трансформировать.. прочитай 2.1 и 2.2 отсюда, тебе хватит.

waker ★★★★★
()

man Однородные координаты
man Афинные преобразования в однородных координатах

Для линий этого хватит. Для текстур
man z-буфер

redgremlin ★★★★★
()

осилиьт основы начертательной геометрии на уровне 1 курса - не так уж сложно. Там все есть.

arkhnchul ★★★
()
Ответ на: комментарий от static_lab

В спецификациях OpenGL < 3.0 описан фиксированный пайплайн и даны все формулы.

для графики как в оригинальной элите, достаточно формул в 10 раз проще, чем в пайплайне opengl.

waker ★★★★★
()
Ответ на: комментарий от esandmann

А, понятно. Мне вообще говорили, что программирование не мое, ага. А потом те же кто говорили, не осилили даже сишеку, которая простая как топор.

Deleted
()
Ответ на: комментарий от waker

Любой закраске полигонов нужен z-буфер. В том числе закраске текстурой. Не искать же пересечения полигонов, это на пару порядков сложнее.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

нет. zbuffer нужен для hidden surface removal, но не для текстурирования.

и пересечения треугольников вообще искать не надо, если речь о painters algorithm. другой вопрос, что он не работает на пересекающихся треугольниках. но ни один к текстурированию прямого отношения не имеет. т.е. они и без текстурирования нужны, а можно и текстурировать без них.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от redgremlin

еще раз повторяю: текстурирование полигонов никак не зависит от zbuffer. это отдельный шаг в конвейере.

zbuffer позволяет узнать нужно ли рисовать точку (видна ли она), а текстурирование делается уже после этого.

предвещая вопросы: да, я писал в свое время софтовые растеризаторы, несколько разных, и с zbuffer, и без него.

чтобы узнать как работает текстурирование без zbuffer - возьми хоть тот же opengl, и попробуй рисовать текстурированные треугольники вообще не создавая zbuffer. убедишься, что это прекрасно работает.

и, что для тебя прозвучит не менее странно, без текстурирования zbuffer тоже прекрасно работает, что можно проверить тем же способом — рисовать тем же opengl полигоны без текстур.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 3)
Ответ на: комментарий от waker

Какой ещё конвейер? Тема про написание своего велосипеда. Покажи мне как ты будешь накладывать текстуру на рисуемый полигон без z-буфера. Код, сестра, код!

redgremlin ★★★★★
()
Ответ на: комментарий от waker

Ты слишком зациклился на конкретной реализации OpenGL. С точки зрения алгоритмов не бывает нетекстурированных полигонов, просто в вырожденном случае подразумевается текстура 1х1.

redgremlin ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Пытался осилить, но дропнул на полпути. RedBook - тупо справочник по ф-иям opengl, в нём не написано в каком порядке их вызывать и почти без примеров. Superbible - очепятки, очепятки, тут даже в разделе Jobs предлагали деньги, тем, кто сможет собрать примеры из книги. Но не в этом беда, начало у книги хорошее, математика, примеры и т.д. Но затем скатывается к тупому описанию ф-ий без реальных примеров как в RedBook.

RedBook, Superbible - последние издания с OpenGL 4.3, в предыдущем издании superbible вообще садомия была, значительно её переписали.

frozenix ★★★
()
Последнее исправление: frozenix (всего исправлений: 1)
Ответ на: комментарий от redgremlin

окай. продолжай так думать, далеко пойдешь.

С точки зрения алгоритмов не бывает нетекстурированных полигонов

убил наповал.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от Deleted

Любой учебник по аналитической геометрии и линейной алгебре.

anonymous
()
Ответ на: комментарий от waker

убил наповал

Т.е. для тебя set_pixel(get_x_2d(point), get_y_2d(point)) = color; и set_pixel(get_x_2d(point), get_y_2d(point)) = get_color_2d(texture, point); — это алгоритмические разные задачи? ОК.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

чето пришло в голову — ты забыл написать, что полигонов без zbuffer не бывает, просто в вырожденном случае подразумевается что в нем одни нули :)

waker ★★★★★
()
Ответ на: комментарий от redgremlin

Т.е. для тебя set_pixel(get_x_2d(point), get_y_2d(point)) = color; и set_pixel(get_x_2d(point), get_y_2d(point)) = get_color_2d(texture, point); — это алгоритмические разные задачи? ОК.

это бредовый неправильный код, который работать не может.

но ты лучше ответь, а вот так тоже одинаковый алгоритм, да?

if (passes_z_test (x,y,z)) {
   set_pixel ....
}

давай уже сюда весь конвейер навесим, и скажем что рисование пикселя в 2д — это просто вырожденный случай unreal engine.

waker ★★★★★
()
Ответ на: комментарий от Deleted

Что такое «начертательная геометрия»?

собственно, прикладная дисциплина, рассматривающся вопрос: как же все то говно, которое мы насчитали в геометрии аналитической или еще как получили, будет отображаться на некоторую проекцию. В основном - двухмерную. Оттуда так или иначе растут ноги большинства алгоритмов геометрического рендера.

arkhnchul ★★★
()
Последнее исправление: arkhnchul (всего исправлений: 1)

Я такую хрень как в элите рисовал на спектурме, как только освоил решение треугольников в школе. Гугли про арктангенс.

nanoolinux ★★★★
()

это рендером то трудно назвать. есть куча старой литературы с теорией и практикой начиная от майндфака на BASIC и заканчивая относительно стройной реализацией на C++. в простейшем случае тебе требуется по нормали определить видимость полигонов, потом отсортировать полигоны по Z и отрисовать.

exception13 ★★★★★
()

если вычислять лень то бери Z-буффер и отрисовывай в него все полигоны (только с заливкой).

exception13 ★★★★★
()
Ответ на: комментарий от nanoolinux

Я такую хрень как в элите рисовал на спектурме, как только освоил решение треугольников в школе. Гугли про арктангенс.

Ты уже в школе был бородат, очкат и пузат? Просто я ни чего из этого пока не имею, вот и не шарю в матане.

Deleted
()
Ответ на: комментарий от buddhist

смотри, царю об этом не скажи

Это который стыреный код кидал и обещал научиться всех прогать так же?

Deleted
()
Ответ на: комментарий от Deleted

линейную алгебру и геометрию для первокурсников почитай, там все есть

anonymous
()

Там всё просто. Смотри, есть отрезок от точки (х1,y1,z1) до точки (х2,y2,z2). Центр координат находится в твоём глазу, глаз(условно) - точно по центру монитора. Соответственно, отрезок надо спроецировать на монитор. Берёшь линейку и считаешь, сколько от глаза до монитора, и длину и ширину экрана. Потом переводишь в градусы, т.е. угол между прямой глаз-центр монитора и глаз-верхний край монитора, глаз-левый край монитора. Зачем? А вот зачем.Зная физические размеры монитора и разрешение, элементарно переведёшь пиксели в сантиметры, и в градусы. А градусы - в пиксели. Затем, по правилам школьной геометрии, посчитаешь углы по вертикали и горизонтали от прямой глаз-центр экрана до точек (х1,y1,z1), (х2,y2,z2) и переведёшь углы в пиксели. Всё.

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

Хех, спасибо! Такого наглядного объяснения проекции я еще не видел :)

В общем, как буду заниматься этой фигней, отпшусь. Это, скорее всего, будет не скоро, через пару месяцев. Вопрос я задал на будущее, так сказать.

Deleted
()
Ответ на: комментарий от Deleted

Это тот, которому ты и еще 99.99% посетителей ЛОРа и в подметки не годитесь. У пацана реальный скилл, а у вас всех одно бахвальство.

anonymous
()

карьера_дворника.txt

Тут же достаточно первого курса анал. геометрии. Даже матриц и аффинных преобразований не надо (точнее можно без них обойтись).

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.