Voici un script C# permettant pour de déterminer les vecteurs positions (position globale) des sommets d'un cube avec un scale spécifique:
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//le but de ce script est donner la position globale des vertices(sommets) du cube quelle que soit sa transformation
//ce script est à appliquer sur le cube concerné
//il faut remplir la matrice 4x4 que par des 1
//appliquer ce script à un special_objet oblige de le scaler à 100 et de rien transformer sur ses enfants
//si l'objet ,sur lequel le comptage de sommets est établi, est parenté à un empty, appliquer ce script sur l'objet et non sur l'empty
//problème:pour special_objet, tous les sommets ne sont pas pris en compte malgré le nombre bon de sommets configuré
public class vertex_global_position : MonoBehaviour {
public GameObject objet,empty;
public Mesh mesh;
public int nombre_sommets;
List <GameObject> EmptySommetList;
int i;
public Matrix4x4 localToWorldMatrix ;
void Start()
{
//objet.AddComponent<MeshRenderer>();
// objet.AddComponent<MeshFilter>().mesh = mesh;
mesh = GetComponent < MeshFilter > (). mesh;
EmptySommetList = new List<GameObject>();
MeshFilter mf = objet.GetComponent<MeshFilter>();
Matrix4x4 localToWorld = transform.localToWorldMatrix;
for (i = 0; i < nombre_sommets; i++)
{
EmptySommetList.Add(empty);
EmptySommetList[i] = new GameObject("sommet" + i);
Vector3 world_Pt = transform.TransformPoint(mesh.vertices[i]);
EmptySommetList[i].transform.position =transform.TransformPoint(mesh.vertices[i]);
print("composante_x_sommet "+i+" :"+world_Pt.x+",composante_y_sommet "+i+" :"+world_Pt.y+",composante_z_sommet "+i+" :"+world_Pt.z);
}
}//fin Update()
}//fin class
Avec ce code,un empty est placé sur chaque sommet.
Ça fonctionne !
Mais si j''ai affaire à un objet plus complexe(par exemple une croix en 3 dimensions):
1)je ne suis plus sûr du nombre de sommets à entrer
2)si ce nombre dépasse le bon nombre de sommets,,il y aura des doublons et des sommets en trop
Comment dois-je modifier le code pour déterminer avec précision les postions globales et le nombre de sommets d'un objet 3D plus complexe?
merci de votre aide