2010-01-20 3 views
1

Je travaille sur un code pour faire un logiciel skinner (animation os/peau), et je suis en phase d'optimisation (le skinner fonctionne plutôt bien et maquille un maillage de 4900 triangles avec 22 os en 1.09 ms sur un Core Duo 2 Ghz (cahier)). Ce que je dois savoir est:Transformation de vecteur avec matrice

1) Quelqu'un peut-il me montrer le chemin (peut-être avec le pseudo-code) pour transformer un float3 (tableau de 3 flottant) (représentant une coordonnée) contre une matrice float4x3?

2) Quelqu'un peut-il me montrer le chemin (peut-être avec le pseudo-code) pour transformer un float3 (array of 3 float) (représentant un normal) contre une matrice float3x3?

Je demande cela car je sais que dans le processus de skinning vous pouvez éviter d'utiliser une partie de la matrice sans obtenir aucun changement dans le processus d'animation. (Donc, pour récupérer un peu de temps d'élaboration)

Merci!

+0

Je viens de trouver cette question. J'ai posté un semblable ici qui a quelques réponses plus détaillées des mécanismes impliqués avec un certain code C-like: http://stackoverflow.com/questions/2944670/ –

Répondre

1

L'optimisation des opérations vectorielles/matricielles par réduction mathématique est possible, mais difficile. Vous pouvez trouver des informations sur le sujet here, here et here.

Maintenant, ce ne peut pas être tout à fait ce que vous cherchez, mais ...

Vous pouvez utiliser le GPU de la machine (graphique du processeur de la carte) pour augmenter considérablement les performances de calcul du vecteur/opérations matricielles. De nombreuses opérations peuvent être augmentées de plusieurs ordres de grandeur en profitant du traitement SIMD disponible sur le GPU.

Il y a deux raisonnablement bonnes bibliothèques disponibles pour les développeurs C# pour la programmation GPGPU:

+0

L'utilisation du GPU est hors de question. Ou bien, j'ai déjà un skinner Hardware, ça marche bien aussi, mais je dois fournir un fallback logiciel pour les anciennes cartes (où le GPU est BEAUCOUP plus lent que le CPU (comme la carte Intel X3100))/calcul de collision sur DX9 périphériques qui ne prennent pas en charge la fonctionnalité Stream Out (pour calculer les structures de délimitation). Je vais quand même jeter un coup d'œil aux liens qui attendent une autre réponse, peut-être avec un pseudo-code. Merci quand même – feal87

+0

Notez que MS Accelerator n'est pas encore commercialisé. –

Questions connexes