Portal - Tutorial - Piston Panels

From Valve Developer Community
Revision as of 08:56, 22 March 2024 by Orangeisbetter (talk | contribs) (Added brushwork for panel geometry)
Jump to navigation Jump to search
Portal Level Creation

Introduction

This guide will show you how to create Piston Panels. These are one of the most seen objects in Portal.

Warning.pngWarning: This guide is incomplete. As of right now, it is recommended that you don't follow this guide.

The Hole

First, make sure you have a hole the area you want to put a piston in. The hole should be at least 64 and 128 units long in width, length or height. Texture the sides of the hole with metal/metalwall061f.

Piston Hole

Piston Pit

Orange brush

Create a 128w*128w*16h with the nodraw texture. Texture the visible face with lights/light_orange001

Orange Brush

Piston Pit Walls

Create two 16w*128l*128h brushes and 128w*16l*128h brushes with the nodraw texture.

Change the texture of all visible faces to metal/metalwall_bts_006b_gradient. Use the Face Edit Sheet dialog and set its rotation to 180, realign the texture if necessary.

Create two 16w*128l*112h brushes and 128w*16l*112h brushes with the nodraw texture.

Change the texture of all visible faces to metal/metalwall_bts_006b and put these brushes on top of the other 2 brushes.

Wall brushes

Piston Pit Grate

Create 2 32w*128l*1h brushes and 2 64w*32l*1h brushes with the nodraw texture. Set the front face texture to /metal/metalgrate018.

Create a 64w*64l*1h brush the nodraw texture. Set the front face texture to metal/metalgrate018c.

Position these brushes right below the beginning of the brushes that create the hole entrance. Remember to tie these to a func_detail.

Grates

The Piston Brushes

Base brush

First, create a 12-sided cylinder with a size of 32w*32l*192h. Texture the sides with metal/metal_lift001 and metal/metal_lift001_gradient, and the top and bottom with nodraw.

Textured piston base with pit hidden

Inner cylinders

Every successive inner piston cylinder should be 8 units smaller in diameter than the previous one. Texture all successive cylinders with metal/metal_lift001. Note that the length of the piston cylinders should be less than the one before it. The size of these piston brushes need to add up to at least the target extension height of the piston. Once at the full height, resize the top cylinder to be 8 units below a major gridline (32, 64, 128 units), so you have room for the panel on top.

If you require the pistons to extend farther, you can make the largest piston cylinder wider and/or longer to accommodate. Note that you may need to increase the depth of the pit as well.

Extended piston with 2 additional cylinders, each with a height of 192 units.

Joint pieces

To create the joints between pistons, create a 32w*32l*8h 12-sided cylinder brush. Texture the sides with metal/metalwall_bts_005a. Position it directly on top of the base brush.

Next, use the vertex tool to move the top vertices to the next smallest piston size. Select the vertices in the 3D view before moving them.

Piston joint textured and positioned above base brush

Repeat this process for all the smaller pistons, except the last one. For the last one, simply duplicate the last one and flip it over. Position it at the top of the cylinder.

Joints on all piston pieces

Finally, for each piston piece, select the brush and the joint above it, and tie them to a func_brush. For the bottom one, as it is not going to move, you can simply tie it to a func_detail.

Piston brushes tied to entities

Creating the panel

For the panel, create a 128w*128l*8h brush textured on the top with concrete/concrete_modular_floor001a, on the sides with signage/hazard_orange_03b, and on the bottom with metal/citadel_metalwall060a. Position it on top of your top piston cylinder.

Panel textured and positioned atop the piston cylinders

Panel Details

The panel details can be created by creating a 128w*128l*4h brush textured with plastic/plasticwall001b. Use the clipping tool to remove the corners on the bottom (as seen in the image below)

Panel detail brush with bottom corners removed

Next, hide the panel create a 112w*112l*4h brush inside the detail brush. Use Tools > Carve or Ctrl+Shift+C to carve that piece out of the detail brush. Then remove the temporary brush. Tie this, along with the panel surface, to a func_detail.

Top panel details complete and textured

See also