1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HTML>
<HEAD>
<TITLE>Crystal Space: MeshObject Thing</TITLE>
<META NAME="description" CONTENT="Crystal Space: MeshObject Thing">
<META NAME="keywords" CONTENT="Crystal Space: MeshObject Thing">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC536"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_217.html#SEC530"> < </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_219.html#SEC542"> > </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_196.html#SEC414"> << </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_201.html#SEC452"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_220.html#SEC543"> >> </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_285.html#SEC711">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<HR SIZE=1>
<H3> 7.8.17 Thing Mesh Object </H3>
<!--docid::SEC536::-->
<P>
<EM>Written by Jorrit Tyberghein,
(<A HREF="mailto:jorrit.tyberghein@uz.kuleuven.ac.be">jorrit.tyberghein@uz.kuleuven.ac.be</A>).</EM>
</P><P>
This mesh object represents a 'thing' which is a very often used
geometry object in Crystal Space. Things are often used to mark the bounding
geometry of a sector so that it represents a closed space. Things are not
very dynamic in nature (although you can have things that move) so they
are most often used for static geometry.
</P><P>
Things support both polygons and curved surfaces (bezier surfaces only
at this moment). Things also support portals which means that they can
be used to define transition polygons between adjacent or non-adjacent
sectors.
</P><P>
One important aspect of the thing mesh object is that there is no difference
between a mesh object and a mesh factory. You can create a mesh factory
and use it as a mesh object.
</P><P>
<A NAME="SEC537"></A>
<H4> Basic Structure </H4>
<!--docid::SEC537::-->
<P>
The following SCF class names are used (for <CODE>CS_LOAD_PLUGIN()</CODE>):
</P><P>
<UL>
<LI>
Type plugin: `<SAMP>crystalspace.mesh.object.thing</SAMP>'
<LI>
Loader plugin: `<SAMP>crystalspace.mesh.loader.thing</SAMP>'
<LI>
Factory loader plugin: `<SAMP>crystalspace.mesh.loader.factory.thing</SAMP>'
<LI>
Plane loader addon plugin: `<SAMP>crystalspace.mesh.loader.thing.plane</SAMP>'
<LI>
Bezier curve loader addon plugin: `<SAMP>crystalspace.mesh.loader.thing.bezier</SAMP>'
</UL>
<P>
Objects in this plugin implement the following SCF interfaces (get
with <CODE>SCF_QUERY_INTERFACE()</CODE>):
</P><P>
<UL>
<LI>
<EM>MeshObject</EM> and <EM>MeshObjectFactory</EM>
<UL>
<LI>
Implements `<SAMP>iMeshObject</SAMP>'
<LI>
Implements `<SAMP>iMeshObjectFactory</SAMP>'
<LI>
Implements `<SAMP>iThingState</SAMP>'
<LI>
Implements `<SAMP>iPolygonMesh</SAMP>'
<LI>
Implements `<SAMP>iVisibilityCuller</SAMP>'
<LI>
Implements `<SAMP>iLightingInfo</SAMP>'
</UL>
<LI>
<EM>MeshObjectType</EM>
<UL>
<LI>
Implements `<SAMP>iMeshObjectType</SAMP>'
<LI>
Implements `<SAMP>iThingEnvironment</SAMP>'
</UL>
</UL>
<P>
<A NAME="SEC538"></A>
<H4> State Interface </H4>
<!--docid::SEC538::-->
<P>
Since mesh objects and mesh factories are the same for things there is
only one state interface.
</P><P>
`<SAMP>iThingState</SAMP>' is the SCF interface that you can use to
set/get settings for a thing. The definition of this interface
can be found in `<TT>CS/include/imesh/thing/thing.h</TT>' and that is also the
include file you need to include in your applications to use this plugin.
Using this interface you can access the vertices, polygons, materials,
curved surfaces, and various other configuration parameters for a thing.
</P><P>
All include files for the thing mesh can be found in the
`<TT>CS/include/imesh/thing</TT>' directory. There are include files for the
curve definition, for lightmaps, polygons, portals, ...
</P><P>
<A NAME="SEC539"></A>
<H4> Factory and Object Loader </H4>
<!--docid::SEC539::-->
<P>
At load time a thing can be constructed from several <EM>thing parts</EM>.
At run time these parts will all be combined into one big thing but
at load time it is sometimes easy to be able to split the thing in parts
so that you can have a more logical grouping of thing data. The important
feature of parts is that the vertex table starts from zero again. This means
that you can define vertices in a part and then use them in polygons in that
part as if the vertex table starts at 0 again. This is useful because then
you can more easily add new parts and even move around parts without having
to change all vertex indices. Note that it is no problem to have duplicate
vertices between different parts as they will be combined in a post-processing
pass anyway. The table below describes everything which you can use in a
single <EM>part</EM> which is also what you can use in the top level thing
definition.
</P><P>
<UL>
<LI>
Vertex and polygon definition commands. Note that in a given part the vertex
table always starts at index 0. Every vertex you add will use a new index.
<DL COMPACT>
<DT><CODE>VERTEX(x,y,z)</CODE>
<DD>Define a single vertex given three coordinates. The coordinates are given
in local object space for this thing.
<DT><CODE>V(x,y,z)</CODE>
<DD>Shorthand for `<SAMP>VERTEX</SAMP>'.
<DT><CODE>VBLOCK(minx,miny,minz,maxx,maxy,maxz)</CODE>
<DD>This is a conveniance command that creates eight vertices shaped in a block.
You can then easily define polygons that use some of these vertices to form
one surface of the block. VBLOCK expects six parameters which
are the dimensions of the block.
<DT><CODE>VROOM(minx,miny,minz,maxx,maxy,maxz)</CODE>
<DD>This command is similar to VBLOCK. Except that it will generate the vertices
in a different order so that later created polygons will
be visible from the inside instead of the outside.
<DT><CODE>CIRCLE(x,y,z,rx,ry,rz,num)</CODE>
<DD>Generate a circle of vertices.
`<SAMP>x,y,z</SAMP>' is the centre of the circle. `<SAMP>rx,ry,rz</SAMP>' is the radius of
the circle. `<SAMP>num</SAMP>' is the number of vertices to generate. If `<SAMP>num</SAMP>'
is negative the vertices will be generated in a different direction.
<DT><CODE>POLYGON(<small>...</small>)</CODE>
<DD>This defines a single polygon using the vertices described above. The
definition of a polygon is given below.
<DT><CODE>P(<small>...</small>)</CODE>
<DD>Shorthand for `<SAMP>POLYGON</SAMP>'.
</DL>
<P>
<LI>
Curve related commands. Currently only 3x3 bezier patches are supported.
Note that to use a curve in a thing mesh object you need to describe
a curve template first (more on this later).
<DL COMPACT>
<DT><CODE>CURVECONTROL(x,y,z:u,v)</CODE>
<DD>A control point for a curve. There are 9 control points (for a 3x3
bezier patch). Every control point has the following format: `<SAMP>x,y,z:u,v</SAMP>'.
`<SAMP>x,y,z</SAMP>' is the location of the point in object space. `<SAMP>u,v</SAMP>' is
the texture mapping coordinate for this control point.
<DT><CODE>CURVECENTER(x,y,z)</CODE>
<DD>Set the center point (`<SAMP>x,y,z</SAMP>') of the curve.
<DT><CODE>CURVESCALE(scale)</CODE>
<DD>Set the scale of the curve.
<DT><CODE>CURVE(curveTemplateName)</CODE>
<DD>Get the name of the curve template to use for this curve. Read about curve
templates later.
</DL>
<P>
<LI>
Material related commands.
<DL COMPACT>
<DT><CODE>MATERIAL(materialName)</CODE>
<DD>The default material to use for all following polygons. A polygon can
still override this.
<DT><CODE>MAT_SET_SELECT(materialSetName)</CODE>
<DD>Use a set of textures that was defined previously.
<DT><CODE>TEXLEN(scale)</CODE>
<DD>This is a very general and easy command to control texture mapping on
a polygon. It basically defines the scale of a texture. If you want more
control over polygon texture mapping you should look at the texture mapping
parameters in a polygon. But if you want Quick-And-Dirty texture mapping
then this command can help you. `<SAMP>TEXLEN</SAMP>' expects a single parameter
which is a scale. A scale of 1 means that the given texture will be scaled
once in both directions for 1 unit in world space. A scale of 2 means that
the given texture will be scaled once in 2 units of world space.
</DL>
<P>
<LI>
Various other commands.
<DL COMPACT>
<DT><CODE>MOVEABLE(boolean)</CODE>
<DD>This command only works for the top-level thing. It indicates that the
thing can possibly move around. If you don't set this option then it is
illegal to later move the thing.
<DT><CODE>VISTREE(boolean)</CODE>
<DD>This command only works for the top-level thing. It indicates that this
thing will have an octree + mini-bsp trees. This is used for visibility
culling. Usually only big things will have VISTREE and usually there is
only one thing in a sector which has this flag set. In this case you probably
want to use the `<SAMP>CULLER</SAMP>' keyword in the sector to indicate that
this thing is the one containing the visibility culling information.
<DT><CODE>FASTMESH(boolean)</CODE>
<DD>This command only works for the top-level thing. It indicates that this
mesh will be rendered using a faster technique. At this moment this is
not properly implemented though.
<DT><CODE>FACTORY(factoryName)</CODE>
<DD>This thing will be made from the given thing factory.
<DT><CODE>TEMPLATE(factoryName)</CODE>
<DD>Same as `<SAMP>FACTORY</SAMP>'
<DT><CODE>CLONE(thingName)</CODE>
<DD>This is similar to `<SAMP>FACTORY</SAMP>' but the thing will be made from the
given thing instead. i.e. it is a clone.
</DL>
</UL>
<P>
A given polygon (inside the `<SAMP>POLYGON</SAMP>' keyword) is defined as
follows:
</P><P>
<DL COMPACT>
<DT><CODE>MATERIAL(materialName)</CODE>
<DD>The material to use for this polygon. If not given then the default material
will be used.
<DT><CODE>TEXTURE(<small>...</small>)</CODE>
<DD>This keyword can be used to define additional texture mapping parameters.
<DT><CODE>LIGHTING(boolean)</CODE>
<DD>Should this polygon use lighting or not. By default this is enabled. If
disabled the texture on this polygon will be rendered using original colors
(i.e. full-bright texture).
<DT><CODE>PORTAL(sectorName)</CODE>
<DD>If you use this keyword then this polygon is a portal to the given sector.
<DT><CODE>WARP(<small>...</small>)</CODE>
<DD>This keyword can be used to define additional parameters for the portal.
More on this later.
<DT><CODE>SHADING(shadingParm)</CODE>
<DD>This describes the kind of shading to use for this polygon. Possible values
are: `<SAMP>NONE</SAMP>', `<SAMP>FLAT</SAMP>', `<SAMP>GOURAUD</SAMP>', or `<SAMP>LIGHTMAP</SAMP>'. Default
is `<SAMP>LIGHTMAP</SAMP>'.
<DT><CODE>VERTICES(v1,<small>...</small>)</CODE>
<DD>The vertices of the polygon. This is a list of vertex indices local to the
part this polygon is in. In combination with the `<SAMP>VBLOCK</SAMP>' or `<SAMP>VROOM</SAMP>'
commands this command can also contain something with the name: `<SAMP>w</SAMP>',
`<SAMP>e</SAMP>', `<SAMP>n</SAMP>', `<SAMP>s</SAMP>', `<SAMP>u</SAMP>', or `<SAMP>d</SAMP>' (for west, east, north,
south, up, or down). This will then create vertices according to the last
`<SAMP>VBLOCK</SAMP>' or `<SAMP>VROOM</SAMP>'. Note that there should be no other vertex
generating command between the `<SAMP>VBLOCK</SAMP>' or `<SAMP>VROOM</SAMP>' and this
polygon command! You can also give the first index of the `<SAMP>VBLOCK</SAMP>'
or `<SAMP>VROOM</SAMP>' generated vertices with a notation like this:
`<SAMP>VERTICES (w,8)</SAMP>'.
<DT><CODE>V(v1,<small>...</small>)</CODE>
<DD>Shorthand for `<SAMP>VERTICES</SAMP>'.
<DT><CODE>UV(u1,v1,<small>...</small>)</CODE>
<DD>If you use this keyword the polygon will be gouraud shaded and not
lightmapped. This keyword allows you to describe the uv coordinates
for the polygon with gouraud shading. Currently a gouraud shaded polygon
is limited to three vertices. This limitation will be removed in the
future. But for now it means that UV will be followed by six parameters (three
u,v coordinate sets).
<DT><CODE>UVA(u1,v1,a1,<small>...</small>)</CODE>
<DD>Similar to `<SAMP>UV</SAMP>' but uses another technique to describe the coordinates
using angle.
<DT><CODE>COLORS(r,g,b<small>...</small>)</CODE>
<DD>When using `<SAMP>UV</SAMP>' you can use this command to give colors (r,g,b) for
every vertex.
<DT><CODE>COLLDET(boolean)</CODE>
<DD>Enable/disable collision detection for this polygon. By default a normal
polygon will have collision detection enabled. If the polygon has a portal
then collision detection will be disabled unless the portal is a mirror in
which case it will be enabled again. But using `<SAMP>COLLDET</SAMP>' allows you to
override all this.
<DT><CODE>COSFACT(factor)</CODE>
<DD>The cosinus factor to use for lighting. The default is 0 which means
that the strength of the light falling on this polygon will depend
completely on the angle of the light and this polygon. This is the most
realistic setting but in some cases it doesn't look right. To completely
disable dependence on angle you can use 1. In between values are also
possible.
<DT><CODE>ALPHA(alpha)</CODE>
<DD>Using this you can set the alpha transparency factor of this polygon.
This is a value between 0 and 100.
<DT><CODE>MIXMODE(mode)</CODE>
<DD>With this you can control more blending options for the polygon.
One of `<SAMP>ADD</SAMP>', `<SAMP>ALPHA</SAMP>', `<SAMP>COPY</SAMP>', `<SAMP>KEYCOLOR</SAMP>',
`<SAMP>MULTIPLY2</SAMP>', `<SAMP>MULTIPLY</SAMP>', or `<SAMP>TRANSPARENT</SAMP>'.
<DT><CODE>LEN(scale)</CODE>
<DD>This is similar to the `<SAMP>TEXLEN</SAMP>' command in the part and also to the
`<SAMP>LEN</SAMP>' command in the texture definition but it is repeated here
as a short-hand for `<SAMP>TEXTURE (LEN (...))</SAMP>'.
<DT><CODE>PLANE(planeName)</CODE>
<DD>This is a shorthand for `<SAMP>TEXTURE (PLANE (...))</SAMP>'.
</DL>
<P>
A texture mapping specification (the `<SAMP>TEXTURE</SAMP>' keyword in a polygon)
has the following parameters:
</P><P>
<DL COMPACT>
<DT><CODE>ORIG(x,y,z)</CODE>
<DD>The origin for texture mapping (3D coord).
<DT><CODE>FIRST(x,y,z)</CODE>
<DD>The u-axis coordinate for texture mapping (3D coord).
<DT><CODE>SECOND(x,y,z)</CODE>
<DD>The v-axis coordinate for texture mapping (3D coord).
<DT><CODE>FIRST_LEN(scale)</CODE>
<DD>Scale along the u-axis.
<DT><CODE>SECOND_LEN(scale)</CODE>
<DD>Scale along the v-axis.
<DT><CODE>UVEC(x,y,z)</CODE>
<DD>Similar to `<SAMP>FIRST</SAMP>' with `<SAMP>FIRST_LEN</SAMP>' set to length
of vector (`<SAMP>FIRST</SAMP>'-`<SAMP>ORIG</SAMP>').
<DT><CODE>VVEC(x,y,z)</CODE>
<DD>Similar to `<SAMP>SECOND</SAMP>' with `<SAMP>SECOND_LEN</SAMP>' set to length
of vector (`<SAMP>SECOND</SAMP>'-`<SAMP>ORIG</SAMP>').
<DT><CODE>MATRIX(<small>...</small>)</CODE>
<DD>Most general way to describe texture mapping using the transformation matrix.
<DT><CODE>V(x,y,z)</CODE>
<DD>Most general way to describe texture mapping using the transformation vector.
<DT><CODE>LEN(scale)</CODE>
<DD>Use this as an easier way to describe texture scale (i.e. instead
of all the above).
<DT><CODE>UV(idx1,u1,v1,idx2,u2,v2,idx3,u3,v3)</CODE>
<DD>Directly specify u,v mapping coordinates for three given vertices.
<DT><CODE>UV_SHIFT(ushift,vshift)</CODE>
<DD>Given the mapping described above, further shift with the given
u,v shift value.
<DT><CODE>PLANE(planeName)</CODE>
<DD>Use the given texture mapping plane instead of all the above.
See how to define planes later.
</DL>
<P>
The `<SAMP>WARP</SAMP>' keyword as used in a polygon has the following keywords:
</P><P>
<DL COMPACT>
<DT><CODE>MATRIX(<small>...</small>)</CODE>
<DD>The matrix to use for space warping the portal.
<DT><CODE>V(x,y,z)</CODE>
<DD>The vector to use for space warping before the matrix is applied.
<DT><CODE>W(x,y,z)</CODE>
<DD>The vector to use for space warping after the matrix is applied. If not
given this is the same as `<SAMP>V</SAMP>'.
<DT><CODE>MIRROR()</CODE>
<DD>Short-hand to generate a mirror portal. This will automatically calculate
`<SAMP>MATRIX</SAMP>', `<SAMP>V</SAMP>', and `<SAMP>W</SAMP>'.
<DT><CODE>STATIC()</CODE>
<DD>When this item is given the portal destination will be static. This means
that the portal will point to the same location even if the portal polygon
moves. Otherwise the portal destination will move accordingly.
<DT><CODE>ZFILL()</CODE>
<DD>Set this option on a portal that floats in the middle of a room. It will
make sure that the Z-buffer is filled AFTER rendering all objects seen
through the portal.
<DT><CODE>CLIP()</CODE>
<DD>Set this option on a portal that points to the middle of a room. It will
make sure that all geometry in the destination sector is correctly clipped
to the portal so that it is not rendered in this sector.
</DL>
<P>
<A NAME="SEC540"></A>
<H4> Plane Add-on Loader </H4>
<!--docid::SEC540::-->
<P>
The thing loader plugin also supports an additional plugin which can load
plane definitions. A plane definition is used for texture mapping. It is
an optional (but very useful) feature which allows you to define texture
mapping planes for polygons that share the same texture mapping.
</P><P>
The following keywords are supported by the plane loader:
</P><P>
<DL COMPACT>
<DT><CODE>NAME(planeName)</CODE>
<DD>The name of this plane. This can then be used later in `<SAMP>PLANE</SAMP>' commands
for the texture or polygon.
<DT><CODE>ORIG(x,y,z)</CODE>
<DD>The origin for texture mapping (3D coord).
<DT><CODE>FIRST(x,y,z)</CODE>
<DD>The u-axis coordinate for texture mapping (3D coord).
<DT><CODE>SECOND(x,y,z)</CODE>
<DD>The v-axis coordinate for texture mapping (3D coord).
<DT><CODE>FIRST_LEN(scale)</CODE>
<DD>Scale along the u-axis.
<DT><CODE>SECOND_LEN(scale)</CODE>
<DD>Scale along the v-axis.
<DT><CODE>UVEC(x,y,z)</CODE>
<DD>Similar to `<SAMP>FIRST</SAMP>' with `<SAMP>FIRST_LEN</SAMP>' set to length
of vector (`<SAMP>FIRST</SAMP>'-`<SAMP>ORIG</SAMP>').
<DT><CODE>VVEC(x,y,z)</CODE>
<DD>Similar to `<SAMP>SECOND</SAMP>' with `<SAMP>SECOND_LEN</SAMP>' set to length
of vector (`<SAMP>SECOND</SAMP>'-`<SAMP>ORIG</SAMP>').
<DT><CODE>MATRIX(<small>...</small>)</CODE>
<DD>Most general way to describe texture mapping using the transformation matrix.
<DT><CODE>V(x,y,z)</CODE>
<DD>Most general way to describe texture mapping using the transformation vector.
</DL>
<P>
<A NAME="SEC541"></A>
<H4> Bezier Curve Add-on Loader </H4>
<!--docid::SEC541::-->
<P>
The thing loader also supports an additional plugin which can load curve
template definitions.
</P><P>
The following keywords are supported by the bezier curve loader:
</P><P>
<DL COMPACT>
<DT><CODE>NAME(curveTemplateName)</CODE>
<DD>The name of this curve template. This can then be used later in `<SAMP>CURVE</SAMP>'
commands in the thing part definition.
<DT><CODE>MATERIAL(materialName)</CODE>
<DD>The material to use for this curve.
<DT><CODE>VERTICES(v1,<small>...</small>)</CODE>
<DD>Nine vertex indices (the exact position and texture mapping coordinate will
be defined in the thing mesh object using `<SAMP>CURVECONTROL</SAMP>').
<DT><CODE>V(v1,<small>...</small>)</CODE>
<DD>Shorthand for `<SAMP>VERTICES</SAMP>'.
</DL>
<P>
<A NAME="MeshObject Metaball"></A>
<HR SIZE=1>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_217.html#SEC530"> < </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_219.html#SEC542"> > </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_196.html#SEC414"> << </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_201.html#SEC452"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_220.html#SEC543"> >> </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_285.html#SEC711">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
This document was generated
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>
|