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

HD sprites from Doom 3

Recommended Posts

Hi! Sorry for bad English.

This work is inspired by Doom sprites HD (8x) http://forum.zdoom.org/viewtopic.php?f=19&t=30879 and AEons of Death http://www.moddb.com/mods/aeons-of-death/images

I really like idea of HD sprites, but my drawing skills are not very good, so i thought “Why not to just render hi-res sprites from Doom3 models?". I've started this project in early 2014, then postponed it, and now reviving with a fresh mind.

After all experiments I have partially automated workflow to make such sprites. Here's some GZDoom screenshots featuring Shotgun Guy
http://s11.postimg.org/6kpkzcr37/Screenshot_Doom_20140731_213354.png
http://s11.postimg.org/fh0d3ahpf/Screenshot_Doom_20140731_213416.png
http://s11.postimg.org/eoxp43dib/Screenshot_Doom_20140731_213437_01.png
http://s11.postimg.org/82b1awvtv/Screenshot_Doom_20140731_213512.png
http://s11.postimg.org/nqc8hpbfn/Screenshot_Doom_20140731_213513.png
http://s11.postimg.org/pjjqjrm03/Screenshot_Doom_20140731_213514.png
http://s11.postimg.org/jsoysaomb/Screenshot_Doom_20140731_213528.png

I had to squeeze him though, because original Doom sprites are quite chubby. So... well, I'm not sure that this sprites have big artistic value, but it was interesting for me to work them out. I'm planning to post more screenshots later.

Main program is Blender http://www.blender.org/ . Here's working screen http://s30.postimg.org/4esamgt9d/Screenshot_07312014_07_07_05_PM.png
Also using DarkRadiant http://darkradiant.sourceforge.net/ for previewing models,
GIMP http://www.gimp.org/ for texture tweaks
ImageMagick http://www.imagemagick.org/ for batch images processing and
Slade http://slade.mancubus.net/ for sprites placement.

Update: Here's some Lost Souls
http://s15.postimg.org/sgmnxwh1n/Screenshot_Doom_20140802_145012_01.png
http://s15.postimg.org/3xkmglcnf/Screenshot_Doom_20140802_145014.png
http://s15.postimg.org/dje6ww3t7/Screenshot_Doom_20140802_153345.png
http://s15.postimg.org/o8rvp5fm3/Screenshot_Doom_20140802_153418.png

Also I'm looking for program to preview Doom 1-2 monsters animations, please help.

Share this post


Link to post

I like the shotgun guy. It's got that slightly cheesy 90s vibe of making sprites out of photos.

Share this post


Link to post

The only reason why I disagree with this it's because Doom 3's monsters look slightly different from Doom 1/2, otherwise this looks cool because Doom 3 has some nice monster graphics :)

Share this post


Link to post

You know what I'd love to see, though? Take those Doom 3 HD sprites, and down-res them into the pixelated Doom 1/2 aesthetic.

Share this post


Link to post

Question: Since you partially automated the work, can you do them with 16 rotations (GZDoom supports it) and 1 frame per 2 tics (17.5 FPS), or at least 1 frame per 3 tics? Otherwise those HD sprites would look really weird with low-FPS animations.

Share this post


Link to post

