Module GameTypes :: Class KX_MeshProxy
[hide private]
[frames] | no frames]

Class KX_MeshProxy

source code

PyObjectPlus --+        
               |        
          CValue --+    
                   |    
         SCA_IObject --+
                       |
                      KX_MeshProxy

A mesh object.

You can only change the vertex properties of a mesh object, not the mesh topology.

To use mesh objects effectively, you should know a bit about how the game engine handles them.
  1. Mesh Objects are converted from Blender at scene load.
  2. The Converter groups polygons by Material. This means they can be sent to the renderer efficiently. A material holds:
    1. The texture.
    2. The Blender material.
    3. The Tile properties
    4. The face properties - (From the "Texture Face" panel)
    5. Transparency & z sorting
    6. Light layer
    7. Polygon shape (triangle/quad)
    8. Game Object
  3. Verticies will be split by face if necessary. Verticies can only be shared between faces if:
    1. They are at the same position
    2. UV coordinates are the same
    3. Their normals are the same (both polygons are "Set Smooth")
    4. They are the same colour
    For example: a cube has 24 verticies: 6 faces with 4 verticies per face.
The correct method of iterating over every KX_VertexProxy in a game object:
       import GameLogic
       
       co = GameLogic.getCurrentController()
       obj = co.owner
       
       m_i = 0
       mesh = obj.getMesh(m_i) # There can be more than one mesh...
       while mesh != None:
               for mat in range(mesh.getNumMaterials()):
                       for v_index in range(mesh.getVertexArrayLength(mat)):
                               vertex = mesh.getVertex(mat, v_index)
                               # Do something with vertex here...
                               # ... eg: colour the vertex red.
                               vertex.colour = [1.0, 0.0, 0.0, 1.0]
               m_i += 1
               mesh = obj.getMesh(m_i)


Instance Methods [hide private]
integer
getNumMaterials()
Gets the number of materials associated with this object.
source code
string
getMaterialName(matid)
Gets the name of the specified material.
source code
string
getTextureName(matid)
Gets the name of the specified material's texture.
source code
integer
getVertexArrayLength(matid)
Gets the length of the vertex array associated with the specified material.
source code
KX_VertexProxy
getVertex(matid, index)
Gets the specified vertex from the mesh object.
source code
integer
getNumPolygons()
Returns the number of polygon in the mesh.
source code
KX_PolyProxy
getPolygon(index)
Gets the specified polygon from the mesh.
source code
    Deprecated
    Inherited from CValue
string
getName()
Returns the name of the CValue.
source code
    Inherited from PyObjectPlus
bool
isA(game_type)
Check if this is a type or a subtype game_type.
source code
Instance Variables [hide private]
list of KX_BlenderMaterial or KX_PolygonMaterial types materials
integer numMaterials
integer numPolygons
    Inherited from CValue
string name
The name of this CValue derived object (read-only).
    Inherited from PyObjectPlus
bool invalid
Test if the object has been freed by the game engine and is no longer valid.
Method Details [hide private]

getMaterialName(matid)

source code 
Gets the name of the specified material.
Parameters:
  • matid (integer) - the specified material.
Returns: string
the attached material name.

getTextureName(matid)

source code 
Gets the name of the specified material's texture.
Parameters:
  • matid (integer) - the specified material
Returns: string
the attached material's texture name.

getVertexArrayLength(matid)

source code 

Gets the length of the vertex array associated with the specified material.

There is one vertex array for each material.
Parameters:
  • matid (integer) - the specified material
Returns: integer
the number of verticies in the vertex array.

getVertex(matid, index)

source code 
Gets the specified vertex from the mesh object.
Parameters:
  • matid (integer) - the specified material
  • index (integer) - the index into the vertex array.
Returns: KX_VertexProxy
a vertex object.

getPolygon(index)

source code 
Gets the specified polygon from the mesh.
Parameters:
  • index (integer) - polygon number
Returns: KX_PolyProxy
a polygon object.