Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
ob3kenob

3D Illusions in D3

Recommended Posts

I know about standard bump mapping, but there is another, similar but much more realistic technique used in Doom 3 that creates a 3D shell having all the advantages of bump mapping while adding realistic depth as well. That is, the 3D effect doesn't vanish when the image reaches the edge of something, but projects into the environment (or gives the illusion of doing so) so that a nose, for instance, remains a nose when turned profile, even though there may be no triangles to support it. There might have to be one triangle, but you get the idea. What is this called?

Share this post


Link to post

Im not sure if Doom3 has it, but those are called 3d textures. Carmack talked about them in a plan file.

even if doom3 doesnt have them though, im pretty sure for the most part major details like a nose (to use your example) would eb modled not bump-mapped

Share this post


Link to post

I guess the nose was not a good choice of examples, but I'm sure that something along the line of 3D textures is going to be used in Doom 3, because I remember hearing or reading (wish I could remember which), someone at id describing how the creatures/monsters were created as high-poly models, after which the skins were added and then saved in some fashion (I suppose as 3D textures), to be added on the fly over low-poly in-game models by the graphic card.

I must have heard it, because I remember someone saying that due to "the magic of Carmac all that would be added back in" and a player would see and interact with the 3D textures as if they were high-poly latices. This ring a bell to you?

Id will have it's cake and eat it to: the 3D textures will retain all the detail, including surface bumpmapping, coloring, etc., of the original concept, while the low-poly model can be moved quickly through the game.

Where can I find out more?

Share this post


Link to post

The "Carmack magic" is DOT3 bumpmapping, or normal mapping. But you can't make a nose out of bump maps without a polygonal model underneath. Normal mapping is something like "illusional geometry", unlike displacement mapping.

Share this post


Link to post

Let's forget the nose! I concede the point. Displacement mapping is the phrase I've been looking for, though dot3 mapping sounds even better.

Obviously, any object (including creatures) that relies on a polygonal structure is going to be slow to animate on-the-fly with even the fastest computer systems now available (to the general public), which is why all the teasers we've seen show only a few creatures "on screen" at a time. OK, I know I'm repeating stuff you already know, but hang in with me for a moment...

After Doom 3 is released I plan to make one or more experimental levels, taking advantage of all the cutting-edge tricks I can to create realistic environments, but I intend to populate my level(s) with high-rez sprites instead of 3D models.

First, I'll have to create the creatures with polygonal models in a 3D package such as Strata Pro or 3D Studio Max, and I'll give them all the mapping of one sort or another they can stand, then englobe them with "cameras" and animate them through every concievable movement while being recorded. This will give the engine a host of angles to choose from when the time comes so my creatures will always appear in proper perspective, no matter how they're moving, relative to a player's position and angle of view.

If I can pull it off with the help of a good coder, I should be able to replace the given model-based creatures in the game with sprites, which can be animated in-game in greater quantity, allowing several, maybe dozens of creatures to be present and active at the same time.

After all, there's nothing quite so pretty in this pretty game as a scattered group of Imps all throwing fireballs at you at once!

The only drawback is I don't know if I'll be able to make them able to be influenced by the environment as the polygonal versions are. Ah well...time will tell.

Share this post


Link to post
ob3kenob said:

After Doom 3 is released I plan to make one or more experimental levels, taking advantage of all the cutting-edge tricks I can to create realistic environments, but I intend to populate my level(s) with high-rez sprites instead of 3D models.

Quote Of The Week (tm)

Share this post


Link to post
Linguica said:

Quote Of The Week (tm)

Hell, year. The year's barely started, but I'm confident about this one.

Share this post


Link to post

Exactly.

OK, if I can't make it work, I can't, but I'm going to try.

I'm sure id thought of this at some point and discarded it for whatever reasons seemed good to them, but even if it doesn't work it'll be fun to attempt it. And if it does work, even if it's cheesy, so what? It'll be that much more fun. We'll all have a good laugh and go back to dealing with those unbelievable half-mech monsters made out of polygons.

Share this post


Link to post
ob3kenob said:

Exactly.

OK, if I can't make it work, I can't, but I'm going to try.

I'm sure id thought of this at some point and discarded it for whatever reasons seemed good to them, but even if it doesn't work it'll be fun to attempt it. And if it does work, even if it's cheesy, so what? It'll be that much more fun. We'll all have a good laugh and go back to dealing with those unbelievable half-mech monsters made out of polygons.

