pXcon_set6djoint ( ENTITY* entity, var JointMotion[6], var JointDrive[6]): void*

Definiert das Verhalten eines Gelenks mit 6 Freiheitsgraden. Mit pXcon_add lassen sich solche Gelenke erstellen.

Parameter:

entity Registrierte Gelenk-Entity (PH_6DJOINT)
JointMotion[6]

JointMotion[0-2] definiert die linearen Freiheitsgrade (x, y, z) relativ zu den Gelenk-Achsen.
JointMotion[3-5] definiert die Winkelfreiheitsgrade (swing, slerp, twist) der Gelenk-Achsen.

Als Werte nehmen Sie diese Flags:
NX_D6JOINT_MOTION_LOCKED verriegelt die Achse (default).
NX_D6JOINT_MOTION_LIMITED
begrenzt die Achse auf die in pXcon_setparams2 angegebenen Limits.
NX_D6JOINT_MOTION_FREE
setzt die Achse frei.

JointDrive[6] JointDrive[0-2] definiert die 3 linearen Achsenmotoren. A8.12
JointDrive[3] definiert den Motor der swing-Achse.
JointDrive[4] definiert den Motor der slerp-Achse.
JointDrive[5] definiert den Motor der twist-Achse.


Setzen Sie 0 für eine Achse ohne Motor, oder eines der folgenden Flags:
NX_D6JOINT_DRIVE_POSITION für einen Stellmotor, der sich zu einer Zielposition bewegt.
NX_D6JOINT_DRIVE_VELOCITY
für einen Laufmotor, der sich mit einer Zielgeschwindigkeit bewegt.

Rückgabe:

NxD6Joint*-Pointer (für gg.f weitere Gelenkmanipulationen), wenn erfolgreich, ansonsten 0.

Geschwindigkeit:

Mittel

Bemerkungen:

Beispiel:

function main()
{
// set up a simple level  
  shadow_stencil = 1;
  d3d_antialias = 1;
  physX_open();
  level_load(""); // load an empty level
  pXent_settype(NULL,PH_STATIC,PH_PLANE); // create a static plane at groundlevel zero
  ENTITY* ground = ent_createterrain(NULL,NULL,32,32,1000);
  bmap_fill(bmap_for_entity(ground,0),COLOR_RED,100);  
  vec_set(camera.x,vector(-150,0,50));
  
// set up a chain of 6D joints 
  ENTITY* previous = NULL;
  int i;
  for(i=0; i<3; i++) 
  {
    you = ent_create(CUBE_MDL,vector(0,0,17+i*34),NULL);
    you.scale_z = 2;
set(you,SHADOW|CAST);
pXent_settype(you,PH_RIGID,PH_BOX);
// define a joint with a twist motor pXcon_add(PH_6DJOINT,you,previous,0); var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE }; var Drive[6] = { 0,0,0,0,0,NX_D6JOINT_DRIVE_VELOCITY }; pXcon_set6djoint(you,Motion,Drive); // rotate joint against the previous joint pXcon_setmotor(you,vector(20,0,0),0); previous = you; } }

Siehe auch:

Constraints, pXcon_add, pXcon_setparams1, pXcon_setparams2, pXcon_setmotor