Преобразование вектора с матрицей - PullRequest
1 голос
/ 20 января 2010

Я работаю над кодом для создания программного скинера (анимация костей / скинов), и я нахожусь на этапе «оптимизации» (скиннер работает довольно хорошо, и обрабатывает 4900 треугольников с 22 костями за 1,09 мс на Core Duo 2 ГГц (записная книжка). Что мне нужно знать, это:

1) Может ли кто-нибудь показать мне способ (возможно, с псевдокодом) преобразовать float3 (массив из 3 float) (представляющий координату) в матрицу float4x3?

2) Может ли кто-нибудь показать мне способ (возможно, с псевдокодом) преобразовать float3 (массив из 3 float) (представляющий нормаль) в матрицу float3x3?

Я спрашиваю об этом, поскольку знаю, что в процессе создания скинов вы можете избежать использования части матрицы без каких-либо изменений в процессе анимации. (Таким образом, чтобы восстановить некоторое время разработки)

Спасибо!

1 Ответ

1 голос
/ 20 января 2010

Оптимизация векторных / матричных операций с помощью математического сокращения возможна, но сложна. Вы можете найти информацию по теме здесь , здесь и здесь .

Теперь, это может быть не совсем то, что вы ищете, но ...

Вы можете использовать графический процессор (процессор видеокарты) для значительного увеличения производительности вычислений векторных / матричных операций. Многие операции могут быть увеличены на несколько порядков благодаря использованию SIMD обработка доступна на GPU.

Для разработчиков на C # доступны две достаточно хорошие библиотеки для программирования GPGPU:

...