From Valve Developer Community
Revision as of 16:55, 16 June 2011 by Gottimw (talk | contribs) (added section about the altering of the animations)
Jump to: navigation, search
Panels in Portal 2

"The planks of tomorrow!" ~ Cave Johnson

Panels are architectural elements. They are individually positioned so that, together, they form the test chamber. Because the panels are moved individually by robotic arms, the room can react to the player. They can form stairs, new ledges, open like doors, and tend to convey a sense that the room itself is alive.

Creating Panels

1. Create a prop_dynamic entity with the following settings:

Property Name Value
World Model models/anim_wp/room_transform/arm64x64_interior.mdl
Name panel1
Collision Not Solid

2. Create a 256Lx256Wx32H block brush above the model. Tie it to a func_brush entity with the following settings:

Property Name Value
Name panel1_brush
Parent panel1

3. Create a logic_auto entity and set up the output as follows:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn panel1_brush SetParentAttachmentMaintainOffset panel_attach 0.00 Yes(?)

Now the func_brush can follow the animation of the prop_dynamic.

4. Create a logic_relay with the following settings:

Property Name Value
Name relay_panel1_animation

and the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger panel1 SetAnimation (ANIMATION NAME) 0.00 Yes(?)

List of panels attachments

Note: Idle / Static models do not move. These are strictly aesthetic.

Model Path Animated Panel Attachment Name
anim_wp\arm_interior_192\arm_interior_128.mdl Yes GLASS - N/A
anim_wp\arm_interior_192\arm_interior_192.mdl Yes GLASS - N/A
anim_wp\arm_interior_192\video_arm.mdl Yes monitor_attach
anim_wp\arm_interior_192\video_arm_big.mdl Yes monitor_attach
anim_wp\circle_shield\circle_shield.mdl Yes panel_top
anim_wp\framework\circle_shield_static.mdl No N/A
anim_wp\room_transform\arm64x64_interior.mdl Yes panel_attach
anim_wp\room_transform\arm64x64_interior_rusty.mdl Yes panel_attach
anim_wp\telescope_arm\telescope_arm.mdl Yes panel_top
anim_wp\telescope_arm_128\telescope_arm_128.mdl Yes panel_top
anim_wp\telescope_arm_128\telescope_arm_128_glass.mdl Yes GLASS - panel_top
anim_wp\telescope_arm_128\telescope_arm_128_idle.mdl No N/A
anim_wp\telescope_arm_128\telescope_arm_128_upidle.mdl No N/A
anim_wp\telescope_arm_128\telescope_arm_128x256.mdl Yes GLASS - panel_top
anim_wp\telescope_arm_trans\telescope_arm_trans.mdl Yes GLASS - panel_attach
props_livingwall\armliving64x64.mdl Yes panel_attach

Animation Playback Rate

Sometimes it might be required for an arm (or any other prop_dynamic) to play its animation faster or slower. The playback rate of a prop_dynamic entity is expressed in numbers as representation of percentage, where 1 is equivalent to 100%, 2 is 200%, 0.5 is 50%, 0 is 0% of the animation playback rate (note that 0 will stop the animation completely). There are two ways to change default playback rate.

The first method is easier and applied to all of animation of a particular prop_dynamic. The playback rate can be assigned to the arm and this will have a constant effect on the arm's animations playback rate (it will always be playing any animations at that set rate). In order to do so an new output need to be added in the arm's properties:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnAnimationBegun !self SetPlaybackRate 5 0.00 No

Above output will make an arm to play all of its animations 5 times faster. The !self is a special wildcard that selects the entity that is firing that output (arm selects itself).

The second way of setting up the playback rate is more complex but also more flexible. The triggering entity (trigger_once etc.) has to set the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch arm_0 SetAnimation pitflings_angled_01 0.00 No
Io11.png OnStartTouch arm_0 SetPlaybackRate 2 0.01 No

Above set-up, when triggered will cause arm_0 to start animation, one hundredth second later the animation playback will be increased to 200% (note that if both outputs were fired at the same time the playback rate will remain at default - 1).

See also