Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - PIM

#46
Programación gráfica / Re: Ayuda con el "skinning" de una malla
08 de Noviembre de 2012, 02:20:04 AM
Cita de: blau en 08 de Noviembre de 2012, 12:59:05 AM
respuesta rápida: SI

La GPU trabaja en paralelo (olvidate del bucle), esta diseñada para realizar cálculos vectoriales... y no hay necesidad de pasar los vértices de CPU a GPU en cada ciclo porque los vértices pueden estar en memoria de GPU y sólo es necesario pasarle a la GPU la matriz de bones, así que SI es más rápida que la CPU...;)

Muchas gracias por tu respuesta. Una duda tengo con respecto a lo que comentas. Si no hay que pasar por el  bucle de vértices, ¿Cómo "subo" los vértices al GPU y, cómo hago para calcular (usando la fórmula de skinning) la posicion final del vértice.

Muchas gracias por tu respuesta y por tu paciencia.
:P
#47
Programación gráfica / Re: Ayuda con el "skinning" de una malla
07 de Noviembre de 2012, 05:29:44 PM
Sí creo que tienen razón. La duda que tengo es que, ya teniendo todos los datos y sólo faltándome calcular la nueva posición del vértice con respecto al hueso, al pasar el bucle (for(i=0;i<numero_de_vertices;i++)) a la GPU este ¿será más rápido que en la CPU?

Muchas gracias por contestar.
;)
#48
Programación gráfica / Ayuda con el "skinning" de una malla
07 de Noviembre de 2012, 02:31:28 AM
Hola queridos amigos de esta estupenda web. Solicito su amable ayuda con un problema que tengo. Resulta que estoy probando con la técnica de la animación esqueletal, con el formato collada. Funciona bien pero el problema es el modo en que deben ser "unidos" los vértices a los huesos mediante la siguiente fórmula:

Vr += {[(v * BSM) * IBMi * JMi] * JW}

   i: Número de huesos que influencían a v.
   BSM: Bind-shape matrix
   IBMi: Inverse bind-pose del hueso i
   JMi:  matriz de tranformación de i
   JW: "Peso" que influencía un hueso i sobre un vértice v.

La cuestión es que como se darán cuenta, es necesario recorrer CADA UNO de los vértices que conforman el modelo para calcular la nueva posicion del vértice según se mueva el hueso. Esto significa que si el modelo está conformado por 10, 000 vértices el proceso será muy lento.  :grrr:

Aquí mi duda.

1.- ¿Existe otro método de "unir" los vértices a los huesos sin la necesidad de recorrer cada uno de los vértices?, no sé otra fórmula o algo por el estilo.

He logrado dibujar un modelo que tiene 2000 vértices a 60 cuadros por segundo, pero noto que se lleva gran parte de la capacidad del CPU. Por lo que incorporar otras cosas a la escena está difícil. Quiero destacar que he hecho la prueba en una pc con un procesador pentium III y una tarjeta NVIDIA GeForce 6200, No sé cómo funcionará en una máquina más nueva.

Me han comentado que lo mejor sería usar los vertex shaders (GLSL) para tener un rendimiento mucho mayor, sin embargo lo he dejado de lado, precisamente por si hay otro método que no requiera de la acelaración gŕafica de la GPU.

También tengo la duda si el "skinning" se hace así solo con Collada o también con otro tipo de archivos 3D que contengan animacion por huesos.

Les agradezco mucho sus respuestas.
;)






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.