Difference between revisions of "Mesh"

From BZFlagWiki
Jump to: navigation, search
(drawInfo)
(fixed some typos, made the properties section more helpful and less redundant)
Line 1: Line 1:
A mesh is a [[BZW]] map object that defines an arbitrary three dimensional shape. A mesh is defined as a series of faces containing 3 or more points in three dimensional space ( or a vertex ).
+
A mesh is a [[BZW]] map object that defines an arbitrary three dimensional shape. A mesh is defined as a series of faces containing 3 or more points(vertices) in three dimensional space.
  
 
==Code==
 
==Code==
Line 76: Line 76:
 
<properties>
 
<properties>
 
name=The name of the mesh
 
name=The name of the mesh
vertex=Add a vertex to the mesh (repeatable); this is a 'corner' of your mesh - a point where faces connect.
+
vertex= this is a 'corner' of your mesh - a point where faces connect. (at least required)
normal=Add a normal to the mesh  (repeatable)
+
normal= a unit vector describing the direction light will reflect off the object
texcoord=Add a texture coordinate (repeatable); this is used for mapping textures onto complicated meshes.
+
texcoord= this is used for mapping textures onto the mesh.  This will link a point of the 2-Dimensional texture to a vertex on the 3-Dimensional object.  (0,0) refers to the lower left corner of the texture, (1,1) refers to the top right.  Textures are defined in the [[material]] object.
phydrv=Assign a physics driver to the entire mesh.
+
inside= an arbitrary vertex placed on the inside of the mesh object.  This keeps tanks from driving or spawning inside the object.
smoothbounce=Ricochets use normals.
+
phydrv=Assign a physics driver as defined in the [[physics]] object.
 +
smoothbounce=shot will ricochet from the face in the same direction as the defined normal.
 
noclusters=Render each face individually.
 
noclusters=Render each face individually.
shift=repeatable
+
shift=places the mesh using <x y z> coordinates
scale=repeatable
+
scale=resizes the mesh along the x, y, or z axis
 
shear=repeatable
 
shear=repeatable
spin=repeatable
+
spin=spins the mesh <angle> number of degrees, <n> number of rotations along one or more of the x, y, or z axiis
matref=Assgn a material to all below faces.
+
matref=Assign a [[material]] to all below faces.
face=Start a face (repeatable), see below:
+
face=Start a face (required), see below:
 
</properties>
 
</properties>
 
Valid parameters within the face sub-object:
 
Valid parameters within the face sub-object:
 
<properties>
 
<properties>
verticies=Numbered list of verticies for this face, requires at least three.
+
vertices=Numbered list of vertices for this face. (requires at least three)
 
normals=Numbered list of normals for this face.
 
normals=Numbered list of normals for this face.
 
texcoords=Numbered list of texture coordinates for this face.
 
texcoords=Numbered list of texture coordinates for this face.
phydrv=Assign a physics driver to this face only.
+
phydrv=Assign a [[Physics|physics driver]] to this face only.
smoothbounce'''
+
smoothbounce=use normals to determine shot ricochets for this face.
 
noclusters'''
 
noclusters'''
 
drivethrough=Tanks can drive through this face.
 
drivethrough=Tanks can drive through this face.
 
shootthrough=Tanks can shoot through this face.
 
shootthrough=Tanks can shoot through this face.
 
passable=Tanks can both shoot and drive through this face
 
passable=Tanks can both shoot and drive through this face
matref=Assign a material to this face.
+
matref=Assign a [[material]] to this face.
endface''' End this face.
+
 
</properties>
 
</properties>
 
Meshes have full support for [[Material]] (wherein custom textures can be defined) and [[Physics Drivers]].
 
Meshes have full support for [[Material]] (wherein custom textures can be defined) and [[Physics Drivers]].
  
==drawInfo==
+
==DrawInfo==
 
[[DrawInfo]] can be added to the mesh object to increase rendering efficiency, allowing the designer to specify which details will be seen from certain distances.  It can also be used to rotate a mesh object, though tanks can not interact with the moving object.
 
[[DrawInfo]] can be added to the mesh object to increase rendering efficiency, allowing the designer to specify which details will be seen from certain distances.  It can also be used to rotate a mesh object, though tanks can not interact with the moving object.
  

Revision as of 22:50, 15 September 2007

A mesh is a BZW map object that defines an arbitrary three dimensional shape. A mesh is defined as a series of faces containing 3 or more points(vertices) in three dimensional space.

Code

The code for a mesh object is as follows, this is only an example

