A script to build custom shaped 3d floors

Any utility that assists in the creation of mods, assets, etc, go here. For example: Ultimate Doom Builder 2, Slade, WadSmoosh, etc.
Forum rules
The Projects forums are ONLY for YOUR PROJECTS! If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.

Got a cool project idea but nothing else? Put it in the project ideas thread instead!

Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.

Please read the full rules for more details.

Re: A script to build custom shaped 3d floors

Postby ramon.dexter » Mon Jan 17, 2022 12:01 pm

Ok, just one question: How do I do it? I downloaded the maps, but it just don't tell anything on how to duild this, or how to script it...
User avatar
ramon.dexter
rudebwoy
 
Joined: 20 Oct 2015
Location: Kozolupy, Bohemia
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: nVidia with Vulkan support

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Mon Jan 17, 2022 12:11 pm

There's a text file in there, 3dFloors_Extrude.txt

Sorry, I should have mentioned that
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby Enjay » Mon Jan 17, 2022 12:31 pm

And with the tiniest bit of post-generation editing...



Pretty easy to use so far.

Honestly, I just made my source map, called it input.wad, dumped it into the 3dFE folder, and used right-click "run in powershell" on 3dfloors_extrude.ps1 to generate the map using default settings (i.e. I didn't actually bother configuring anything for this first attempt).

Afterwards, all I did was set the floors to be fully opaque and made them thinner (front to back) so that the letters could be read more easily. Literally 30 seconds of editing.

[edit]Heh:

[/edit]

[edit2]
Minor convenience suggestion - autoflag control sector lines as not shown on map and control sector floors to not show on the textured automap. Not that big a deal because it doesn't take that long to edit these in after map generation but it would be nice for it to happen automatically (perhaps via a cfg setting).

Not sure why the floors default to translucent either. Again, that strikes me as something that would make sense as a CFG option.
[/edit2]

[edit3]
I didn't actually expect this to work at all, so the fact that I got something that is recognisably MAP01in 3D floors is pretty cool.

[/edit3]
User avatar
Enjay
Everyone is a moon, and has a dark side which he never shows to anybody. Twain
 
 
 
Joined: 15 Jul 2003
Location: Scotland

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Mon Jan 17, 2022 2:58 pm

Enjay wrote:Honestly, I just made my source map, called it input.wad, dumped it into the 3dFE folder, and used right-click "run in powershell" on 3dfloors_extrude.ps1 to generate the map using default settings (i.e. I didn't actually bother configuring anything for this first attempt).

Yeah, there isn't really much to configure. The script runs fine right out of the box. The main reason for the config file was for the script to keep track of it's sector tags and output files. The rest I just threw in for convince.

Enjay wrote:Minor convenience suggestion - autoflag control sector lines as not shown on map and control sector floors to not show on the textured automap. Not that big a deal because it doesn't take that long to edit these in after map generation but it would be nice for it to happen automatically (perhaps via a cfg setting).

Good call, that will be easy enough to add

Enjay wrote:Not sure why the floors default to translucent either. Again, that strikes me as something that would make sense as a CFG option.

The 3d floors get their translucency from the source sector lightlevel. If you want them opaque, set it to 255 or higher. UDB calls it brightness on the sector properties panel.
I could put in a config option to turn that feature off entirely.

Enjay wrote:I didn't actually expect this to work at all, so the fact that I got something that is recognisably MAP01in 3D floors is pretty cool.

That will work better when I get the script to recognize 2-sided walls. But it'll never give you a real side-view of a level, because of the polar difference between sectors and floors. Sectors are negative space to move around in, while 3d floors are positive space to block movement.
I'm thinking of writing another script that will do the opposite of this one. Where ever it sees a sector, it will leave it as open space, and will only build a 3d floor where it sees void between 2 sectors. That would let you play a map sideways. A neat "wow factor" but I don't know how useful it would be to a level designer.
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby Enjay » Mon Jan 17, 2022 3:15 pm

Sir Robin wrote:Good call, that will be easy enough to add

Cool, thanks. Like I said, it's really not hard to do manually (especially as the util lines the control sectors and control lines up in a way that makes them easy to select) but it will be a nice thing to have.

Sir Robin wrote:I could put in a config option to turn that feature off entirely.

Honestly, I don't think there is any need. Now that I know the light level sets it (I did wonder - given that all mine came out at 192 - i.e. the Doombuilder default light level - (and, yes, I know it's in the docs too - that's what I get for skim-reading them)) that actually gives a lot of control via how the mapper sets up the initial input.wad. Doing it it via the config file would be less easy and unnecessary duplication of a feature IMO.

Enjay wrote:A neat "wow factor" but I don't know how useful it would be to a level designer.

Almost no use whatsoever I imagine. ;) I only did it to see if anything would come out at all. It is likely to have very little, if any, real world use.

Thanks for this tool. It is very neat.
User avatar
Enjay
Everyone is a moon, and has a dark side which he never shows to anybody. Twain
 
 
 
Joined: 15 Jul 2003
Location: Scotland

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Mon Jan 17, 2022 4:28 pm

Enjay wrote:Cool, thanks. Like I said, it's really not hard to do manually (especially as the util lines the control sectors and control lines up in a way that makes them easy to select) but it will be a nice thing to have.

Already done. The bulk of a project like this is coming up with the algorithm and the 3d math to do the conversion. Setting a property to a default value is super-easy by comparison. Literally 1 line of code. Done.

And lining up all the controls sectors like that into nice easy-to-understand blocks that are easy to edit - yeah, totally did that on purpose. You're welcome!

Enjay wrote:Honestly, I don't think there is any need. Now that I know the light level sets it (I did wonder - given that all mine came out at 192 - i.e. the Doombuilder default light level - (and, yes, I know it's in the docs too - that's what I get for skim-reading them)) that actually gives a lot of control via how the mapper sets up the initial input.wad. Doing it it via the config file would be less easy and unnecessary duplication of a feature IMO.

I changed it to use the alphafloor property - in UDB that's called the floor portal alpha. The difference is since that one defaults to 1.0, nobody forgets to set it by mistake, like the lightlevel. So I think that's more convenient and sensical.

Enjay wrote:Almost no use whatsoever I imagine. ;) I only did it to see if anything would come out at all. It is likely to have very little, if any, real world use.

