Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 58,34€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Sign in to follow this  
gonzalitosk8

alguien me de una guia?

Recommended Posts

Hola comunidad de unitySpain, hace un año no me conectaba... cambio bastante todo!
quiero hacer una consulta, que me tiene pensante desde ayer.

tengo en mente instanciar objetos (por el momento un cubo y ya esta listo) y que estos puntos sea coordenadas para representar la posicion de un vertice.

al hacer click instancio un nuevo objeto en un punto del terreno, y la lista de objetos ( gameobject[]) aumenta.
la pregunta es.
como identifico los siguientes 4 int dentro de la lista de objetos?
- punto inicial.
- punto antiguo.
- punto anterior.
- punto actual

luego de esto, como asigno el vertice (mesh.vertice) y a esto le sumo triangulos (mesh.triangles) ?

basicamente cuando uno crea un plano generico, lo que hace es aderir los triangulos a los puntos de vertices verdad?
seria algo asi?

int[] triangles = {
	0, 2, 1, //cara frontal
	0, 3, 2,

en fin.
resumiendo, como muestra la imagen que dejo abajo.
quisiera que al haber 3 puntos, se cree una mesh (triangulo), unidos entre los puntos (punto inicial - punto anterior) / (punto anterior - punto actual) / (punto actual - punto inicial).
mientras mas puntos de referencia sumo, mas triangulos crearia.

alguna idea?

idea.png

Share this post


Link to post
Share on other sites

La verdad que por llegada, osea el orden de los puntos al array no creo que puedas simplemente crear un nuevo triangulo y adicionarlo al conjunto, pero lo que podés hacer es retriangular cada vez que asignas un punto nuevo, quizás no sea lo mejor pero bueno es una posibilidad. Yo utilizaba esto:

http://wiki.unity3d.com/index.php/Triangulator

Usa el Triangulator.cs no el código de ejemplo de arriba (PolygonTester). Yo lo modifiqué un poquito, pero funciona más o menos así: Triangulator tiene un array privado de puntos, vos cada vez que llamas a Triangulate lo que pasa es que en base a esos puntos te devuelve un array correspondiente a los índices o triangulos (como los llama Unity) es decir que te está dando tu nuevo arreglo de "triangles", esto se lo metés a tu Mesh.

Las modificaciones que yo le hice fue la de pasar como argumento los puntos de interés (en vez de tener ese array privado), nada de otro mundo,  aunque los estás pasando por valor,  si es que está medio lento (no se si impactará en algo) quizás los puedas pasar por "ref" (solamente se leen los puntos, por supuesto nunca se modifican, sino harías cagada :)  )

...

public function Triangulate( Vector2[] points ) {
		var indices:List.<int> = new List.<int>();
 
		var n:int = m_points.Count;
		if (n < 3)
			return indices.ToArray();
 
		var V:int[] = new int[n];
		                                      
       	...

Saludos

Share this post


Link to post
Share on other sites

si, habia llegado a ese link, pero no es lo que estoy buscando hacer...
seguramente es una cosa tan facil, que parece dificil... 
veremos si por la tarde realizo con exito lo que estoy buscando.. pero todos lo hacen de forma monotona, con coordenadas definidas, no personalizadas en tiempo real como busco.
luego te cuento como vengo!

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...