site banner

Friday Fun Thread for July 28, 2023

Be advised: this thread is not for serious in-depth discussion of weighty topics (we have a link for that), this thread is not for anything Culture War related. This thread is for Fun. You got jokes? Share 'em. You got silly questions? Ask 'em.

2
Jump in the discussion.

No email address required.

I've been playing a lot of modded Skyrim recently and finding lots of instances of objects placed incorrectly causing holes or hidden surfaces to be visible. For those with 3d programming experience, does writing a program to detect and report these seem like a reasonable project as an excuse to learn how to work with 3d graphics for an experienced programmer who is completely unfamiliar with 3d graphics or would this be biting off a bit too much?

Since no-one has commented on the technical question, @ZorbaTHut do you have thoughts here? Is this a reasonable first step into 3d graphics programming?

That's going to be painful as hell and not actually very helpful for learning, I'm sorry to say :V

Algorithmic calculations on 3d meshes are surprisingly gnarly, especially if you're trying to answer binary questions like "is there a hole here". You're kinda trying to build a massive constructive-solid-geometry system, and those have all kinds of nasty edge cases and special cases. In addition, you're going to find that there's a lot of meshes that line up perfectly, which sounds like it's easy to handle, but in reality just exposes all the flaws of floating-point accuracy problems.

If you want to do 3d graphics . . .

. . . well, first, what part of 3d graphics? The rendering side of things, the tool-creation side of things, or the actual art creation? If you want to do rendering, are you more interested in getting your hands dirty with the absolute low-level stuff, or would you rather do VFX and new-special-effect development?

Are you hoping for a game industry job, some other form of 3d rendering employment, or is this just for fun? If it's just for fun, what kind of things do you want to make?

I could write some giant branching conditional flowchart for all of this but it would take forever, so I'll wait for answers :V

This is entirely for fun, as I'm pretty happy with my current job in a very different area of programming. I'm mostly interested in being competent enough to write code to scratch itches like this one for the games I play, so I guess I'd say the tool-creation side of things.

EDIT: Particularly tools for automating detection of "problems" or other kinds of batched analysis. I'll also note that my current job regularly involves numerical analysis in Fortran, so I'm not unfamiliar with floating-point accuracy issues.

This is definitely not a conventional first step into 3d graphics programming, then :)

But what you're basically looking at is to take all the objects in the world in an area and doing CSG operations on it. From there, you'd be looking at some form of leak detection or verification that it's a single closed mesh - you'll also want to cap off the sky and make geometry walls around the area you're testing, of course.

How you expose it to the user is a major part of tool development, but IMO the algorithm here is going to be the hard part, so to start with, just hack up something that works and don't worry about making it pretty. Later, ideally you'd want some kind of visualization that can point out the issue (the fact that this is in a game and intended for modding means that you could in theory plop down a 3d waypoint and just direct the user there, but for gamedev people would want an external tool built into the editor; I don't offhand know how that works with Skyrim, is there an editor? If possible, integrate with it!)

You are definitely going to have a bunch of weird issues, but the good news is you also have a huge existing test suite - specifically, "Skyrim" - so if you can automate running this over the entire world then that'll do a lot to hammer out the issues.