Angled Roofs on Angles

S

saph

I know this sounds screwy, but I have an angled roof on top of an angled building. I know it would be easier if I used forty-five degrees or any fifteen degree rotation, but when I rotate brushes, I dislike the way it's not flush when aligning it with a straight edge.

The angles in the top view are a 1:8 ratio (11.25 degrees) for the walls, making it tricky to work with. The only problem is, I like how the map flows because of the small angle. In the front view, the angles are 1:4 (22.5 degrees) for the roof. Every time I think I'm close, I end up with the peak of the roof being straight across, not at the same angle of the building. How would you create this roof? I know I've done something like this before, but I don't remember how I accomplished it.


gUfa2wM.jpg
 

Tumby

aa
May 12, 2013
1,085
1,193
Solution 1: INSTANCES (Recommended for most cases)
There is a guide on the forums: http://tf2maps.net/threads/instances-and-you.24784/


Solution 2: Making everything on-grid
a8ebbc466a.png


Just to get this straight, a "x:y ratio" never refers to an actual quotient when talking in terms of hammer. Instead, we are talking about the shift of X units per Y units. A "1:x" ratio can, from my observation, never be an actual rational number unless x = 0 1 or -1. A "1:8 ratio" is 7.125016348901798 degrees while 1:4 is 14.036243467926477°. If you use "hammer ratios", you don't actually rotate any geometry; you literally place every vertex and shift them depending on the ratio you choose. I can tell from the screenshots that you didn't really do it that way; you rotated it.
On first glance, some brushes in my image may look out of place, and that is kinda true. The roof is cut up into multiple pieces to give some variation on the shape. However, everything is still on grid.

Anyways, I hope you get the idea on how this is supposed to work. It takes some good knowledge of what you can do and what you can not do with brushes to do this kind of stuff. You will probably have a much easier time using a func_instance.