Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Modificar vértices de mallas 3D

Iniciado por caza, 22 de Noviembre de 2014, 05:13:23 PM

« anterior - próximo »

caza

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!!

•Parra

#1
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.

caza

Pues lo que quiero hacer es un pequeño creador de terrenos, ósea agregar una malla plana y luego ir modificabdola.

Gracias.

•Parra

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.

caza

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!

•Parra

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?

Arles

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.

Gallo

#7
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






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.