I can think that if someone was doing a platformer type game and wanted a tall area with lots of platforms, imagine like one of the vertical shaft areas in a Metrovania game, then that script might be useful to them. but really unless there are a ton of platforms, I can't see it being any faster or easier that just building them by hand.

I'll probably do it eventually anyway, just for the "oh wow I did it" factor. :-)

And I threw it a rudimentary fix for the 2-sided linedefs. As I said in the doc it breaks the texturing, but gives you the proper shapes:
Spoiler:
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Mon Jan 17, 2022 6:43 pm

...and the texturing is fixed

Spoiler:


So the script now works with 2-sided lines and textures them appropriately. I was holding off on that, I really thought those features would be harder to add. Now I'm kinda proud of it.

I'm gonna clean up a few things and post a new package here in a bit
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby SanyaWaffles » Mon Jan 17, 2022 7:27 pm

This is really impressive work!
User avatar
SanyaWaffles
Certified Heretic and Grill Champion
 
Joined: 25 Apr 2013
Location: Disappointment Island
Discord: SanyaWaffles#0950
Twitch ID: sanyawaffles
Operating System: Windows 11
OS Test Version: No (Using Stable Public Version)
Graphics Processor: nVidia with Vulkan support

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Tue Jan 18, 2022 12:16 am

SanyaWaffles wrote:This is really impressive work!

Thanks!
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Tue Jan 18, 2022 12:16 am

I'm dropping a new release. I'll put the link in the first post.
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Tue Jan 18, 2022 8:07 am

Now, for practical applications, you can use this script to create stairs:
Spoiler:

But basic rectangular stairs aren't difficult to do. You could probably create those by hand almost as fast as you could with my script.

What my script will be useful for is for creating non-rectangular stairs with more interesting shapes:
Spoiler:

Look at the bevels at the tops and the points at the bottom. Yeah you could still do that by hand, but it's kind of a pain. This script does most of that work for you.

Get creative and make things like stepping stones:
Spoiler:
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby Enjay » Tue Jan 18, 2022 8:29 am

I just tried the new version - big improvements over the initial release. It seems like it is now in a state where very little, if anything (I didn't spot anything that turned out in an unexpected way), will confuse it or create something that doesn't work.

Given that any genuinely useful structure is unlikely to be as complex as some of my tests, I think anything that a mapper might actually want to create will work.

This is a really valuable addition to the mapper's arsenal.
User avatar
Enjay
Everyone is a moon, and has a dark side which he never shows to anybody. Twain
 
 
 
Joined: 15 Jul 2003
Location: Scotland

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Tue Jan 18, 2022 12:39 pm

@Enjay - Yeah, I didn't think anyone would ever need to create a 3d floor from the map of DOOM2 MAP01, but that was a good benchmark. I figure if it can work with something as big and complex as that without choking on it, it can easily handle the smaller stuff.
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Tue Jan 18, 2022 12:49 pm

About to drop another version - So you can create cool 3d floors now, but if you can't get them to sync up with your real geometry, they're just kinda isolated.

For example if you draw a half-pipe:
Spoiler:

That's a cool 3d floor, but what to do with it? It's just kinda floating out there on it's own. You need to attach it to your level so it looks like it fits in.

So the script now creates another sector with "mating templates" in it:
Spoiler:

Notice there are two templates, one that attaches to the floor and one that attaches to the ceiling. Both of them match up to the geometry of your 3d floor, one above and one below.

You can copy and paste these at the ends of your extrude path to get different effects. For example, use 2 ceiling matings to make it look like your half-pipe is hanging from the ceiling:
Spoiler:


Or use the floor matings to make it look like it's supported on the ground:
Spoiler:


You can get clever with it, make the pipe look like it's embedded in a higher floor:
Spoiler:


Or coming out of a wall:
Spoiler:


I think this will be pretty useful, looks way better than just sticking your 3d floor up against a flat surface.
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

Re: A script to build custom shaped 3d floors

Postby Sir Robin » Tue Jan 18, 2022 5:25 pm

Better than screenshots, here's an example:

PipeFactory.wad

This was done with a simple extrusion (a half-pipe) and some copy-pasting of the mating templates
User avatar
Sir Robin
 
Joined: 22 Dec 2021
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: Intel (Modern GZDoom)

PreviousNext

Return to Creation, Conversion, and Editing

Who is online

Users browsing this forum: No registered users and 1 guest