Pour les meshes avec un nom "" je verifierai mais il me semble bien que c'est de la que venait le plantage. Je vous confirme ca rapidement.
Pour raydium ode_CollideCallback je verifie le code, je ne l'avais pas compris comme cela.
Mais, voici d'autres questions ...
Code:
if(type==RAYDIUM_ODE_STANDARD)
{
raydium_ode_element[i].body=dBodyCreate(raydium_ode_world);
dMassSetBox(&m,1e-9,tx,ty,tz);
dMassAdjust(&m,mass);
dBodySetMass(raydium_ode_element[i].body,&m);
dBodySetData(raydium_ode_element[i].body,&raydium_ode_element[i]);
// dBodySetAutoDisableSF1(raydium_ode_element[i].body,1);
}
else raydium_ode_element[i].body=0;
raydium_ode_element[i].geom=dCreateRay(0,100);
raydium_ode_element[i].state=type;
dGeomSetBody(raydium_ode_element[i].geom,raydium_ode_element[i].body);
dGeomSetData(raydium_ode_element[i].geom,&raydium_ode_element[i]);
dSpaceAdd(raydium_ode_object[group].group,raydium_ode_element[i].geom);
raydium_ode_element_material(i,RAYDIUM_ODE_MATERIAL_DEFAULT);
raydium_ode_element_slip(i,RAYDIUM_ODE_SLIP_DEFAULT);
raydium_ode_element[i].distant=raydium_ode_network_distant_create;
raydium_ode_network_distant_create=0;
if(!raydium_ode_network_next_local_only)
raydium_ode_network_element_new(i);
raydium_ode_network_next_local_only=0;
return i;
C'est le code utilisé dans la fonction de creation de ray
Je n'ai pas fais grand chose si ce n'est creer un ray a la place d'une box
Maitenant pour placer mon ray senser representer un capteur de distance
Code:
a=raydium_ode_object_find("BUGGY");
// raydium_ode_name_auto("tel_us",name);
raydium_ode_object_ray_add("tel_us",a,0.001,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STANDARD,0,"crate.tri");
raydium_ode_element_move_name_3f("tel_us",pos[0],pos[1],pos[2]+0.5);
raydium_ode_element_rotate_name_3f("tel_us",0,-3.1415f/2.0,0);
raydium_ode_joint_attach_hinge_name("pivoter","tel_us","buggy_corps",pos[0],pos[1],pos[2],RAYDIUM_ODE_JOINT_AXE_Z);
raydium_ode_joint_hinge_limits_name("pivoter",-2,2);
mon capteur je voudrais l'orienter suivant un axe x ou y mais pas z
Surtout pas Z !!!
Pour afficher mon capteur
Code:
glLineWidth(1.f);
glBegin(GL_LINES);
dReal pos[3],ang[3];
dVector3 origin,dir;
dGeomRayGet (raydium_ode_element[a].geom,origin,dir);
glVertex3f(0,0,0);
glVertex3f(dir[0]*3,dir[1]*3,dir[2]*3);
glEnd();
Bon j'avoue j'y comprends pas grand chose en opengl.
Malheureusement mon ray est toujours mais allors toujours affiché suivant Z, sauf si je met une roquette dans la voiture
de plus
Code:
dGeomRayGetLength (raydium_ode_element[a].geom)
me renvoie toujours la meme valeur de distance.
Je commence a etre un peu perdu.
Est ce mon affichage opengl qui n'est pas bon ?
Quelle est la version Ode sous jascente, en effet j'ai l'appli qui tourne sous ode / drawstuff
meme en appelant les fonction ode directement comme dans mon autre appli le vecteur directeur du ray reste sur 0,0,1 ...
et la je seche.
Dernier point:
Existe t'il un moyen simple de comiler l'appli sous vc++, en effet je suis principalement limité par les possbilités de debug de gdb, je voulais verifier que l'appel des fonction ode se faisait avec les meme arguments dans les deux applis mais je n'y arrive.
Merci pour ton attention.
Si le ray marche, je fais une demonstration à la fete de la science, sinon ce sera l'ancien rendu, dommage
(
A+
Jacques