Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];

Вниз

Glscene скелетная анимация на шейдере   Найти похожие ветки 

 
Kav   (2007-01-15 17:17) [0]

Glscene скелетная анимация на шейдере, есть ли где примеры ?


 
Samarik   (2007-01-15 18:28) [1]

В каком смысле на шейдере?


 
Kav   (2007-01-15 19:04) [2]

чтобы анимация выполнялась с помощью вершинных шейдеров, в смысле разгружаем процессорное время перекладвая все на плечи видеокарты


 
Samarik   (2007-01-15 21:21) [3]

?


 
@!!ex ©   (2007-01-15 21:41) [4]


> Samarik   (15.01.07 21:21) [3]

Тоесть к вершинам матрица преобразования кости применяется на на уровне ЦПУ, а на уровне ГПУ.


 
Kav   (2007-01-15 23:30) [5]

в общем одним словом когда анимация реализована с помощью шейдеров можно моделек 300 анимировать без особы тормозов и  в каждой будет около 3000 полигонов


 
@!!ex ©   (2007-01-16 00:13) [6]

Ну дык в чем проблема то?


 
Баян   (2007-01-16 04:34) [7]

А разве это вообще возможно?
Ты где такое вычитал то?


 
grisme ©   (2007-01-16 08:40) [8]

так зачем привязываешь АНИМАЦИЮ и ШЕЙДЕРЫ. такого понятия там нет. ты просто будешь считывать данные об интерполяции с помощью CPU, а производить ВЕРШИННУЮ ТРАНСФОРМАЦИЮ(трансляцию точнее), исходя из вычисленной интерполяции.. примеров вроде много( gamedev.ru рулед )

поэтому как сказал @!!ex © в [6]


 
XProger ©   (2007-01-16 09:03) [9]

Kav,
В данном случае ты смотришь в область где GLScene тебе только враг...
uniform vec4 Matrix[32 * 3];

void main(void)
{
 vec4 Index  = gl_Color * 256.0;
 vec4 Weight = gl_MultiTexCoord1;
 Weight.z = 1.0 - (Weight.x + Weight.y);

 vec4 VMat[3];
 VMat[0] = vec4(0.0);
 VMat[1] = vec4(0.0);
 VMat[2] = vec4(0.0);
// skinning
 for (int i = 0; i < 3; i++)
 {
   int idx = int(Index[i]);
   VMat[0] += Matrix[idx + 0] * Weight[i];
   VMat[1] += Matrix[idx + 1] * Weight[i];
   VMat[2] += Matrix[idx + 2] * Weight[i];
 }

 vec3 Vertex = vec3(dot(VMat[0], gl_Vertex),
                    dot(VMat[1], gl_Vertex),
                    dot(VMat[2], gl_Vertex));
...
 gl_Position = gl_ModelViewProjectionMatrix * vec4(Vertex, 1.0);
 gl_FrontColor = vec4(1.0);
}

GLSL. Skinned Mesh анимация расчитанная на 3 кости влияющие на вершину. Веса костей нормировны находятся в двух текстурных координатах второго блока (GL_TEXTURE1_ARB). Вес третьей кости расчитывается как 1.0 - (s + t). Индексы всех трёх костей задаются цветом вершины (rgb). Массив матриц костей Matrix содержит в себе по 3 строки каждой из матриц (четвёртая = 0001 не нужна абсолютно) и расчитан на 32 кости.

Никаких разъяснений по поводу: "Что такое GLSL?", "Как расчитать трансформации кости?", "Как передать в шейдер матрицы?" давать не собираюсь. Для этого есть спецификация языка и учебники математики.

grisme, найдёшь хоть один пример на gamedev - получишь пирожок :)


 
Samarik   (2007-01-16 17:17) [10]


> Тоесть к вершинам матрица преобразования кости применяется
> на на уровне ЦПУ, а на уровне ГПУ.
>


А по русски можно?


 
@!!ex ©   (2007-01-16 17:21) [11]


> А по русски можно?

Что есть анимация?
Это перемещение и вращение кости.
Задается оно естественно в виде матрицы трансформации, куда загоняются эти углы и перемещение.

Как примернить анимацию на меш? Умножить каждую вершину на матрицу трансформации соответствующей кости.

Где это можно делать? На ЦПУ(Центральное Процессорное Устройство), а шейдеры позволяют освободить ЦПУ от этой лишней нагрузки и перенести вычисления на ГПУ(Графическое Процессорное Устройство), которое оптимизированно для вычисления чисел с плавающей точкой и комплекса этих чисел(вектора, матрицы)


 
Samarik   (2007-01-16 17:27) [12]

понял, но мне до этого ещё далеко, меня и эта анимация (корявая) пока устраивает, я больше md3 люблю, но он тупой!:)


 
Hero ©   (2007-01-17 11:34) [13]

я то думал что пазл в полном смысле, а оказывается там "элемент" не фигурный а квадратный.
А фигурный элемент , как в настоящем пазле слабо сделать?


 
@!!ex ©   (2007-01-17 11:39) [14]

Не слабо. :)
А написать в правильный топик?



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.006 c
15-1203875961
Cyrax
2008-02-24 20:59
2008.04.06
Где можно найти эту чёртову книгу в электронном варианте...


2-1205035977
Adios
2008-03-09 07:12
2008.04.06
как узнать имя файла шривта по названию шрифта


2-1205145670
AeRo
2008-03-10 13:41
2008.04.06
Как с помощью Rectangle рисовать ПРОЗРАЧНЫЕ прямоугольники?


15-1203509446
Rouse_
2008-02-20 15:10
2008.04.06
Microsoft открыла спецификации файловых форматов Office


15-1202899891
Nucer
2008-02-13 13:51
2008.04.06
Быстрый RSA 1024





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский