269 lines
11 KiB
HTML
269 lines
11 KiB
HTML
|
<html>
|
||
|
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type"
|
||
|
content="text/html; charset=iso-8859-1">
|
||
|
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
|
||
|
<title>Generating 'Beam' visual effects</title>
|
||
|
<style type="text/css">
|
||
|
<!--
|
||
|
|
||
|
body {
|
||
|
background-color:black;
|
||
|
text-color:lightgrey;
|
||
|
margin-left:12%;
|
||
|
margin-right:13%;
|
||
|
}
|
||
|
|
||
|
a {
|
||
|
font-weight:bold;
|
||
|
text-decoration:none;
|
||
|
}
|
||
|
|
||
|
p {
|
||
|
font:12pt/16pt Arial, Geneva, sans-serif;
|
||
|
color:lightgrey;
|
||
|
margin-top:8pt;
|
||
|
margin-bottom:8pt;
|
||
|
text-indent:12pt;
|
||
|
}
|
||
|
|
||
|
h1 {
|
||
|
font:24pt/22pt Arial, Geneva, sans-serif;
|
||
|
color:orange;
|
||
|
text-align:center;
|
||
|
}
|
||
|
|
||
|
h2 {
|
||
|
font:18pt/18pt Arial, Geneva, sans-serif;
|
||
|
color:yellow;
|
||
|
text-align:left;
|
||
|
margin-top:24pt;
|
||
|
}
|
||
|
|
||
|
pre {
|
||
|
font:10pt/10pt Fixedsys, Courier, serif;
|
||
|
background-color:#202020;
|
||
|
color=lightgrey;
|
||
|
}
|
||
|
|
||
|
code {
|
||
|
font:10pt/15pt Fixedsys, Courier, serif;
|
||
|
background-color:#202020;
|
||
|
color=lightgrey;
|
||
|
}
|
||
|
|
||
|
hr {
|
||
|
color:red;
|
||
|
margin-top:-20pt;
|
||
|
}
|
||
|
|
||
|
hr.h2 {
|
||
|
color:orange;
|
||
|
width:50%;
|
||
|
text-align:left;
|
||
|
}
|
||
|
|
||
|
b.red {
|
||
|
font:light;
|
||
|
color:red;
|
||
|
}
|
||
|
|
||
|
b.green {
|
||
|
font-weight:light;
|
||
|
color:green;
|
||
|
}
|
||
|
-->
|
||
|
</style>
|
||
|
</head>
|
||
|
|
||
|
<body bgcolor="#000000" text="#FFFFFF" link="#0000FF"
|
||
|
vlink="#800080">
|
||
|
|
||
|
<p align="left"><font color="#808080" size="1" face="Arial">Last
|
||
|
updated 4/14/2000</font></p>
|
||
|
|
||
|
<p align="center"><a href="main.html"><font color="#990000"
|
||
|
size="3" face="Arial">Main Menu</font></a><font color="#990000"
|
||
|
size="3" face="Arial"> </font></p>
|
||
|
|
||
|
<hr>
|
||
|
|
||
|
<h1><font face="Arial">Generating 'Beam' Visual Effects</font></h1>
|
||
|
|
||
|
<p><font face="Arial"></font> </p>
|
||
|
|
||
|
<blockquote>
|
||
|
<p><font face="Arial"><i>Yeah, now we have beam effects. They
|
||
|
are still in progress, but we have almost all the basic
|
||
|
effects in at the moment. I imagine that these would be used
|
||
|
for stuff like boots' attacks and Demo's tractor beam skill.
|
||
|
Things that need scaleable lines for variable relative
|
||
|
targets.</i></font></p>
|
||
|
</blockquote>
|
||
|
|
||
|
<h2><font face="Arial"><i>Creating Beams in APE</i></font></h2>
|
||
|
|
||
|
<blockquote>
|
||
|
<p><font face="Arial"><i>What is a beam? It's a screen-oriented
|
||
|
polygon that starts at one point and ends at another. So
|
||
|
basically a line. These lines can have various effects such
|
||
|
as fading from opaque to solid, fading between colors,
|
||
|
growing/shrinking, etc.</i></font></p>
|
||
|
<p><font face="Arial"><i>Right now, you can only create beams
|
||
|
in APE. There are two APE externs to make beams:</i></font></p>
|
||
|
<p><font face="Arial"><code><i>BEAM_CreateBeam [srchandle] [tgthandle]
|
||
|
[r] [g] [b] [a] [time] [radius] [flags]</i></code></font></p>
|
||
|
<p><font face="Arial"><i>srchandle/tgthandle</i>: The two
|
||
|
handles are handles to the source and target entities--the
|
||
|
entity origins will be the start and end points of the beam.</font></p>
|
||
|
<p><font face="Arial"><i>r, g, b, a</i>: These represent the
|
||
|
red, green, blue, and alpha components of the beam's color.</font></p>
|
||
|
<p><font face="Arial"><i>time</i>: The lifetime of the beam
|
||
|
in milliseconds.</font></p>
|
||
|
<p><font face="Arial"><i>radius</i>: The thickness of the
|
||
|
beam.</font></p>
|
||
|
<p><font face="Arial"><i>flags</i>: The effects flags of the
|
||
|
beam (to be described later)</font></p>
|
||
|
<p><font face="Arial">The second command is a more complex
|
||
|
version of creatbeam with more arguments for greater control
|
||
|
over the beam's appearance.</font></p>
|
||
|
<p><font face="Arial"><code>BEAM_CreateBeamEx [srchandle] [srcsurface]
|
||
|
[tgthandle] [tgtsurface] [r] [g] [b] [a] [r2] [g2] [b2]
|
||
|
[time] [radius] [radius2] [texture #] [scrollx] [scrolly] [flags]</code></font></p>
|
||
|
<p><font face="Arial"><i>srchandle/tgthandle</i>: These are
|
||
|
the same as in the previous command, they represent the start
|
||
|
and end entities.</font></p>
|
||
|
<p><font face="Arial"><i>srcsurface/tgtsurface</i>: These are
|
||
|
the names of the triangles for the source and target that you
|
||
|
want the beams start and endpoints to be. They are optional.
|
||
|
So if you just want entity to entity beams, just make both
|
||
|
surfaces 0. If you want just a source surface (the most
|
||
|
common application), say for an eye-beam effect, just use a
|
||
|
source surface and keep the target surface as "0".
|
||
|
You still need to have valid handles for using surface-basedbeams.</font></p>
|
||
|
<p><font face="Arial"><i>r, g, b, a</i>: The red, green,
|
||
|
blue, and alpha components of the beam's color.</font></p>
|
||
|
<p><font face="Arial"><i>r2, g2, b2</i>: The red, green, and
|
||
|
blue components of the 2nd color. If the 1st and 2nd color
|
||
|
are not the same, then the beam will fade between these two
|
||
|
colors as it decays.</font></p>
|
||
|
<p><font face="Arial"><i>time</i>: Lifetime of beam.</font></p>
|
||
|
<p><font face="Arial"><i>radius</i>: Thickness of beam/thickness
|
||
|
of start point.</font></p>
|
||
|
<p><font face="Arial"><i>radius2</i>: Thickness of end point
|
||
|
of beam. If both radii are different, then you will get a
|
||
|
flared-out beam.</font></p>
|
||
|
<p><font face="Arial"><i>texture #</i>:Texture number. This
|
||
|
is the same texture number you use for particles--it will
|
||
|
apply a texture from the pool of particle textures to the
|
||
|
beam. It is tiled down the length of the beam, but in width
|
||
|
it is stretched.</font></p>
|
||
|
<p><font face="Arial"><i>scrollx</i>: Texture scroll X speed.
|
||
|
</font></p>
|
||
|
<p><font face="Arial"><i>scrolly</i>: Texture scroll Y speed.
|
||
|
</font></p>
|
||
|
<p><font face="Arial"><i>flags</i>: Flags (to be described
|
||
|
later)</font></p>
|
||
|
</blockquote>
|
||
|
|
||
|
<h2><font face="Arial">Creating Beams in PLANET</font></h2>
|
||
|
|
||
|
<blockquote><p>The Planet Command is basically createbeamex, but slightly more flexible. This goes on the command path for any given track and
|
||
|
references the entity that belongs to that track as the source of the beam. Therefore, it's not necessary to specify a source entity:</p>
|
||
|
|
||
|
<p><code>beam=[surfacea],[tgttrack],[surfaceb],[r],[g],[b],[a],[r2],[g2],[b2],[time],[radius],[radius2],[texnum],[scrollx],[scrolly],[flags], [segments]</p></code>
|
||
|
|
||
|
<p><i>surfacea</i>: The surface of the target entity the beam will emit from. "0" if none.</p>
|
||
|
<p><i>tgttrack</i>: The track of the target entity. Can also be either the sequence or classname of the desired target entity.</p>
|
||
|
<p><i>surfaceb</i>: The surface you want to hit on the target entity. "0" if none.</p>
|
||
|
<p><i>r, g, b, a</i>: The red, green, blue, and alpha components of the first color.</p>
|
||
|
<p><i>r2, g2, b2</i>: The second color of the beam. If the same as the first, no color fading will occur.</p>
|
||
|
<p><i>time</i>: Time, in milliseconds, of the beam's life. 2500 is 2 and a half seconds, for a ballpark value.</p>
|
||
|
<p><i>radius</i>: Radius, 0-256, of the beam.</p>
|
||
|
<p><i>radius2</i>: Second radius--if the same as the first, no flaring will occur.</p>
|
||
|
<p><i>texnum</i>: Texture #, same as the texnum for particles. If -1 or 0, will not use a texture. (I probably have to let it use 0)</p>
|
||
|
<p><i>scrollx</i>: Scroll velocity along the x axis of the texture (if available).</p>
|
||
|
<p><i>scrolly</i>: Scroll velocity along the y axis of the texture (if available).</p>
|
||
|
<p><i>flags</i>: Effects flags.</p>
|
||
|
<p><i>segments</i>: Number of segments for lightning. (optional, only used for lightning beams--3-12 segments. Let me know if you need more) </p>
|
||
|
|
||
|
|
||
|
<h2><font face="Arial">FLAGS</font></h2>
|
||
|
|
||
|
<p><font face="Arial">These are the values that you add up and
|
||
|
use for the flags field. You can use the windows calculator in
|
||
|
hex mode to add in the appropriate effects flags. More info to
|
||
|
come...</font></p>
|
||
|
|
||
|
<p><font face="Arial"><code><br>
|
||
|
#define BE_SHRINK 0x0001 // beam shrinks with time (radius ->
|
||
|
0)<br>
|
||
|
#define BE_FADE 0x0002 // beam fades with time<br>
|
||
|
#define BE_PARTICLE 0x0008 // add particles to beam length<br>
|
||
|
#define BE_GLOW 0x0020 // draw halo around beam<br>
|
||
|
#define BE_GROW 0x0040 // beam grows with time ( 0 -> radius)<br>
|
||
|
#define BE_LIGHTNING 0x0200 // segmented lightning beam<br>
|
||
|
#define BE_2RADIUS 0x0400 // different source and target radius<br>
|
||
|
#define BE_ALPHALEFT 0x0800 // fade from 0 alpha, target --
|
||
|
source : fade<br>
|
||
|
#define BE_ALPHARIGHT 0x1000 // fade from 0 falpha, source -- target : fade<br>
|
||
|
#define BE_INFINITE 0x2000 // beam lasts forever (until killed)<br>
|
||
|
</code></font></p>
|
||
|
|
||
|
<p>If you are using the lightning flag, the radius2 argument is referenced as the deviation
|
||
|
instead of the flared radius since lightning would look pretty stupid with tapered beams. If it's
|
||
|
set to 0, it will just use a default value.</p>
|
||
|
|
||
|
<p><h3>A Small Note About the INFINITE Flag</h3></p>
|
||
|
|
||
|
<p>If you use the INFINITE flag, the beam will last forever. You can explicitly kill the beam with the command:</p>
|
||
|
|
||
|
<p><code>BEAM_KillBeam [handle]</p></code></p>
|
||
|
|
||
|
<p>This will kill the infinite beam associated with the entity handle passed in. If you have more than one
|
||
|
beam emitting from a single entity, this function will kill all beams associated with that
|
||
|
entity.</p>
|
||
|
|
||
|
<h2><font face="Arial">LIMITATIONS</font></h2>
|
||
|
|
||
|
<blockquote>
|
||
|
<p><font face="Arial">Beams are a single polygon (except lightning). So you will
|
||
|
notice if you have a particularly wide beam that the end
|
||
|
points will spin around as you move the camewra because it
|
||
|
always draws the beam orthogonal to the screen. It's not that
|
||
|
bad with small to medium sized beams, but beware of this when
|
||
|
using obscenely wide beams.</font></p>
|
||
|
</blockquote>
|
||
|
|
||
|
<h2><font face="Arial">Using The Beam Editor</font></h2>
|
||
|
|
||
|
<blockquote>
|
||
|
<p><font face="Arial">Now we have a Beam Editor. This allows
|
||
|
you to quickly demo different styles of beams and view their flag
|
||
|
values for easy creation of new effects.
|
||
|
</font></p>
|
||
|
</blockquote>
|
||
|
|
||
|
<p>
|
||
|
The Beam Editor is similar to the Particle Editor in that it needs to be launched from NoxDroppings. To start the editor,
|
||
|
type the console command <i>"ndbeamedit +"</i> from the console.
|
||
|
</p>
|
||
|
|
||
|
<p>Now you'll see an interface similar to the Particle Editor. There are a bunch of sliders on the right for adjusting
|
||
|
parameters and a listbox on the lower left for flags. You can click on the flags just like particle flags. These will
|
||
|
apply different styles.</p>
|
||
|
|
||
|
<p>Now, when you click the <i>create beam</i> button, a beam will be created in front of you. (It spawns two invisible entities
|
||
|
in front of the camera for this) When this button is clicked you will see the text "Beam Flags" in the upper left hand corner of
|
||
|
the screen. This is the effect argument for this given beam. That way you don't have to use a calculator.</p>
|
||
|
|
||
|
<p>By using the values of the sliders and the beam flags number, you can easily create particle commands with the editor.</p>
|
||
|
|
||
|
<p>
|
||
|
<font face="Arial">Complain about this document to the
|
||
|
wonderful author, </font><a href="mailto:ralph@ionstorm.com"><font
|
||
|
face="Arial">Ralph Barbagallo</font></a></p>
|
||
|
</body>
|
||
|
</html>
|