views:

820

answers:

4

I am writing a very simple 3d particle software rendering system, but I am only really interested in coding the particle system and the rasterizer, so what I am looking for, is the easiest way to go from 3d particle coordinates, through camera, to screen coordinates, but with features like variable FOV, and targeted (look at) camera.

Any additional features such as distance from point to point, bounding volumes etc. would be a bonus, but ease of use is more important to me than features.

The only license requirement is that it's free (as in beer).

+2  A: 

You probably want a scenegraph library. Many C++ scene graph libraries exist. OpenScenegraph is popular, Coin3D (free for non-commercial use) is an implementation of the OpenInventor spec, any of them would probably fit your need as it doesn't sound like you need any cutting-edge support. There is also Panda3D, which I've heard is good if you're into Python.

You could do all of this in a straight low-level toolkit like OpenGL but without prior experience it takes a lot longer to get a handle on using OpenGL than any of the scenegraph libraries.

When choosing a scenegraph library it will probably just come down to personal preference as to which API you prefer.

+1  A: 

Viewing is done with elementary transformations, the same way that model transformations are done. If you want some convenience functions like gluLookAt() in GLU, then I don't know, but it would be really easy to make your own.

If you do want to make your own Look At function etc. then I can recommend eigen which is a really easy to use linear algebra library for C++.

Borbus
+1  A: 

If you're trying to just focus on the rendering portion of a particle system, I'd go with an established 3D rendering library.

Given your description, you could consider trying to just add your particle rasterization to one or both of the software renderers in Irrlicht. One other advantage of this would be that you could compare your results to the DX/OGL particle effect renderers that already exist. All of the plumbing/camera management/etc would be done for you.

Reed Copsey
A: 

You may also want to have a look at the Armadillo C++ library

dq87jg