Class 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.
-
Mesh Objects are converted from Blender at scene load.
-
The Converter groups polygons by Material. This means they can be
sent to the renderer efficiently. A material holds:
-
The texture.
-
The Blender material.
-
The Tile properties
-
The face properties - (From the "Texture Face"
panel)
-
Transparency & z sorting
-
Light layer
-
Polygon shape (triangle/quad)
-
Game Object
-
Verticies will be split by face if necessary. Verticies can only
be shared between faces if:
-
They are at the same position
-
UV coordinates are the same
-
Their normals are the same (both polygons are "Set
Smooth")
-
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.getOwner()
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)
getMaterialName(matid)
Gets the name of the specified material.
-
- Parameters:
matid -
the specified material.
(type=integer)
- Returns:
-
the attached material name.
(type=string)
|
getNumMaterials()
Gets the number of materials associated with this object.
-
- Returns:
-
integer
|
getTextureName(matid)
Gets the name of the specified material's texture.
-
- Parameters:
matid -
the specified material
(type=integer)
- Returns:
-
the attached material's texture name.
(type=string)
|
getVertex(matid,
index)
Gets the specified vertex from the mesh object.
-
- Parameters:
matid -
the specified material
(type=integer)
index -
the index into the vertex array.
(type=integer)
- Returns:
-
a vertex object.
(type=KX_VertexProxy )
|
getVertexArrayLength(matid)
Gets the length of the vertex array associated with the specified
material.
There is one vertex array for each material.
-
- Parameters:
matid -
the specified material
(type=integer)
- Returns:
-
the number of verticies in the vertex array.
(type=integer)
|
reinstancePhysicsMesh()
Updates the physics system with the changed mesh.
A mesh must have only one material with collision flags, and have
all collision primitives in one vertex array (ie. < 65535 verts) and
be either a polytope or polyheder mesh. If you don't get a warning in
the console when the collision type is polytope, the mesh is suitable
for reinstance.
-
- Returns:
-
True if reinstance succeeded, False if it failed.
(type=boolean)
|