![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скелетная анимация [Delphi, Windows]
Старик © (2005-10-04 06:26:00)Привет кодеры
Кто-нибудь может поделиться сорцами склетеной анимации под OpenGL на языке C++/Delphi? А то уж замучался совсем!
ЗЫ: ГЛ-Сцену не предлагать - там все слишком завязано под их систему.
Kavi (2005-12-02 19:24:00) [1]Стоп три кости это аппаратная анимация а indexed не аппаратнаю что-ли так выходит, три кости у меня без проблем работает, только если по кускам модель резать как-то не хорошо выходит больше придется вызывать drawprimitive больше тормозов, да и еще наверно много глюков повалит
Sapersky (2005-12-02 18:44:00) [2]Стало быть, не знают, раз молчат - вряд ли только из вредности :)
Я вот тоже не знаю, но скажу :)
Во-первых, следи, чтобы описание FVF соответствовало реальной структуре.
Ещё, такое впечатление, что у тебя все виды анимаций перемешаны. Попробуй для начала без indexed vertex blending. То, что без него можно всего 3 кости - это вряд ли; я так понимаю - за один вызов можно отрендерить фрагмент модели с 3 костями. Всего костей, допустим, штук 30 - значит, рисуем модель за 10 циклов. На высокополигональных моделях должно быть быстрее, чем блокировка буфера.
Кстати, в примере из SDK, насколько помню, обычная аппаратная анимация работала быстрее indexed. Хотя, может, это у меня на старой карте (GF2) indexed толком не поддерживается, поэтому и тормозит.
Kavi (2005-12-02 18:15:00) [3]Неужели никто не знает, подскажите пожалуйста!!!!
Kavi (2005-12-01 19:11:00) [4]для каждого кадра вручную просчитывается положение модели и загоняется в буфер- это я уже делал очень медленно все это каждый раз запирать вершинный буфер
Sapersky (2005-12-01 14:52:00) [5]Если "вообще без панятия что здесь указывать" и SDK не помогает - лучше для начала разобраться с софтверной анимацией из примера c DelphiGFX (т.е. для каждого кадра вручную просчитывается положение модели и загоняется в буфер). Чтобы понять как вообще работает скелетная анимация.
По SDK это понять действительно трудно, т.к. там описывается аппаратная анимация. Что-то засунул на вход, что-то на выходе получилось. Как получилось - фиг знает :) А в указанном примере все преобразования можно отследить по исходнику.
Kavi (2005-12-01 12:19:00) [6]Не понимаю потому-что не работает вот и все у меня хоть ход мыслей правилен или ошибка где-то есть.
П7 (2005-12-01 10:13:00) [7]Почему все понимают, а ты не понимаешь?
Kavi (2005-12-01 09:12:00) [8]delphigfx что-ли я об этом знаю есть исходник на opengl и directx так капался я вних ни сторочки не нашел на ответ, а доводы свои напишу по скелетной анимации
вершины у меня такие
type
TCUSTOMVERTEX = packed record
X, Y, Z : Single;//координаты
k1,k2,k3:Single;///вес костей
matrixIndicese:dword;//индексы костей
//nBone1,nBone2,nBone3,nBone4:byte; //или так сам не знаю
nX, nY, nZ : Single; ///нормали
Color : DWORD;
U, V : Single;////текстурные координаты
end;
const
D3DFVF_CUSTOMVERTEX =D3DFVF_XYZB4 or D3DFVF_LASTBETA_UBYTE4 or D3DFVF_NORMAL or D3DFVF_TEX1 or D3DFVF_DIFFUSE;
////.. тутрисую
SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, dword(TRUE));
SetRenderState(D3DRS_VERTEXBLEND,D3DVBF_1WEIGHTS) ;//вообще без //панятия что здесь указывать,
SetRotateXMatrix(matRotateX,KartaOb[i2][4]);
SetRotateyMatrix(matRotateY,KartaOb[i2][5]);
SetRotatezMatrix(matRotatez,KartaOb[i2][6]);
SetTranslateMatrix(matTranslate,KartaOb[i2][1] ,KartaOb[i2][2],KartaOb[i2][3]);
SetTransform(D3DTS_WORLDMATRIX(nomkost),MatrixMul(matTranslate,MatrixMul( MatrixMul( matRotateY,matRotateX),matRotatez)));
а при заполнении вершинного буфера указываю вес первой кости Vertices.x := Avertices[i][j][0];
Vertices.y := Avertices[i][j][1];
Vertices.z := Avertices[i][j][2];
Vertices.k1:=1;
Vertices.matrixIndicese :=2;
и не могу я управлять этой кость индексом только при нуле nomkost:=1
D3DTS_WORLDMATRIX(nomkost),
начинают перемещаться но не отвеса кости а просто как по матрице трансвормации простой, и всегда почемуто у меня кусок объекта тянется куда-то вверх в данном случае руки а именно когда указываю SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, dword(TRUE));
XProger (2005-12-01 06:53:00) [9]Kavi, я тебя про примеры из официального SDK спрашивал ;)
П7 (2005-12-01 02:19:00) [10]Не нужно склеивать - подумай, зарисуй, пойми, как всё это должно работать - и напиши.
Это раз. Два - поискать исходники самостоятельно не мог? Я вот с ходу могу назвать тебе один ресурс, но не назову. Намекну - ты от него в 1 клике! (:
Kavi (2005-12-01 00:24:00) [11]Да я уже неделю круглые сутки только этим и занимаюсь а исходник спрашиваю потому-что уже начитался статей в которых видишь все какими-то кусками начинаешь что-то склеивать ничего не работает
П7 (2005-12-01 00:19:00) [12]Ну так раз самомуинтересно, то почему бы самому не попробовать разобраться? А то взяли моду, блин, чуть что не получается - тут же рвуться на форум с криками "Дайте мне исходник!"
Kavi (2005-12-01 00:03:00) [13]Почему все какой-то злой умысел видят ну может и не 256 а 255 костей у меня только три кости получилось , да кому игра вообще будет нужна написанная одним программистом с кривыми набросками моделей я об этом даже не думаю, просто самому интересно.
П7 (2005-11-30 23:19:00) [14]
> Kavi (30.11.05 21:01) [10]
А 255 костей, значит, уже научился делать? Исходнички ему подавай. Может давай я за тебя игру напишу, с издателем договорюсь, издадим её, а потом тебе бабло на блюдечке принесём. Давай? Ты ведь этого хочешь?
Kavi (2005-11-30 21:01:00) [15]у меня есть sdk в формате chm на английском для с++ и так все сухо написано что-ничего нового, а также есть примеры с http://www.clootie.ruно там тоже такие дебри, и везде все пишут как грузить целые меши для анимации и анимировать их а мне нужно так сказать на низком уровне я сам гружу свой формат объектов и хочу сделать свой формат анимации да не пойму почему не как не получается сделать 256 костей
XProger (2005-11-30 20:03:00) [16]Kavi, все только что приехали с работы к жене, детям, девушкам, друзьям... им не до тебя щас ;)
А разве в SDK примеров не достаточно?
Kavi (2005-11-30 19:52:00) [17]почему все игнорируют
Kavi (2005-11-30 18:36:00) [18]Мастера подскажите пожалуйста
Kavi (2005-11-30 14:08:00) [19]Может кто-знает как сделать скелетную анимацию под Directx, а точнее как использовать 256 костей а то я уже запарился. мне нормальный пример с полным кодом, а то эти отрывки в интернете в статьях ничего не дают
Георгий (2005-10-04 20:41:00) [20]проект здесь http://www.t800.ru/
:)