vec_for_mesh (VECTOR*, ENTITY*, var number);
vec_to_mesh (VECTOR*, ENTITY*, var number);
Führt in Echtzeit eine Mesh-Verformung eines Modells oder einer Terrain-Entity
durch. vec_for_mesh setzt VECTOR auf
die
Mesh-Koordinaten
der angegebenen Vertexnummer; vec_to_mesh setzt den Vertex auf eine neue,
von VECTOR angegebene Mesh-Position.
Parameter:
VECTOR |
xyz-Mesh-Koordinate |
ENTITY* |
Entity-Pointer |
number |
Nummer des Mesh-Vertexes in der MED-Statuszeile |
Modifiziert:
VEKTOR* - wird durch vec_for_mesh auf die Vertex-Koordinate
gesetzt.
Geschwindigkeit:
Mittel
Bemerkungen:
- Diese Funktionen unterstützen keine Map-Entities, Sprites oder parzellioertes Terrain und sind durch ent_getvertex/ent_setvertex ersetzt, die für neue Projekte benutzt werden sollten.
- Die Modifikation des Meshes einer
bestimmten Entity betrifft alle Entities, die dieselbe Mesh verwenden.
- Nach dem
Verformen eines Mesh muss zum Anpassen des Shadings an das neue Mesh
ein ent_fixnormals() ausgeführt
werden. Zum Anpassen der Kollisionshülle an die neue Mesh könnte auch
ein c_updatehull() nötig
sein
- Es werden die Mesh-Koordinaten
des derzeit aktuellen Frames benutzt. Anders als Welt-Koordinaten, die
von vec_for_vertex() zurückgeliefert
werden, sind dies lokale Koordinaten
relativ zum Zentrum des Modells ohne Drehung und Frame-Interpolation.
- Beim Verformen von Terrain
kann lediglich die Höhe (z-Koordinate) eines Mesh-Vertex verändert
werden. Terrain darf nicht parzelliert sein.
- Mesh-Verformung wird nicht
automatisch von game_save() gespeichert. Wird dies gewünscht, speichern Sie
die Mesh-Koordinaten in einem Array.
Beispiel (lite-C):
function dent(ENTITY* ent,var num) // make a "dent" into a mesh
{
vec_for_mesh(temp,ent,num);
vec_scale(temp,0.9); // move the vertex inwards by 10%
vec_to_mesh(temp,ent,num);
you = ent;
ent_fixnormals(you,your.frame)
}
Siehe auch:
ent_vertices, ent_fixnormals, vec_for_vertex, vec_for_normal, vec_for_uv, vec_for_min, vec_for_max
► Aktuelle Version Online