Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Computer Graphics: Raytracing and Programming 3D Renders

I've noticed that a number of top universities are offering courses where students are taught subjects relating to Computer Graphics for their CS majors. Sadly this is something not offered by my university and something I would really like to get into sometime in the next couple of years.

A couple of the projects I've found from some universities are great, although I'm mostly interested in two things:

  • Raytracing:
    • I want to write a Raytracer within the next two years. What do I need to know? I'm not a fantastic programmer yet (Java, C and Prolog are my main languages as of today) but I'm slowly learning every day. Also, my Math background isn't all that great, so any pointers on books to read or advice on writing such a program would be fantastic. I tend to pick these things up pretty quickly so feel free to chuck references at me.
  • Programming 3D Rendered Models
    • I've looked at a couple of projects where students have developed models and used them in games. I've made a couple of 2D games with raster images but have never worked with 3D models. What would I need to learn in regards to programming these models? If it helps I used to be okay with 3D Studio Max and Cinema4D (although every single course seems to use Maya), but haven't touched it in about four years.

Sorry for posting such vague and, let's be honest, stupid questions. It's just something I've wanted to do for a while and something that'd be good as a large project for me to develop in my own time.

Related Questions

  • Literature and Tutorials for Writing a Ray Tracer
like image 883
Mike B Avatar asked Jan 15 '09 02:01

Mike B


People also ask

What is ray tracing in 3D rendering?

The ray tracer computes the closest intersection point between the scene objects and this ray. It then determines the color of the intersected object at that point, and paints the picture that color. So this pixel would be colored brown, this one yellow, and so forth for the other pixels.

Is ray tracing important for 3D rendering?

Ray tracing is important for creating photorealism and affects how light is simulated in various applications. Up until recently, the technique was limited and not feasible for use in video games and was used mostly in the film making industry.

Does ray tracing affect rendering?

This lets computers accurately render things like shadows, reflections, highlights, and bounced light. The result is a scene that looks more realistic with less work. The only downside is that ray tracing usually takes so much processing power that film studios have to spend days rendering highly detailed scenes.

What ray tracing means?

Ray tracing is a method of graphics rendering that simulates the physical behavior of light. NVIDIA has made real-time ray tracing possible with NVIDIA RTX™ —the first-ever real-time ray tracing GPU—and has continued to pioneer the technology since.


2 Answers

I can recommend pbrt, it's a book and a physically-based renderer used to teach computer science graduates. The description of the maths used is nice and clear, and since it is written in the 'literate programming' you can see the appropriate code (in C++) too.

like image 111
Ian Hopkinson Avatar answered Sep 18 '22 22:09

Ian Hopkinson


The book "Computer Graphics: Principles and Practice" (known in the Computer Graphics circles as the "Foley-VanDam") is the basic for most computer graphics courses, and it covers the topic of implementing a ray-tracer in much detail. It is quite dated, but it's still the best, afaik, and the basic principles remain the same.

I also second the recommendation for Eric Lengyel's Mathematics for 3D Game Programming and Computer Graphics. It's not as thorough, but it's a wonderful review of the math basics you need for 3D programming, it has very useful summaries at the end of each chapter, and it's written in an approachable, not too scary way.

In addition, you'll probably want some OpenGL or DirectX basics. It's easier to start working with a 3D API, then learn the underlying maths than the opposite (in my opinion), but both options are possible. Just look for OpenGL on SO and you should find a couple of good references as well.

like image 26
Kena Avatar answered Sep 19 '22 22:09

Kena