Главная страница
    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-1201596769
студент
2008-01-29 11:52
2008.04.06
паскаль программа


15-1203524290
TwentyThird
2008-02-20 19:18
2008.04.06
Люксембург легализовал эвтаназию.


15-1203854812
Неважно
2008-02-24 15:06
2008.04.06
Как изменять формат звукового файла на хостинге?


2-1205260654
Chainic
2008-03-11 21:37
2008.04.06
Паскаль


15-1203392672
Slider007
2008-02-19 06:44
2008.04.06
С днем рождения ! 19 февраля 2008 вторник





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский