In meinem Unity3d-Projekt möchte ich ein Mesh erstellen, das vier Sphären verbindet.Verbinden von Vector3 [] mit Mesh in Unity
Ich habe ein neues Quad erstellt und das Array transform.position
von meinen vier Kugeln zu GetComponent<MeshFilter>().mesh.vertecies
meines Quads zugewiesen.
Da das nicht funktioniert,
wie kann ich die globale Position eines Scheitels in Unity lesen oder schreiben?
meine Lösung (Werke)
GameObject quad;
Transform[] spheres;
//asign values and do other stuff
void UpdateMesh(){
Vector3[] newVerts = new Vector3[spheres.Length];
for(int i = 0; i < newVerts.Length; i++){
newVerts[i] = spheres[i].position - quad.transform.position;
}
quad.GetComponent<MeshFilter>().mesh.vertecies = newVerts;
}
Ich kann das jetzt nicht testen, aber ich denke, Sie sollten 'RecalculateBounds()' auf Ihrem Mesh nach dem Ändern der Scheitelpunkte aufrufen. –
Sie müssten etwas mehr Code anzeigen, aber eine Sache bereits, wenn Sie das Array erhalten und die Werte ändern, haben sie keine Auswirkungen auf das Original, da Unity das gesamte Vertex-Array in ein neues Array kopiert. Nach dem Modifizieren müssen Sie das Array also wieder mesh.vertices zuweisen. Dies liegt daran, dass das Mesh auf C++ - Seite gespeichert ist und keine Bridge erstellt wird. nur eine Kopie davon. – Everts
Eine erwähnenswerte Sache ist, dass Sie auch Partikelsysteme verwenden können. Das Partikelsystem bietet die Option, Knotenpunkte eines Netzes als Punkte zu verwenden. Ich bin mir nicht sicher, wie gut das zu deiner Situation passt, sag ich nur. –