April fooling in 2.49

NSFW CW

macro big ass

2025-04-23

April first is a nice day, because you get an excuse to make something stupid. The stupid thing I did this year was make a render in Blender 2.49 with a big butt godzilla:

With the butt out of the way (or in the way), it's time to cover the backstory of how I arrived at this point.

In the latter part of last year I did some renders in old versions of Blender (Puno!), so I wanted to do something like it for this april fools, planning the end product to be a screenshot of the full blender window plus the characteristic blue taskbar and titlebar of Windows XP's Luna theme, complete with MS Paint's tasty JPEG compression. I chose the 2002 PC (not the late 90s PC) as the host machine for the shitpost, and next up was deciding what to actually make.

The previous two years' april fools were both set in gm_bigcity, taking place within gmod itself. To keep the gm_bigcity streak going, I chose it as the scene for this years fool. Now I was just missing the subject, and since butts have been a focus in my art lately (with the notorious "plump ass tea") it was only natural that i'd grab one of the Godzilla meshes i'd converted into playermodels for gmod many years ago, and then cake it up something fierce. On the 2002 PC. In Blender 2.49. Documented by crusty jpegged screenshots.

Time traveling bigcity and the big G

Like the previous post regarding timetravel, I used the .OBJ shortcut to travel the entire scene of bigcity to 2.49, but I needed to make some preparations beforehand; The target system had only 512 megs of memory, and gm_bigcity's textures require 318M in Blender, since blender doesn't have any texture compression (they're working on adding it to blender currently, but it certainly won't get it in 2.49). Downscaling all textures of gm_bigcity a few times reduced the texture memory usage to 18M, that's plenty of room for activities.

Next up was removing the alpha channel, as importing the .OBJ in 2.49 automatically turns on Z transparency for all the materials. This is a problem because the alpha channel is often used in source engine materials to represent specular or the like, so all of the windows on the buildings turned invisible. I didn't want to bother getting into the 2.49 blender python API, so I used python to strip the alpha channel out of all the image files with the Pillow library.

Godzilla was a lot simpler to time travel. First, I located the .mdl file for the gmod ragdoll that I used all those years ago, and imported it in modern blender with SourceIO. I fixed up the bones to be connected, symmetrically named and whatnot, merged nonmanifold edges in the mesh, and exported a .fbx to load into 2.79. Saving without compression and with the legacy mesh format, the file was openable in 2.49 right away, further simplifying the time travel of character models

Now that the scene and characters were in 2.49 format, it was time to snearkernet them over to the 2002 PC.

making the butt of big bigger bigcity

Godzilla had made their way onto the 2002 PC, and it was time to make them drink the tea. I did it in much the same way I'd do it in current blender; use the sculpt mode to inflate, nudge and expand the ass. (this really expands my ass)

With godzilla properly assed, they were ready to be plopped into the city. On a more capable machine I'd append them directly to the scene, but to keep posing performance lean I opted to keep godzilla in their own file, and link them into the city as a group instance (also known in oldschool blender language as dupligroups).

Manipulating objects when all of the buildings are visible is quite slow, so I placed a lot of the buildings of the city on their own layer that I could hide when i needed to position the big G.

what you see is what you wish you got

With the G somewhat positioned, I could start doing lighting, and lighting is a bit of a different beast without global illumination! You can slap a sun lamp into the scene, but it will only give you direct light, and everything not in direct view of the sun will fall into the deep dark realm. This is why blender used to have Hemi lamps; the ones that looked like palm trees in the viewport. They simulated a hemisphere of light, most often to approximate light coming from the sky.

When working on lighting a scene, 2.49 gives you three options for viewing what the result is gonna be: fire up a render (like above), use a render preview or rely on the shaded viewport draw type. The render preview is the precursor to what is today the rendered mode in the viewport, except it appeared as a floating panel in the viewport that you could move and resize, like a fatter version of the render border in later versions.

With the shaded draw mode you can get Some Form of WYSIWYG, although when they say shaded what they actually mean is Gouraud shaded. This wouldn't be that bad if it also included the textures properly, but instead what we get is the shading and textures evaluated per vertex, which is terrible for textures like godzilla's coarse scales.

this really blooms

since gm_bigcity is a source engine map, I had to include the fashionably eye gouging bloom and "HDR" that was popular in games at the time. 2.49 is quite a feature complete version of blender compared to 1.80, so I just made bloom the same way as today with the glare node in the compositor. Later on I also used the depth pass to fake a depth of field effect that blurs the background, even though this is not period correct to how source screenshots look.

Now that the scene was lit and I had found a suitable angle and general pose, I could start detailing the scene, with one of the first details being the particle system for the broken building. I tried halo particles at first which seemed quite promising, but eventually I ran into the fact that halo particles just won't work properly with render layers or ray shadows. I forgot the exact details but I went with actual plane billboard particles in the end, with a procedural noise texture.

I refined the pose a bit more and made godzilla hold a silo full of plump ass tea, because I did not find a tea cup large enough. I made sure to include a jpeg of the plump ass tea box art in case this would be needed in the scene.

when the cam is hyper

JPEG slideshows were common on early youtube, but it makes sense to record a video if you want to share something on a video site. I didn't really intend to do that but when I was already this deep in the early 2000s time travel, I went the full mile and found a copy of Hypercam 2 (unregistered). I never used hypercam myself (i was a demo version of fraps type of kid) but it was better than the rumors would have you expect. But the default sound bit depth of 8 was hilariously bad.

When recording smaller sections of the screen, it was actually quite tolerable, but a fullscreen capture definitely made the blender interface half as performant. Here's a webp of one of the captures i did of the partial screen, for double the compression artifact enjoyment

now you can bake JPEG at home, the MS Paint way

I documented the process by taking screenshots and saving them via MS Paint, making sure to choose the superior JPEG file format. Paint on XP has this characteristic level of crust that I enjoy, probably out of nostalgia. I remember being a kid and drawing with the color red, and it would just melt whenever I hit save. For some of the screenshots I saved both a PNG and a JPEG version, and when I got them on my main PC I studied the level of crust and experimented with settings to achieve the same crustness. From my testing it seems that XP's Paint saves JPEGs with quality 75 and 4:2:0 chroma subsampling

the Half-Life 2 civilians that went missing

It wouldn't be an april fool without including something very out of the standard type of things I do, and to be honest a big butt kaiju in a city is very on brand for me, the only nonstandards here are really just the time period and low poly model. That's why I planned on throwing in some half life 2 civilian models here and there. Humans rarely if ever appear in my works, and it's mainly because of the dissonance between very stylized furry/scaly characters and bob everyman, the generic human. I mean heck, that's why I made the generifur, who can take on the role of generic people.

I had prepared two static meshes of female_01 and male_07 posed as if they were "sleeping" on the ground, and wanted to instance them on the ground and maybe a few on godzilla's foot. For the ground people I tried a particle system which did work, but rotation of the instances was an issue, I could not seem to get the wanted randomness around the global Z axis. For the rest of the people I manually placed group instances where I wanted them (they were linked in from the other file), but the instanced people just Would Not Show Up in renders, no matter what I tried. I eventually gave up and removed all the people, there was just no point if I could not put people on kaiju foot.

That's it, pretty much

thank you for reading my post about how I put big butt godzilla in gm_bigcity, I hope you learned a thing or two, or at least enjoyed looking at all the pictures. Many of my posts devolve into picture galleries with text explainers in between, probably because I'm used to making tutorials for various blender topics.