Pull to refresh

Comments 16

Могли бы посоветовать материалы по математике и в целом по 3д графике, что бы самостоятельно сделать движок(примитивный) для отображения трёхмерного? Ну кроме того что вы описали в статье

Если интересно прям с нуля, то есть две фундаментальные (хотя и давно выпущенные) книги Д. Роджерса: "Математические основы машинной графики" и "Алгоритмические основы машинной графики" (тут более конкретно, часть книги посвящена 3D графике) . Из более современного можно посмотреть "Fundamentals of Computer Graphics" Peter Shirley, полностью не разбирал, только нужные части, но в целом хорошо. Достаточно методично написана "Компьютерная графика. Рейтрейсинг и растеризация." Габриел Гамбетта. На самом хабре есть замечательный цикл статей от @haqreu.

А зачем? Свои движки было интересно делать лет 20 назад, но даже тогда делалось не с нуля, а с применением DirectX или OpenGL.

Про 20 лет назад не скажу - меня тогда еще не было). Но такие вещи обычно делаются в учебных целях как по собственному желанию, так и нет. Нужно ли заниматься реализациями с нуля для своего понимания, чтоб потом использовать профессиональные инструменты - пока не знаю (но хочется верить, что нужно), было бы интересно послушать мнение старших профессионалов по этому поводу. В "реальных" проектах, конечно, такое делать не надо (нельзя).

Какой-то странный вопрос. Ничто не мешает все то же самое считать не процессором, но технологический фундамент у них одинаковый. Будь-то рендеринг на процессоре, ручное управление из кода на C++ или кучка шейдеров прикрученных к какой-нибудь ноде в Unity.

У вас размах канеш, от CPU до Unity.

если спрашиваете то значит вам это не надо ;)

А почему именно QT? Думаю, на SFML такое повторить было бы намного проще

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

UFO landed and left these words here

Спасибо за обзор, вы не показали ключевой момент что вы расчеты производите на верхней полусфере, отсюда следует

light, shadow, normals

Посчитать нормаль векторным произведением можно, но таким способом мы получим две нормали. Как определить какая из них внешняя?

смотрят на верхнюю полусферу глобальную типо. тоесть омега сцены это предположительно верхний кусочек сферы=купол=полусфера

мы как бы в куполе стоим

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

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

introduction-to-lighting.html

ну еще можно будет определить кватернионом наверно

Попробую структурировать Ваше замечание. Нам нужно посчитать внешнее освещение в точке (опять же на примере куба) какой-то грани. Для этого из точки мы выпускаем лучи во всех направлениях - по сфере, построенной вокруг этой точки. В таком случае нам стоит рассматривать только лучи по "верхней" полусфере, потому что нижняя полусфера находится внутри куба (и заслонена самой гранью) и никакой свет оттуда не придет (если куб непрозрачный). Но, чтобы знать, какая сфера "верхняя", нужно иметь лицевую нормаль, т.е. нормаль, смотрящую вне объекта, именно она задаст верхнюю полусферу. Можно попробовать предложить: "Верхняя сфера - та часть сферы, которая не пересекается с объектом", но это будет верно только для выпуклых объектов.

Sign up to leave a comment.

Articles