Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: caza en 22 de Noviembre de 2014, 05:13:23 PM

Título: Modificar vértices de mallas 3D
Publicado por: caza en 22 de Noviembre de 2014, 05:13:23 PM
Hola,

Tengo una duda...

Se puede manipular la forma de las mallas 3D, por ejemplo moviendo los vértices,
con c++ sin usar ninguna api?  Si es así me gustaría saber como puedo hacerlo.

Muchas gracias!!
Título: Re:Modificar vértices de mallas 3D
Publicado por: •Parra en 22 de Noviembre de 2014, 10:34:17 PM
Si se puede hacer pero dime exactamente que quieres hacer..

Osea, hablar de vertices es como hablar de matematicas, hay miles de problemas y soluciones posibles.. es un campo muy abierto.

Por ejemplo, yo en mi terreno hago exactamente eso. Utilizo un algoritmo llamado geomipmaps, y consigo de forma estatica y dinamica, transformar la malla para darle mayor nivel de detalle de forma progresiva (cuanto mas cerca del observador, mas vertices y mas detalle).

Otro ejemplo es lo que implementa assimp, que optimiza las mallas al cargarlas, dependiendo de las especificaciones.

Todo depende de lo que quieras hacer.

PD: Normalmente estas cosas son jodidas, te aviso de antemano.
Título: Re:Modificar vértices de mallas 3D
Publicado por: caza en 22 de Noviembre de 2014, 10:48:38 PM
Pues lo que quiero hacer es un pequeño creador de terrenos, ósea agregar una malla plana y luego ir modificabdola.

Gracias.
Título: Re:Modificar vértices de mallas 3D
Publicado por: •Parra en 23 de Noviembre de 2014, 03:21:51 PM
Para hundirlo o levantarlo?

http://en.m.wikipedia.org/wiki/Heightmap

Si me das mas info sobre lenguaje o tecnologia que usas, podre pasarte mas info o ejemplos.
Título: Re:Modificar vértices de mallas 3D
Publicado por: caza en 23 de Noviembre de 2014, 03:53:03 PM
Pues uso c++.

La cuestión es... Hay alguna manera (función) de modificar vértices desde c++ puro?

O tengo que aprender directX o alguno similar?

Gracias!
Título: Re:Modificar vértices de mallas 3D
Publicado por: •Parra en 23 de Noviembre de 2014, 04:00:53 PM
Eso es una pregunta muy extraña xD

Los vertices son estructuras de datos.. en cualquier lenguaje puedes modificar los datos, no?

Pero que sentido tiene modificarlo si no tienes un sistema de respresentacion como DirectX o OpenGL?
Título: Re:Modificar vértices de mallas 3D
Publicado por: Arles en 17 de Septiembre de 2015, 05:23:02 PM
Como acertadamente dice Parra, no tiene sentido si no hay algo que procese y represente un vértice. Creo que desde este punto de vista no tienes muy claro. Una API gráfica no es algo de lo que puedas prescindir cuando se trata de representar en pantalla un punto 2D, 3D o un téxel.

La API gráfica es la directa responsable de enviar los datos y mostrarlos mediante un dispositivo de salida, en este caso tu monitor.

Todo motor gráfico o de juegos que conozcas, usa por defecto alguna de las dos más importante APIS gráficas que hay en el mercado. Me refiero a OpenGL o a Direct3D.
Título: Re:Modificar vértices de mallas 3D
Publicado por: Gallo en 04 de Octubre de 2015, 09:17:04 PM
Si, de un modo u otro como comentan la malla la vas a querer pintar con alguna api, así que aunque tengas un array de vertices en c++ no te servirá de mucho modificarlo.

Por otro lado, te diré que para modificar una malla en tiempo real puedes hacerlo utilizando un vertex shader con GLSL/HLSL/Cg u otro lenguaje de shading según la API, por ejemplo interpolando entre dos mallas o basandote en algun atributo concreto y un valor de incremento de tiempo pasado al shader, o si prefieres hacerlo en C++ puedes obtener un puntero al buffer de la memoria gráica donde está guardada la malla y modificarla cual array en C, en OpenGL esto lo podrias hacer con glMapBuffer https://www.opengl.org/sdk/docs/man2/xhtml/glMapBuffer.xml