mesh
 name example_mesh
 # Material properties applied to a mesh apply to all faces
 # that follow the setting. Mesh faces will alter their own
 # properties without affecting the state of the mesh properties.
 # The same pattern is used to apply physics drivers.
 inside 5.5 4.5 1.2 # add an inside point (repeatable) 
 outside 0 0 1000 # add an outside point (repeatable) 
 vertex 100 200 300 # add a vertex (repeatable) 
 normal 1.0 0 0 # add a normal (repeatable) 
 texcoord 0.1 0.75 # add a texture coordinate (repeatable) 
 shift 0 0 0 # (repeatable) 
 scale 1 1 1 # (repeatable) 
 shear 0 0 0 # (repeatable) 
 spin angle nx ny nz # (repeatable) 
 phydrv example_phydrv # assign a physics driver 
 smoothbounce # ricochets use normals 
 noclusters # render each mesh face individually 
            # (this can be useful for occluders) 
 face # start a face (repeatable) 
      # faces must be convex polygons 
   vertices 1 4 0 3 5 # list of vertices (requires at least three) 
   normals 2 6 0 4 7 # list of normals (optional) 
   texcoords 0 3 2 4 9 # list of texture coordinates (optional) 
   phydrv example_phydrv # assign a physics driver 
   smoothbounce 
   noclusters 
   drivethrough 
   shootthrough 
   passable 
   material 
 endface # end the face 
 #
 #  This next element can be added to increase the rendering speed
 #  of the mesh object. If the client is capable of using this data,
 #  then it is used to draw the mesh instead of the face  information.
 #
 drawInfo
   dlist		      # display list for all material sets
   decorative		      # older clients with not see this mesh
   angvel <degrees/sec>       # rotation about initial Z axis
   extents <minX> <minY> <minZ> <maxX> <maxY> <maxZ>
   sphere <x> <y> <z> <radiusSquared>
   corner <v> <n> <t>	      (repeatable)
   vertex 0.0 0.0 0.0	      (repeatable)
   normal 0.0 0.0 0.0	      (repeatable)
   texcoord 0.0 0.0	      (repeatable)
   lod			      (repeatable)
     lengthPerPixel <value>
     matref <name>	      (repeatable)
       dlist		      # display list for this material set
       sphere <x> <y> <z> <radiusSquared>
       points	 0	      (repeatable)
       lines	 0 1	      (repeatable)
       lineloop  0 1	      (repeatable)
       linestrip 0 1	      (repeatable)
       tris	 0 1 2	      (repeatable)
       tristrip  0 1 2	      (repeatable)
       trifan	 0 1 2	      (repeatable)
       quads	 0 1 2 3      (repeatable)
       quadstrip 0 1 2 3      (repeatable)
       polygon	 0 1 2	      (repeatable)
     end  # matref
   end	  # lod
 end	  # drawInfo
end	  # mesh

Valid parameters for a mesh are

name The name of the mesh
vertex this is a 'corner' of your mesh - a point where faces connect. (at least required)
normal a unit vector describing the direction light will reflect off the object
texcoord this is used for mapping textures onto the mesh. This will link a point of the 2-Dimensional texture to a vertex on the 3-Dimensional object. (0,0) refers to the lower left corner of the texture, (1,1) refers to the top right. Textures are defined in the material object.
inside an arbitrary vertex placed on the inside of the mesh object. This keeps tanks from driving or spawning inside the object.
phydrv Assign a physics driver as defined in the physics object.
smoothbounce shot will ricochet from the face in the same direction as the defined normal.
noclusters Render each face individually.
shift places the mesh using <x y z> coordinates
scale resizes the mesh along the x, y, or z axis
shear repeatable
spin spins the mesh <angle> number of degrees, <n> number of rotations along one or more of the x, y, or z axiis
matref Assign a material to all below faces.
face Start a face (required), see below:

Valid parameters within the face sub-object:

vertices Numbered list of vertices for this face. (requires at least three)
normals Numbered list of normals for this face.
texcoords Numbered list of texture coordinates for this face.
phydrv Assign a physics driver to this face only.
smoothbounce use normals to determine shot ricochets for this face.
drivethrough Tanks can drive through this face.
shootthrough Tanks can shoot through this face.
passable Tanks can both shoot and drive through this face
matref Assign a material to this face.

Meshes have full support for Material (wherein custom textures can be defined) and Physics Drivers.

DrawInfo

DrawInfo can be added to the mesh object to increase rendering efficiency, allowing the designer to specify which details will be seen from certain distances. It can also be used to rotate a mesh object, though tanks can not interact with the moving object.

Appearance

The appearance of a mesh will vary greatly as by its very nature it can be defined to look like anything.

Editor Support

The mesh object is supported by the BZWTools blender plugin, the Wings3D Exporter or hand coding.

History

The Mesh object was added with the v2.0.0 release of BZFlag.