View Full Version : JOINER - An automated Brush Generator
JOINER
1.0.3
06-04-2012
Created by Timothy 'YM' Johnson
http://forums.tf2maps.net/images/tf2maps/dl_filebtn_big.png (http://www.subtleallusion.com/joiner/)
http://www.subtleallusion.com/images/joiner_main.jpg
You can load in any VMF you like, as long as it has a brush textured in dev/slime Joiner will do it's work.
Joiner will never ever modify your input VMF, so it's totally safe to put in your working VMF, no need to create a new one.
Joiner works by finding volumes defined by single brushes textured with dev/slime. To create supports for a room, create a single dev/slime brush that exactly fills its entire volume.
You can have as many of these volumes in a map as you want, they can adjoin or intersect in any way. Joiner will create one set of supports per volume it finds.
The output will be completely func_detailed too.
Joiner will not work with any angled faces. Sorry folks, that's a feature for the future.
Joiner will not account for touching faces being the same room. That's another feature for the future.
Here are some before/after shots:
http://dl.dropbox.com/u/2126504/autobrush/ym_autobrush_gif.gif
http://dl.dropbox.com/u/2126504/autobrush/aly_autobrush_gif.gif
If you have any problems let me know what you were putting in, what the console said as it did it, and what you got out so I can try to fix it. (or chastise you for being a fool)
If you make anything using non-default settings, consider taking a before/after shot for me, I'd be grateful.
http://forums.tf2maps.net/images/tf2maps/dl_filebtn_big.png (http://www.subtleallusion.com/joiner/)
Enjoy!
Jeremy
04-02-2012, 10:51 AM
Whoa. Nice.
Tyker
04-02-2012, 10:57 AM
Awesome! Very nice job!
I think the interesting thing is automated detail like this can, in the right situation, be more interesting and have better detail than planned wooden supports! Thanks.
Yeah totally, Now I've added a proper random seed (forgot it for this version, oops) it's giving me really cool results.
LeSwordfish
04-02-2012, 12:25 PM
As a suggestion for a future feature, if it reads an intersecting brush with another texture, it generates the wood around this brush. So doors, windows, or large spaces for posters etc can be very easily included.
Tarry H Sruman
04-02-2012, 12:39 PM
I like it. Well done!
honeymustard
04-02-2012, 06:42 PM
This owns.
yyler
04-02-2012, 06:52 PM
Is there actually any point to nodrawing a face that is against a another brush? Any faces that are impossible to see in game (ie everything nodrawed in your pictures) are culled, aren't they? I thought this happened at the same time nodraw was taken into account.
Also I don't know what "Joiner will not account for touching faces being the same room. That's another feature for the future." means help
make an L shaped room. you neeeed two brushes minumum to define it's volume. Joiner will treat each brush as a separate room and you'll get two sets of beams along the join, through the middle of your room.
yyler
04-02-2012, 06:56 PM
Oh I see. I kept arranging them in a line in my head, not in an L.
That still will produce extraneous wall supports in the middle of your room.
Idolon
04-02-2012, 07:07 PM
Is there actually any point to nodrawing a face that is against a another brush? Any faces that are impossible to see in game (ie everything nodrawed in your pictures) are culled, aren't they? I thought this happened at the same time nodraw was taken into account.
I don't know if func_details will automatically cull, since they ignore visleafs.
yyler
04-02-2012, 07:11 PM
It has nothing to do with visleafs as far as I know, because nodraw happens before that in the vbsp process.
A Boojum Snark
04-02-2012, 07:14 PM
Is there actually any point to nodrawing a face that is against a another brush? Any faces that are impossible to see in game (ie everything nodrawed in your pictures) are culled, aren't they? I thought this happened at the same time nodraw was taken into account.
It depends what the brushes are. World-on-world will always cull. Brushes within a single entity usually will. Detail brushes may or may not cull when touching each other or the world, and I'm not entirely sure what makes the difference.
Currently my nodrawing is super simplistic and not up to my usual standards. Proper nodrawing is on the list of things to do but it's pretty low down.
Next version has each 'room' grouped into a single func_detail, if it makes any difference..
henke37
04-02-2012, 09:14 PM
Remember that the engine culls all backwards facing sides during rendering anyways. And the detail brushes are affected by visleafs, even if they don't affect the visleaf creation. So it isn't a big deal even if you had to manually nodraw impossible sides and missed them all.
except y'know... lightmap optimisation.
Boylee
04-03-2012, 03:19 PM
This is Glorious YM, thank you very much.
Welp I tried to take on scaling in any direction today and it beat me into submission. I know what roughly needs to be done to get it working, I just have some coordinate issues giving me a headache.
Sooo with that said I'll release a new version tomorrow with all the new features, then I'm going to take a break from coding (I've spent upwards of 100 hours on this in the last week and a half!)
Until then, bed time!
New version is here: http://dl.dropbox.com/u/2126504/autobrush/Joiner-1.0.2.zip
It now creates a log file, which is important to me if you encounter errors.
It can make a config file of your custom settings and load that if you want so you can use the same settings without typing them in every time.
It allows vertical textures to be used, previously they resulted in horrible badly rotated textures.
And best of all, it groups each 'Room' into a single func_detail. Waaaay better than before.
Due to the aforementioned break, this will be the only update for several weeks. Sorry for making you download a new one so quickly, it's worth updating though.
Quick update to fix a rather large bug. When it was grouping them into sensible func_details it would ignore the final one and not write it to the file.
This is now fixed: http://dl.dropbox.com/u/2126504/autobrush/Joiner-1.0.3.zip
Queso2469
04-06-2012, 02:39 PM
This is excellent. Thank you very much. Two minor annoyances though. You have to type out the file path (no copy paste) and you have to type out a texture rather than just go with a default.
My dream is for it to have a proper windows gui with a standard file browser, but since that's well beyond the scope of my uni project it won't come until later, if at all.
As far as the texture goes, I figured since there is no one standard texture, it's the one thing people would want to change most often.
A Boojum Snark
04-06-2012, 07:38 PM
What if texturing one side of the brush with non-slime made it use that texture?
Nothing new, just set up a page on my site for it:
http://www.subtleallusion.com/joiner/
colacan
04-14-2012, 06:02 AM
Awesome! This will help me allot making supports! Thanks
pitsiunio
05-09-2012, 10:02 AM
AWESOME.
Great job, it's helps me alot!
Lawdee
11-04-2012, 08:45 AM
I might be stupid but how should the path you enter in the console look?
I keep getting an "Enter valid file name" error.
TZK203
01-02-2013, 02:36 PM
I might be stupid but how should the path you enter in the console look?
I keep getting an "Enter valid file name" error.
This.
No matter how I do it, it will still say this error.
It's saved in mapsrc under sourcesdk_content... moving it around doesn't do much in terms of entering the name.
Bloodhound
01-02-2013, 03:11 PM
Maybe this screenshot will help you:
http://www.subtleallusion.com/images/joiner_04.jpg
Take a look at the path in the window title.
The Joiner.exe is in the same directory as the vmf, so you just have to type the vmf name.
Afterglow375
01-13-2013, 11:23 AM
Wow this is awesome. I'm curious how did you go about doing this? I mean, are there any tutorials out there about this kind of stuff? I see that you made it with C++, and I know a bit of C++ myself so I'm interested in doing something like this...
henke37
01-13-2013, 07:14 PM
It is basic text parsing to read in the existing map. Then it is fancy geometry to deal with the brilliant decision to store planes instead of vertexes. Then you get to do what you want. Finally you have to redo the fancy math and write out the text file. It's not complicated in theory.
vBulletin® v3.8.2, Copyright ©2000-2013, Jelsoft Enterprises Ltd.