As if sprites were any more believable than polygon models...

Share this post


Link to post

By believable, I was referring to the half-animal/half-mech setup of some of the new beasties. Of course, the original title work for Doom could have been the inspiration behind them: it's half mech, too, but far from finding them horrific I find them absurd. When the time comes I'll probably be scared out of my wits, heart pounding, adrenalin pumping, and all that (at least my body will think I'm getting some exercise), but if the demon turns around and shows his rear I might laugh (I do now), and so much for verisimilitude.

That's what made the original so immersive: everything worked in a realistic and believable way. I just don't think something with a meat forend and a watchwork backend could work in the real world, and without that basic feeling, I may not be able to "suspend my disbelief" long enough to forget it's just a game. We'll see.

On the other hand, think of the levels we'll all be able to make!!

Share this post


Link to post

Besides, I love* the original creatures and would like to see them do their stuff in high-res versions with really fluid, complex animation and clever AI. I bet I'm not the only one who feels this way, either.

__________________
* OK, maybe 'love' isn't quite the word I'm looking for, considering I gleefully murder them wholesale at first sight.

Share this post


Link to post

you are mos def not the only one.. i can't WAIT to get started on a map! and seeing the old creatures look oh-so-much sharper... *sigh*
the biggest reason i want a demo is to get a head start on one :D

Share this post


Link to post

Aha! See! I'm not alone...

The new creatures look alien (or hellish?) all right, but we'll see if they have any personality. Or if they do anything humorous.

I don't know if anyone in this thread read my bit in another thread about how much humor there was in the original Doom. Maybe unintentional, maybe not, but there. (Quick recap: nothing but untouched pairs of boots left standing after several soldiers (excuse me, Former Soldiers) have been blown away, and a Demon nipping at a Baron's butt after the Baron hit it with a fireball - that sort of thing.)

A reviewer described the original Doom as a "rollicking" adventure for an evening's fun with friends. Let's hope they can say the same about Doom 3.

Id, take note! We don't want to just be scared out of our socks; we want to have fun, too!!

Share this post


Link to post
ob3kenob said:

First, I'll have to create the creatures with polygonal models in a 3D package such as Strata Pro or 3D Studio Max, and I'll give them all the mapping of one sort or another they can stand, then englobe them with "cameras" and animate them through every concievable movement while being recorded.


3D Studio Max? Isn't that like $4000?

Share this post


Link to post

Close. It's about $3500, basic. I don't own a copy, but I have a friend who does, and I'm getting pretty good at it. I do own the other one, Strata 3D Pro.

However, I have a registered copy of GMAX on my computer that I've also been playing with, and it's front end is very similar to 3D Studio, since it's a stripped-down version of same, designed to create worlds for use with the Quake III engine, rather like Radiant. Radiant is supposed to be faster, but GMAX is easier. You pays yer money an' yer takes yer pick.

For those on a REAL budget, there's Wings 3D. It's free, and it's surprisingly good. There's also the venerable POV, in which you have to code everything by hand, and it's separate front end, Moray, both of which are also free.

Share this post


Link to post

This question has probably been asked and subsequently answered before, but I don't remember where and I can't find it, so I'll seize this opportunity to ask it again:

Why are 3d Studio Max and those other 'pro' modelleing programs so damn expensive? Capitalism? Hard as fuck to code? What?
I mean you could purchase two or three computers for that price!

Share this post


Link to post

They tend to be expensive because the market is small (as computer software markets go), and because the most powerful ones, such as 3D Studio Max, Lightwave, and Maya charge whatever the market will bear because, like Humphrey Bogart, "they can get it."

If as many people wanted to use one of these apps as use Microsoft Office, for instance, I'm sure the price would drop drastically, but we are not talking everyday usages by a long shot, so relatively few people, out of all the millions that buy software, can make use of them or would want to.

Others, such as Strata 3D Pro (strata.com), Caligari trueSpace (caligari.com), Universe (electricimage.com), and Cinema 4D (cinema4d.com) are less expensive, though these days they still run about $1000.00. All of them will do animation.

Of course, there are the completely free ones, Wings 3D (wings3d.com) and POV or POVRAY (Persistance of Vision Raytracer at povray.org). Note: unless you want to code everything in with POVRAY by hand, as some do (including me several years ago), you'll need it's companion front end, Moray, available through the same site as POV. There's also GMAX, which is made for game development (!!) and which is one of Discreet's products. They are the people who make 3D Studio. Like the others mentioned in this paragraph it's free, but capable only of low-polygon output. These are made as modelers only, except for GMAX, which will do some animation. It can also save directly to Quake III using it's Tempest plugin.

