views:

1113

answers:

12

I'm in the final year of university education. Soon I'll have to start writing my bachelor dissertation, but I have no idea what software I should write for it.

The ideal would be a C++ multi-threaded cross-platform (windows, linux) computer graphics related program. It's also very important to pick project I'll be able to complete - failing in this would have nasty consequences.

I was thinking about following projects:

  • Software renderer - really interesting one, but I'm afraid I would spend most time on maths. Actually I don't mind maths but in this project I think it would be really hard/complex.

  • Defrag fps - something like Quake III mod (example movie) - you are just trying to get from point A to point B in the shortest time. I thought to use Ogre and Havok for this project. However it's a game so I would have to spend some time to get graphics and sound instead of coding.

I'll be very thankful for any advice.

+3  A: 

A simple ray-tracer is very easy to start with. Infact it is a standard homework assignment in many undergrad graphics courses. The real challenges with software renderers is to find neat ways to make them faster than you'd expect.

shoosh
A: 

A poker framework, extensible to an online poker game. It's what I have in mind, until something more enticing comes along.

Beau Martínez
+3  A: 

I would concentrate on the lighting aspect of the renderer, and do something that commodity hardware doesn't do yet (radiosity for example).

justinhj
+2  A: 
  1. Design a new Web Framework that makes data-backed site creation trivial (and I mean trivial, better than Rails or Django)

  2. Don't just make some cheesy game. You're supposed to do that when you're 12. A software renderer is a far more educational experience.

Frank Krueger
Agreed on the game part. I made a game for my associate's capstone project. And let me tell you, it's a lot harder than it looks and it's also not as obvious how much work went into it to the untrained eye.You can make a commercial grade app yourself, no problem. Making a commercial grade game is harder.
ryeguy
+1  A: 

Game mods shouldn't be appropriate for a bachelor dissertation.

Graphics renders aren't horrible to write. Make sure you have adequate math knowledge however. Matrices and three dimensional projections are key concepts to understand well before trying to undertake rendering.

Ben S
+2  A: 

Scene graph optimizer. Given an unoptimized scene graph, optimize for rendering.

McWafflestix
+1  A: 

Have a look at openscenegraph. It's an open source C++ based 3D rendering engine framework used for purposes like professional flight simulators or tower simulators like this one (Note: shameless plug for my employer).

We've had aerospace students using this environment to connect Virtual devices like Head Mounted Displays to it.

There might be a lot of companies interested in this work and it gives you also experience into getting in-depth in a new technology you do not know about.

Roalt
A: 

a friend of mine did a 3d renderer of data from MRIs. The data points are/were made available freely by a university. It was really cool to see a rotating 3d skull from an actual MRI :). Maybe something along those lines would be interesting for you, plus he built in from start to finish in a semester, so I think you would be able to do a similar project for a dissertation.

nstehr
A: 

I would recommend picking something much simpler and boring. There's a time and a place to take on new, complicated and interesting projects and in my experience that time is not in college when you have several other classes to juggle.

You may be better at time management than I but this is just my recommendation. ;)

Spencer Ruport
+2  A: 

There are lots of things you can do:

  • Find a book algorithms and attempt to implement an algorithm for solving a particular problem using multiple techniques. For example, given a set of points, find the shortest cycle through the graph (not necessarily the shortest cycle that touches all points in the graph).

  • Write an implementation of OCaml, Prolog, Erlang, or a Lisp interpreter.

  • Ray tracer.

  • Implement this neat little program demonstrating collision detection.

  • Write a tool to diff text.

  • If you want a project that's not beyond your skill level, as some of the above might be, then write a better string class and string library (I hear its a kind of rite of passage for any C++ developer to write their own string library).

Don't worry if you're reinventing someone's wheel, or if your program isn't flashy and exciting, just focus on getting that degree.

Juliet
+5  A: 

I don't know the level of work that is expected for a bachelor dissertation at your university. But at my university, one of the requirements was to create something new, to solve a problem that had not been solved before.

Therefore my advise is to find a subject where you can, well, you know... go where no one has gone before. Where you can devise a new solution to a problem, not just the n'th software renderer that is in no decisive part different from the works ofd thousands of students before you.

Second, find a subject that is really, I mean really, of interest to you. You will have to spend quite some time working on the subject, and writing about it. Most likely during summer, with everybody else being out in the sun and having a good time. It makes things so much easier if you are personally interested in what you are writing about. (I get the impression from your question that computer graphics fulfills this requirement).

Treb
A: 

Making a software renderer is a lot of fun, but I wouldn't suggest making a full game; it's a lot more work than you think. A really great book for software rendering is Developing Games in Java. It shows you how to create a simple FPS game in Java and optimize it a lot. It covers things like 3D math, lighting, collision detection, path finding, AI, and scripting.

Zifre