Steph3D ::.
15/01/2004, 00h04
Je cherche à faire une orientation d'objet non pas vers une cible, mais 2 !
En gros je veux que mon objet pointe sur la cible A et que son vecteur X s'oriente toujours dû coter ou se trouve la cible B, en fesant donc une rotation de l'objet sur son axe Z
En gros, dans ma scene ci-jointe http://annur.free.fr/c4dfr/doublevector.zip la petite piramide devrait toujours pointer dû coter de la cible B au loin, même lorsque que la cible A passe au-dessus de l'objet, contrairement à ce que fait mon code actuel. Et là je ne vois pas comment gérer ça. :cry2:
Bon en plus clair et décodé :mrgreen: [ le vecteur Z pointe toujours vers le point A, alors que le vecteur X s'oriente au mieu vers le point B par rotation de l'axe Z ] :coup:
Voici mon code pour la brique Xpresso qui ne marche qu'à moitier car la 2e partie n'est pas bonne :oops: Mais bon il y a de l'idée :roll: :oops:
main()
{
var VectorObj = Viseur->GetMg()->GetV0();
var VectorA = CibleA->GetMg()->GetV0();
var VectorB = CibleB->GetMg()->GetV0();
// Orientation sur la cible A par l'axe X et Y
var MatriceA = new(Matrix);
MatriceA->SetV0(VectorObj);
MatriceA->SetV3(vnorm(VectorA - VectorObj));
var RotationA=MatriceA->GetHPB();
// Orientation sur la cible B de l'axe X par rotation sur l'axe Z
var MatriceB = new(Matrix);
MatriceB->SetV0(VectorObj);
MatriceB->SetV3(vnorm(VectorB - VectorObj));
var RotationB=MatriceB->GetHPB();
Rotation=RotationA;
Rotation.z=RotationB.x;
}
En gros je veux que mon objet pointe sur la cible A et que son vecteur X s'oriente toujours dû coter ou se trouve la cible B, en fesant donc une rotation de l'objet sur son axe Z
En gros, dans ma scene ci-jointe http://annur.free.fr/c4dfr/doublevector.zip la petite piramide devrait toujours pointer dû coter de la cible B au loin, même lorsque que la cible A passe au-dessus de l'objet, contrairement à ce que fait mon code actuel. Et là je ne vois pas comment gérer ça. :cry2:
Bon en plus clair et décodé :mrgreen: [ le vecteur Z pointe toujours vers le point A, alors que le vecteur X s'oriente au mieu vers le point B par rotation de l'axe Z ] :coup:
Voici mon code pour la brique Xpresso qui ne marche qu'à moitier car la 2e partie n'est pas bonne :oops: Mais bon il y a de l'idée :roll: :oops:
main()
{
var VectorObj = Viseur->GetMg()->GetV0();
var VectorA = CibleA->GetMg()->GetV0();
var VectorB = CibleB->GetMg()->GetV0();
// Orientation sur la cible A par l'axe X et Y
var MatriceA = new(Matrix);
MatriceA->SetV0(VectorObj);
MatriceA->SetV3(vnorm(VectorA - VectorObj));
var RotationA=MatriceA->GetHPB();
// Orientation sur la cible B de l'axe X par rotation sur l'axe Z
var MatriceB = new(Matrix);
MatriceB->SetV0(VectorObj);
MatriceB->SetV3(vnorm(VectorB - VectorObj));
var RotationB=MatriceB->GetHPB();
Rotation=RotationA;
Rotation.z=RotationB.x;
}