All the above apps are different, and each has it's own unique strengths and weaknesses (even the most expensive), but once you get to know one you can pick up any of the others fairly easily. I recommend starting with Strata, since you can download a good version for free, or GMAX, which is also free, especially since it's screen layout is virtually the same as 3D Studio, and graduate to more expensive apps as you make money.

You will want a computer with lot of RAM, and a fast processor won't hurt, either, though the free ones will run on practically any system. Stata will also work across a network (and probably the others in it's class will too), so if you can get several computers hooked together via ethernet you'll cut down drastically on rendering times.

[ You can also get to know a student who's taking a course in one of the high-end apps and ask them to get hold of a copy and give it to you, er, under the table. You can practice with it, but if you try to market any of your work, sooner or later (and probably sooner) the company will come knocking at your door. Depending on how much damage you've done, you may get off by promising never to do it again, or by having to pay for it, to going to jail (but that's very rare even for businesses, and so far as I know, has never happened to an individual).

After all, these companies are in business to make money, so if you offer to buy the product, and do, they'll most likely say, "Slate wiped clean, son, just watch yourself in the future." To which you'll answer, "Yes sir, yes sir!" and go on to fame and glory. And riches, maybe.

I don't condone this as a strategy, but neither do I condemn it, considering the cost of the damn things. Some of the people out there making the big bucks started out with ripped-off software on their HD's. I've done it myself in the dim past, for training purposes, but as soon as I started making money - at anything - I bought the apps in question (in my case Photoshop and QuarkXpress) and have never looked back. ]

Share this post


Link to post

Just like to add blender3d.org to the list. Free, confusing, but surprisingly feature complete. I don't imagine it would be to hard to make a Doom3 export script, since the lighting models are so similar.

As far as rendering the 3d models into animated sprites, you'll lose some very important effects, such as animation blending, and all the IK stuff. While using sprites is potentially more realistic looking, it's quite impractical for the range of animations that are expected today, at todays screen resolutions (120 frames * at least 256 views * 128 * 512 pixels for close ups * 3 bytes per pixel is 8,053,063,680, or 8 gigs for one monsters 4 second animation).

Share this post


Link to post

Wow! My friend never told me that. I thought I'd be saving on memory, whereas now it looks as if I'll be using it up big time.

I suppose that's the reason id decided to go the route they have. But perhaps I could limit the amount of animation to some extent and still get something interesting. After all, the animation of the original sprites still manages to be convincing for much of the time, and look how simple that is. The killer, of course, is the high resolutions necessary. Perhaps a balance could be reached...

Well, I'm still going to look into it. As I said before, if I can't, I can't, but I'm going to try - and I'm going to have fun trying if it kills me.

I've heard of Blender, but it's only a name to me. I'll look into it.
Sounds like you know what you're talking about, so if you have any other suggestions, please pass them on. Thanks for your interest!

Share this post


Link to post

It's always interesting when people take novel approaches to things-- that's how progress is made. But there are always trade offs, and you have to look carefully at how to get the most bang for your buck. Your technique might be quite viable in some extremely special cases, such as games where the POV is limited a small solid angle off the character, or if you're going for a weird special effect (that is the rough transitions between views becomes an effect, and not an undesirable artifact).

The main advantage of sprites is that, given a certain sprite resolution, there's minimal performance difference between a "high" detailed sprite and a "low" detailed sprite. However, with adaptive tesselation and displacement mapping on the horizon, even sprites won't be able to keep up with the resolution and detail level of polygonal models eventually. We're basically talking, ultimately, of screen-pixel accuracy, vs. sprite pixel accuracy.

Some other issues for you to consider:

- You can't do stencil shadowing with sprites (at least that I know of). This completely undermines the point of the Doom3 engine.
- That's 8 gigs for one animation for one monster. Even with 10 monsters, each with 10 animations, this is 800 gigs of data your going to have to shuffle around during the course of a level (not to mention most people don't even have that much drive space...)
- You'll still get edge artifacts as you get close to a monster, even at 512x512.
- You'll have have to add an extra layer of normal map data for the lighting to all your sprites. This doubles the size-- We're up to 1.6 terabytes per level. You'd need the kind of computer that could run weather simulations...
- Most of the cost of rendering in Doom3 is fill rate, not polygon processing-- this means it will probably take the same amount of time to render your sprites as to render the polygon models. That is, no performance improvement for using sprites.

I'm not trying to be discouraging-- just want to save you some work. It's a neat idea, and could work in SOME specially arranged game, but i don't think that game is Doom3...

Share this post


Link to post

as far as I know, you cannot add depth into sprites by the simple way you want to. Most bumpmapping techniques are not adding depth, but calculating lighting via bumpmap image.

others, that does add depth, are adding polygons. So it makes no difference if you do a hi-poly model or do a low-poly model and add more polys by applying such techniques.

Share this post


Link to post

Good grief!

I suppose I could design a game that's made to run exclusively on weather simulation computers...

You've given me a lot to think about. Maybe I'll do something surrealistic with the sprites, but the idea of using them so as to be able to get more monsters "on screen" at the same time looks like it's a fizzle. Rats.

I feel like the scientists at NASA who were told that sending a rocket into orbit by blowing up an atom bomb under it wouldn't work. Glum city. Looks like I may have to eat my words (above). Hey, it just so happens I like eating words! (Munch) Yuch. (Crunch)

It's tough having to deal with reality. Anyone in the market for a balloon with a hole in it? Cheap?

Share this post


Link to post

It's still a neat idea. For one thing, if you take away the shadow volume calculations that go with polgon meshes, you save a TON on CPU proccessing, which could allow for more sprites as long as they were in the distance somewhere (that is, the majority of monsters in view took up little screen space). I just think that you're much better off designing a special game engine around this type of rendering.

There's a special type of algorithm called "imposters", which is pretty similar to what you've described. You basically render your model into sprites for all objects that are greater than a certain distance away from the viewer. This makes them very fast to render (since for objects far away, the ratio of polygon data to render pixel data is almost 1, which is not good for a triangle rasterizer). Given some thought, you could really create a neat sort of massive army effect if you worked things out carefully (ie, batching polygons effectively, used point sprites, etc...). You could litterally have hundreds of thousands of monsters in view at once, at reasonable framerates, if you really managed things cleverly...

Anyway, sorry for the long rambling posts...

Share this post


Link to post

What's wrong with long, rambling posts? I did one myself once.

Thanks for the info! It sounds like a great idea. You speak of that of which I wot not. (Slaps head.) I mean, you're talking about things I don't know anything about (that's better), so if you could guide me to some place or book where I can explore the subject, I'll be very grateful.

Have an extended time of awareness and accumulate great wealth. (Slaps head.) I mean, live long and prosper.

Share this post


Link to post
EsH said:

There's a special type of algorithm called "imposters", which is pretty similar to what you've described. You basically render your model into sprites for all objects that are greater than a certain distance away from the viewer.


Jdoom uses this to good effect apparently.

Share this post


Link to post

Question, then:

If the sprites have to be limited to "a certain distance" how is that distance determined, and how do you control the sprites from coming to close? Or do the full polygon models take their place automatically when a certian boundary is crossed?

I never wanted hundreds of sprites visible, though I'm glad to hear that's possible. Twenty or so at a time is what I had in mind. Naturally, a player would be killing off the nearer monsters, but he would be moving around as well, perhaps approaching the sprites that have to remain at that certain distance. What happens then? The sprites retreat?

Share this post


Link to post

Hmm.. I remember seeing some sort of demonstration engine or something like that. The was screenshot where there was a massive amount of DOOM hellspawns and player in the middle. There must have been at least 200-500 sprites on screen.

But.. I guess I can try to write little program demonstrating how many sprites you can use so the framerate wouldn't drop below 35. It wouldn't be in C, and therefore the result will be little lower, but still.. It would be a nice tool to benchmark too ;)

Share this post


Link to post
ob3kenob said:

I never wanted hundreds of sprites visible, though I'm glad to hear that's possible. Twenty or so at a time is what I had in mind. Naturally, a player would be killing off the nearer monsters, but he would be moving around as well, perhaps approaching the sprites that have to remain at that certain distance. What happens then? The sprites retreat?


You have to separate the sprites and the polygons from the actual monster itself. The first two are just ways of representing the monster - when your viewpoint is close enough to the monster that the ratio of polygons to pixels would no longer be ridiculous, the sprite would be replaced by the model once again.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×