Newbie - general rendering question

Started by
7 comments, last by marcotronic 22 years ago
Hello everybody, I´m totally new to OpenGL and just wanted to ask you if it is technically possible to create as beautifully rendered bitmaps as programs like 3DS Max, Maya or Cinema4D are able to create - I mean just by using the standard OpenGL API ? When I look at the output results of NeHe´s OpenGL lessons for example there is a big difference (antialiasing, soft shadows etc.) to output results created by the above mentioned programs. I´m just wondering if I could create such very good looking bitmaps by programming them myself using OpenGL. I don´t want to get any realtime output for games or something like that. My idea is to develop my own little 3D App which is able to create high resolution bitmaps from an OpenGL scene I create (using textures, light, shadows, maybe own particle engine etc.) I hope you understand my question - unfortunately my English is not that brilliant... I´m just wondering if it is possible to get hi-res - let´s say photo-realistic - pictures just by the means of OpenGL. Thanx for your answers in advance. Marco. [edited by - marcotronic on April 12, 2002 4:21:33 PM] [edited by - marcotronic on April 12, 2002 5:33:59 PM]
Follow me on twitter: http://www.twitter.com/marcotronic
Advertisement
Well - technically, it''s possible (probably - I''m not actually certain).

However, to do it, you''re going to need to do a lot of work. I think that if you''re writing something to do non-realtime photo-realistic rendering, then a Software render is much better:
+ It gives you a lot more freedom, so you can use whatever data structures you want, and deal with things in your own way, without having to work around OpenGL.
+ You don''t have to worry about whether the hardware supports a particular feature - ok, it''ll be slow, but it''ll work with most hardware (although the processor speed will have a very large effect - it will only really affect speed, not quality)

There are other reasons, but I can''t think of them at the moment (my brain needs sleep).

Hope that helps,

John B
The best thing about the internet is the way people with no experience or qualifications can pretend to be completely superior to other people who have no experience or qualifications.
It is possible, but you will need one crazy video card to handle high polygone counts
Given that it doesn''t have to be real-time, high polygon counts are not a problem. The difficult part is dealing with lighting, which would probably have to use something resembling ray-casting or radiostiy to get a realistic image. Either of those (ray-casting and radiosity) are IMHO done much more easily in custom software (without using OpenGL).

John B
The best thing about the internet is the way people with no experience or qualifications can pretend to be completely superior to other people who have no experience or qualifications.
If I understand your comments right, then the aim of OpenGL (or today´s state of OpenGL) isn´t a photo-realistic output with a long rendering time, but the best output possible in realtime, if your video hardware supports this - if not, then it is done by software, which is much slower. So the OpenGL Api itself doesn´t provide for my needs. As far as I know, most professional 3D apps (Maya, Cinema4D etc...) use OpenGL for designtime. Am I right in saying that they don´t use OpenGL for rendering the final output? If you render a bitmap using these programs you may wait for minutes or even hours for an output even with a fast CPU (dependend on the rendering options, e.g. if you render volumetric lights, caustics etc. the rendering may take very long)

What else could I use? I cannot imagine that I really have to write a complete new rendering engine for my OpenGL scenes? Are there any (free) rendering possibilities for my needs? If yes - how do they communicate with my OpenGL scenes, where do I find any ?

Greetings from Germany,
Marco.
Follow me on twitter: http://www.twitter.com/marcotronic
What do you mean by "OpenGL scene"?

John B
The best thing about the internet is the way people with no experience or qualifications can pretend to be completely superior to other people who have no experience or qualifications.
OpenGL spits polygons to the graphics card. Period. It has no idea what a "scene" is.

The simplest approach is raytracing. There are may tutorials out there. Just cast a ray through each pixel, check for intersections, and see if the intrsection is nearer than the value in the z buffer; if it is, cast the ray from that point to the light. If there are no intersections, set the intensity of that pixel to the cosine of the angle between the light and the surface normal times the light color and the object color. Done. Rinse and repeat.
Hello,

thanx everybody for your answers. Now I´ve got an idea of the work I would have to do... I would have to develop at least a raytracing mechanism for my needs, well.... I thought there was an easier solution, okay - I have to think about all that again

By the way, an "OpenGL scene" for me is the collection of all OpenGL elements displayed on the screen - just to make things clear...

Thanx again,
Marco.
Follow me on twitter: http://www.twitter.com/marcotronic
Technically, yes, it is possible to get a photo-quality image from OpenGL. But there''s no point. It was not designed for that, but for real time rendering.

Of course, if you want to follow through with this idea, then there are a few options. Using insanely high numbers of polygons would be a must. Not only to make sure that curves appear smooth, and everything detailed, but also for lighting to function properly, and be detailed enough for you''re purposes (its done on a per-vertex basis, and linearly interpolated along the polygon, if you didn''t know and if that makes any sense at all). I''m not familiar with the NURBS and general curve functionality of OGL, so there might be something of interest there.

NVIDIA and ATI have put out some spectacular extensions which can help make scenes look very realistic. If you have a fairly recent video card (Geforce 3 and up, Radeon 8500 and up) you can get this extra functionality. Unfortunately, AFAIK these extensions can''t really be left to work in software, as they are designed specifically for their GPU. What I mean is that unlike official features, like the accumulation buffer, which will use a software version if HW acceleration isn''t found, these extensions will just not function at all if HW acceleration isn''t found.

One problem that comes to mind is where will you get the models and scenes from? You would either have to define them using coordinates in the program, define them procedurally, or use something like Maya to make them and then import them into the program.

Doom 3 is a pretty good example of how realistic OGL rendering can be. But I think for your purposes the costs outweigh the benefits. You should probably stick to tried and true ray-tracing and/or radiosity. Hope I''ve been helpful...

--Buzzy

This topic is closed to new replies.

Advertisement