J'ai cette obsession de faire des animations de personnages en temps réel basées sur des cinématiques inverses et des cibles de morphing.Comment utiliser les shaders dans OpenGL ES avec iPhone SDK
J'ai trouvé le bon chemin avec Animata, un programme d'animation open-source (basé sur FLTK, malheureusement) de type IK. J'ai même porté leur code de rendu sur une variété de plateformes (Java/Processing et iPhone) alt video http://ats.vimeo.com/612/732/61273232_100.jpgvideo of Animata renderers
Cependant, je n'ai jamais été convaincu que leur code est particulièrement optimisé et il semble qu'il y ait beaucoup de simulation sur le CPU rendre chaque image, ce qui me semble un peu inutile.
Je suis maintenant démarrer un projet de faire une application sur l'iPad qui repose en grande partie sur l'animation de personnages en temps réel, et feuilletant la documentation iOS j'ai découvert un extrait de code pour un « deux os shaders écorcher »
// A vertex shader that efficiently implements two bone skinning.
attribute vec4 a_position;
attribute float a_joint1, a_joint2;
attribute float a_weight1, a_weight2;
uniform mat4 u_skinningMatrix[JOINT_COUNT];
uniform mat4 u_modelViewProjectionMatrix;
void main(void)
{
vec4 p0 = u_skinningMatrix[int(a_joint1)] * a_position;
vec4 p1 = u_skinningMatrix[int(a_joint2)] * a_position;
vec4 p = p0 * a_weight1 + p1 * a_weight2;
gl_Position = u_modelViewProjectionMatrix * p;
}
Est-ce que quelqu'un sait comment j'utiliserais un tel extrait? Il est présenté avec très peu de contexte. Je pense que c'est ce que je dois faire pour faire l'animation sur os de la chaîne IK que je veux faire, mais sur le GPU.
Il est également intéressant de regarder OpenGL Shader Builder, inclus avec les outils de développement Apple. Notez que l'ajout d'une variable uniforme ne la fera pas apparaître comme quelque chose avec lequel vous pouvez jouer jusqu'à ce que vous ayez fait référence à cette variable dans votre code de shader (que l'on me gratte la tête depuis trop longtemps). La plupart des exemples de Joe peuvent être testés dans le Shader Builder, donc vous n'avez pas besoin d'écrire tout ce C pour comprendre les principes. –