mirror of
https://github.com/ssloy/tinyraytracer.git
synced 2025-01-29 03:47:36 +01:00
Updated Home (markdown)
parent
35e3789f9e
commit
ab0c3db73e
17
Home.md
17
Home.md
@ -216,20 +216,19 @@ And here is the result:
|
||||
As promised, the code has 256 lines of code, <a href="https://github.com/ssloy/tinyraytracer">check it for yourself</a>!
|
||||
|
||||
<h1>Step 10: home assignment</h1>
|
||||
Мы прошли довольно долгий путь: научились добавлять объекты в сцену, считать довольно сложное освещение. Давайте я оставлю два задания в качестве домашки. Абсолютно вся подготовительная работа уже сделана в ветке <a href="https://github.com/ssloy/tinyraytracer/tree/homework_assignment">homework_assignment</a>. Каждое задание потребует максимум десять строчек кода.
|
||||
We've come a long way: we've learned how to add objects to a scene, how to compute rather complicated lighting. Let me leave you two assignments as homework. Absolutely all the preparatory work has already been done in the branch <a href="https://github.com/ssloy/tinyraytracer/tree/homework_assignment">homework_assignment</a>. Each assignment will require ten lines of code tops.
|
||||
|
||||
<h3>Задание первое: Environment map</h3>
|
||||
На данный момент, если луч не пересекает сцену, то мы ему просто ставим постоянный цвет. А почему, собственно, постоянный? Давайте возьмём сферическую фотографию (файл <a href="https://raw.githubusercontent.com/ssloy/tinyraytracer/homework_assignment/envmap.jpg">envmap.jpg</a>) и используем её в качестве фона! Для облегчения жизни я слинковал наш проект с библиотекой stb для удобства работы со жпегами. Должен получиться вот такой рендер:
|
||||
<h3>Assignment 1: environment map</h3>
|
||||
At the moment, if the ray does not intersect any object, we just set the pixel to the constant background color. And why, actually, is it constant? Let's take a spherical photo (file <a href="https://raw.githubusercontent.com/ssloy/tinyraytracer/homework_assignment/envmap.jpg">envmap.jpg</a>) and use it as a background! To make life easier, I linked our project with the stb library for the convenience of working with the jpg format. It should give us such an image:
|
||||
|
||||
<img src="https://raw.githubusercontent.com/ssloy/tinyraytracer/homework_assignment/out-envmap.jpg"/>
|
||||
|
||||
<h3>Задание второе: кря!</h3>
|
||||
Мы умеем рендерить и сферы, и плоскости (см. шахматную доску). Так давайте добавим отрисовку триангулированных моделей! Я написал код, позволяющий читать сетку треугольников, и добавил туда функцию пересечения луч-треугольник. Теперь добавить утёнка нашу сцену должно быть совсем тривиально!
|
||||
<h3>Assignment 2: quack-quack!</h3>
|
||||
We can render both spheres and planes (see the checkerboard). So let's draw triangle meshes! I've written a code that allows you to read an .obj file, and I've added a ray-triangle intersection function to it. Now adding the duck to our scene should be quite trivial:
|
||||
|
||||
<img src="https://raw.githubusercontent.com/ssloy/tinyraytracer/homework_assignment/out-envmap-duck.jpg"/>
|
||||
|
||||
|
||||
<h1>Заключение</h1>
|
||||
Моя основная задача - показать проекты, которые интересно (и легко!) программировать, очень надеюсь, что у меня это получается. Это очень важно, так как я убеждён, что программист должен писать много и со вкусом. Не знаю как вам, но лично меня бухучёт и сапёр, при вполне сравнимой сложности кода, не привлекают совсем.
|
||||
|
||||
Двести пятьдесят строчек рейтрейсинга реально написать за несколько часов. <a href="https://github.com/ssloy/tinyrenderer/wiki">Пятьсот строчек</a> софтверного растеризатора можно осилить за несколько дней. В следующий раз разберём по полочкам <a href="https://ru.wikipedia.org/wiki/Ray_casting">рейкастинг</a>, и заодно я покажу простейшие игры, которые пишут мои студенты-первокурсники в рамках обучения программированию на С++. Stay tuned!
|
||||
<h1>Conclusion</h1>
|
||||
My main goal is to show projects that are interesting (and easy!) to program. I am convinced that to become a good programmer one must do lots of side projects. I don't know about you, but I personally am not attracted to accounting software and the minesweeper game, even if the complexity of the code is quite comparable.
|
||||
Few hours and two hundred and fifty lines of code give us a raytracer. <a href="https://github.com/ssloy/tinyrenderer/wiki">Five hundred lines</a> of the software rasterizer can be done in a few days. Graphics is really cool for learning the programming!
|
Loading…
x
Reference in New Issue
Block a user