Sinael, I already did 22.5° rotation step (according to http://zdoom.org/wiki/sprite#Angles ), an it works.

As for increasing frame rate, md5 can achieve this, but I do not know how to change FPS in Doom 1-2 (edit http://zdoom.org/wiki/DECORATE files?). Another limitation - the size of files, 8x sprites weigh a lot.

It would be interesting to halve sprites size but double the FPS. I can post example gameplay video with smooth sprite movement then, I think it would be cool. Need to dig some information before that though. A clue would be appreciated.

joe-ilya, (привет!) I'm afraid they will remain unchanged. Also Pain elemental have no suitable replacements (maybe mechanical LostSoul). Spiders? Maybe Sentry Bot and Vagary+Chaingun for Mastermind. It is not all clear with the bestiary.

Share this post


Link to post

I was just thinking about such a concept the other day, glad to see someone making one. Interested to see how this turns out!

Share this post


Link to post

ssv_170379 said:
As for increasing frame rate, md5 can achieve this, but I do not know how to change FPS in Doom 1-2 (edit http://zdoom.org/wiki/DECORATE files?). Another limitation - the size of files, 8x sprites weigh a lot.
[/B]


(G)ZDoom can support up to 35FPS (Doom's native), you'll just have to replace "show frame X for 5 tics" with "Show frames A,B,C,D,E - 1 tic each" in monsters DECORATE definition. It is extremely easy to do. But 35 FPS would be an overkill since some machines may not be able to process a fast change of large sprites. 17.5 fps (1 frame for 2 tics) would look best, while not being too "choppy".

You can further optimise the frames by reducing ammount of colors to 256. A free tool named Irfan View can do it pretty well - you have to use "Floyd-Sternberg" disering and "Best Color quality" options. It can do batches, so optimising a whole bunch of frames would be just several clics. Here are sprite of a Revenant you posted earlier, and its optimised version:



The right one has its colors reduced, and weights 75kb with maximum PNG compression.

Recompress PNG's with maximum (level 9) compression to save up on space, but the thing is, (G)ZDoom decompresses all of its non-native resources into a raw format in video memory, which may cause it to crash with lots of ultra-HD sprites on cards with less than 1GB of VRAM. You may want to cut in half the resolution of your sprites, which will reduce the memory strain 4 times, allowing you to put more frames in animations.

My suggestion: do Ultra-hd with 17.5 FPS, then make several versions from them with reduced resolution/frames/rotations in several combinations, which won't be hard to compile from such a source, and would allow everyone to have maximum of what their PC can handle.

Also since you're doing this with idTech4 models, I suggest looking at other games on same engine - Quake 4 and Prey for the model replacements you need.

Also: Привет Русским =D

Share this post


Link to post

Sinael, Thank for the info. Indeed, paletted version gives near 3x compression with only insignificant quality loss. My favorite image viewer is XnViewMP, which is also packed with a bunch of batch filters.

It is easily possible to do versions with different resolutions and enabled/disabled additional angles, but not the framerate. Changing animation FPS is quite time-consuming, because requires to manually redefine all keyframes.

Here's video of "4x smooth" version of Shotgun Guy (doubled framerate on all animations except death). Frames lasts now from 2 to 5 ticks.
https://vimeo.com/102823215

I tend to continue work in 4x style (maybe 6x in indexed colors).

Share this post


Link to post

Some suggestions:

1. Try one or both of the classic Doom skin packs from Doom 3 Files (perhaps hybridize them both in Photoshop or something if you feel like mixing the details of both packs into single skins).

2. Don't forget to further optimize the PNGs in Slade 3 after you process them in Irfanview. Slade has a function to batch process PNG files using three different programs. You have to find them yourself, but are easy to find in a quick Google search (I kinda wish they came with the standard Slade distribution, but I can't do anything about that).

3. If your rendering program can do this and you're not already doing so, see if you can bake the normal/bump maps into the model as a hi-poly model, as opposed to chunky low-poly as it appears in Doom 3 itself. It would look very nice for prerendering purposes.

4. If you're not already, try using the smooth hi-poly heads model pack.

5. If you wish to reduce the resolution for the sake of file size/weight, I recommend lowering horizontal resolution more than vertical resolution. I've found that I'm far more sensitive to vertical detail than horizontal, and I'd imagine that other human beings might be the same way.

6. Keep in mind the fact that classic Doom uses 5:6 ratio pixels, not square.


If you wish to take my suggestions yet are unable to find any of these files, tell me so and I will locate them myself.

Share this post


Link to post

ssv_170379

I was definitely not talking about palletization (bringing sprites to Doom's palette), but adaptive color reduction. XnView has such function too, but it's algorithms are inferior to IrfanView in that regard - I made quite some tests and comparisons to be sure.

Also I do not understand the difficulty with a framerate. Maybe that is because I don't know what method exactly are you using to get your sprites.

I was thinking about modelripping myself, and best solution I have come up with derives from my work with weapon ripping (you can see the results and read the description of my method here: http://forum.zdoom.org/viewtopic.php?f=37&t=38067)

I thought about "filming" an animated model on a clear background with a loseless codec at 35 fps, then extracting the frames that comprise animation loop with VirtualDubMod (extremely easy to do), then setting the backgrund color as transparent, and repeating the process for all rotations I need. Cutting down frames would be a trivial tasks for such source.

From what I can guess you snap the shots of a keyframe from all the required angles before moving onto the next, and since the software can not broduce interpolated frames, you are bound to the keyframes that are already defined by the animators, or make ones yourself.

I'd like to know an exact process you are using - maybe we will be able to improve/simplify it together.

Sodaholic
Those PNG optimisation tools affect only how much the frame occupies in the WAD, while its size when it is pushed into VRAM remains unaffected, unless techniques reucing its quality are used. Its the VRAM consumption we should worry about, not WAD size.

Also aspect ratio correction can be countered with TEXTURES lump definitions, which would make sprites have square pixels.

Share this post


Link to post

Sodaholic
1.
http://doom3.filefront.com/file/Classic_Colors_Skin_Pack;33484
http://doom3.filefront.com/file/Skin_Pack_Addon_for_Classic_DOOM;77389
These? I'll look at them. If not, give me links, I'm interested.
2. Investigated and found
http://www.advsys.net/ken/util/pngout.htm
http://pmt.sourceforge.net/pngcrush/
http://www.dotnetperls.com/deflopt
my png's is already pinched, so i won't install any of these.
3, 4. I've smoothed models in 3d editor myself. I using all provided maps (diffuse, specular, normal, bump) for shading.
5. Until now, I've done just that. Our grunt was actually 8x height and 5.3x width. But as I switch to 4x size, I'll tend to use square pixels.
6. I'll remember that, may come in handy.

Sinael
- I mean paletted in general, not referring doom palette.
- Difficulties with framerate is that I (my English is far not sufficient)... короче, например у него ходьба 28 кадров. Если мне надо выбрать стандартные 4 кадра, то я беру 6, 13, 21 и 26 кадры, а если удвоить фреймрейт, то 1, 4, 7, 10, 13, 16, 19, 22. То есть, они изначально расположены неравномерно, и при добавлении новых, часть старых выпадает. Оценка всего этого дела проводится чисто визуально, насколько он там каждой ногой двигает, отсюда вся эта муторная петрушка. Соответственно, при размещении в wad у всех новых кадров надо заново выставлять "землю", и переписывать decorate'ы под новые имена спрайтов и тайминги. При простом изменении размеров спрайтов типа 8x -> 4x или удалении дополнительных углов, всё это переделывать не нужно.
- About exact process. In addition to previous paragraph. When i run script in Blender, it gives me all frames at once, correctly named (maybe configured to output only needed phases). Usually i render 2 sets of sprites, hi-res-colored and lo-res-silhouettes (you can see one in picture, attached to OP). Silhouettes merged to wad file where I set zero-point for them. Colored packed into .zip and initialized through text file with many commands like "remap BOS2A1 BOS2A1". I have not figured out how to pack hi-res into wad. When I put them directly, I've gotten huge sprites.
- If it is all eventually about raw RGBA in VRAM, then I'll not use indexed color mode. Also alpha channel is awful in only 1 bpp (limitation of indexed formats).
- lump definitions... what are them? seems I need to read about them too.

Share this post


Link to post

http://www.ex.ua/542391258437

ZombieMan, ShotgunGuy and Imp are included. See README.txt

Sodaholic, Thanks for advises, I've corrected non-square pixels and used Classic-colored Imp skin from http://www.moddb.com/games/doom-iii/addons/skin-pack-add-on-for-classic-doom-v35 (author Santiago Rocha kindly granted me to use his textures, thanks).

P.S.: Mirror link http://www.filedropper.com/4xhdsmooth01a

Share this post


Link to post

ssv_170379
The link you have posted (ex.ua one) is banned by my provider for "illigal activities". Can you reupload somewhere else, like Mediafire or Dropbox?

Share this post


Link to post

I might be a little strange but I actually prefer the 4x sprites. The more pixelated look sits a little better in the pixelly world of DoomGuy. The 8x sprites almost look like they're 'sitting on top' of the rendered world around them if that makes sense...Just my thoughts. :)

Share this post


Link to post

Question: why do you rip only half of the directions? The rotations are mirrored, which is not a god idea for non-symmetric sprites like theese - it is very jarring when you run around before bunch of soldiers, and they rapidly switch between being right/left handed. (Also Pinkie animation looks broken when you circlestrafe around him because of that)

Also death animations are... Lackluster.

Share this post


Link to post

If I may suggest something: try rotoscoping your sprite rips. You'd have to redraw every single image, but the reduced colors and broad strokes should really help with maintaining a style, and it won't look like garbled noise when scaled down.

Share this post


Link to post

That's definitely interesting.

But I would suggest you taking these screenshots on OpenGL mode, with HD Textures. (Or maybe you could even extract Doom 3 textures, and find a way to edit them to replace Doom 2 textures?)

It currently is quite awkward to see these 500x200 sprites standing near 128x64 textures.

Share this post


Link to post

Good news, I managed how to fully automatize one of most troublesome tasks - sprites positioning. Imagemagick http://www.imagemagick.org/ is really wonderful program, able to generate ready-to-use sprite definitions automatically, with sizes, offsets and scale for each sprite. Hurray!!!

Sinael, it is easily possible to rip the full turn. For now I just did it like in original Doom 1-2. The only drawback is increased memory requirements... as usual. 16 sprites in full turn vs 9 sprites using mirroring. Memory load is 175% comparable to mirrored.

Pinky's animation also suffers from mirroring because original Doom 3 animations are not symmetrical, which gives them more life but makes them less suitable to mirror.

Death animations. Truth is that Doom 3 does not have death animations, they are ragdolled. So I just took some frame from pain animation, and animate it by rotating 90 degree (fall to the floor) and straighten arms (previously were holding weapon). What is possible to do is to make "dead" textures with wounds and sprinkle some blood particles over sequence. Also maybe to toss monsters into air a little higher. But these tweaks planned after finishing other monsters.

Bucket, rotoscoping effect... it is possible to batch convert all the sprites with some advanced filters, maybe http://gmic.sourceforge.net/gimp.shtml

Sergeant_Mark_IV I consider not to use any other mods/textures for screenshots because they may confuse people, making them think that HD world-textures are included in this mod.

About ripping Doom 3 textures, it is a good idea, but I only a single person, which just do not have spare time for this right now. Beside monsters I planning to make sprites for some pick-up items like weapons and ammo/armor, but not further.

==========

Conclusion:
I'll do a full-turn release, so we can estimate is it worth it. But seems I'll have to downscale sprites to 3HD then.

to do: make todo section in README.TXT about death animations and planned additional sprites.

About playing with rotoscope filters settings. I'll try to make such release too, but not for sure right now. If someone willing to help with this part (to look for the right combination of filters, which produces a good result), it would be very good.

Share this post


Link to post

ssv_170379
Great! Can you elaborate on the exact process of sprite-positioning automation? I would really need that for my weapon rips.

Also since you are not doing these sprites in full fps, I think 4x HD and all rotations would be quite manageable. In the recent SVN's of (G)ZDoom the memory leaks and crashes due to large sprite sizes were fixed - i.e. there should not be any problems with reasonably HD sprites now. I've tested it, and the Railgunners mod made out of my sprites doesen't crash anymore, as it did before - and that one has 120mb worth of sprites.

tl;dr - please don't downscale the sprites - they are good as they are now.

Also you can pack all the stuff you usually put in a .wad into a ZIP along with all the sprites, and then rename .zip into a .pk3 - there won't be a need for 2 files.

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
×