GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (118 стр.)

Сообщения на форуме пользователя Andrey (118 стр.)

Скелетная анимация. Проблема в экспортере или в коде обновления?18 янв. 200814:35#4
0r@ngE
я тоже так пробовал как у тебя
но GetObjTMAfterWSM и GetNodeTM это совсем разные веши.
Слушая я сначала сохраняю полигоны меша из узла, оставляю пустыми пока в формате вершин
  unsigned char boneIndex[NUM_BONES_VERTEX];
  float vertexWeight[NUM_BONES_VERTEX];
а потом уже из списка модификаторов выцепляю кости и веса, потом создание уникальных вершин и запись в файл может
это совмещать?
хм... нормали попробуй переверни тоже
std::swap(normal.z, normal.y);
а ты иерархию матриц расчитываешь?

Скелетная анимация. Проблема в экспортере или в коде обновления?18 янв. 200814:07#2
0r@ngE
круто!!
а ты можешь сказать что у меня не так с экспортом матриц?
можешь показать как у тебя? или ты используешь IGame или Max Script ?
>с моделькой правда все гут
дак у меня тоже все гут или нет? она то рендерится корректно.
Консоль?18 янв. 200814:00#7
Smrad
класс команд имеет преимущество в нем я храню указатели на методы классов. эти методы выполняют 2 задачи основную и служат для консольной команды
твоя реализация возможно предполагает отдельное написание функции для консольной команды. и тем более функция глобальна. В моей можно забиндить практически любой метод любого класса и это будет консольной камандой, не писав ничего лишнего. А так как вызов ConsoleCommand::Exec(...) вирутальный нужно выделение памяти. и и избавляемся от delete применив boost::shader_ptr.
>Попробуй разобраться с бустом.
и причем тут то что ты разобрался с boost'ом ? это типа считается круто ?
мне хватает 2 классов остальное не нужно.
Консоль?18 янв. 200813:42#4
Smrad
Smrad
>Да... команды в куче ето мощно ^^
Да... трепаться на форуме не написав консоль это мощно ^^
>boost::function<void()>
Да... мощная гибкая реализация зато модный boost во всех дырках.
Консоль?18 янв. 200813:23#1
std::vector<boost::shared_ptr<ConsoleCommand> >
либо 
std::map<std::string, boost::shared_ptr<ConsoleCommand> >
в первом случае линейных поиск на cовпадение имени
во втором std::map::find
остальные вопросы надобно подробней расписать.

Правка действительно шейдеры не причем boost::shader_ptr -> boost::shared_ptr

Правка: 18 янв. 2008 14:39

Скелетная анимация. Проблема в экспортере или в коде обновления?18 янв. 200813:16#0
Привет! всем.
наконец добрался до скелетной анимации. Написал экспортер на C++ из 3DS Max использую голый MAX API. И рендеринг анимированных моделей.
экспортер писал на основе ранее написанного экспортера статической геометрии. просто в конец файла добавляю иерархию костей и список кадров,
в котором список матриц ввиде виде вкатернион + позиция костей с стартовым времени кадра. Ну и расширил формат вершины добавив индекс кости и вес.
Думаю данная схема стандартна.
на скриншоте показана  отрисовка анимированной модели. Но она неправильно двигается. И почему-то кости показаны в другом месте.
В чем может быть дело в экспорте из Max либо в самом коде
обновления?
Приведу код экспорта анимации думаю проблема в нем экспорт анимации выглядит так:
// матрица смены осей
Matrix3 ZYMatrix(Point3(1.0f, 0.0f, 0.0f), Point3(0.0f, 0.0f, 1.0f), Point3(0.0f, 1.0f, 0.0f), Point3(0.0f, 0.0f, 0.0f));
// цикл по кадрам 
{
  // цикл по костям
  {
    Matrix3 mat = bone.node->GetNodeTM(t); // t - timeValue
    // позиция кости
    Point3 transform = mat.GetTrans();
    // променять местами
    std::swap(transform.z, transform.y);
    // перевести в из системы кординат 3DS Max
    mat *= ZYMatrixInvert;
    mat.NoScale();
    mat.NoTrans();
    mat.Invert();
    // кватернион поворота кости
    Quat quaternion(mat);
    //запись в файл
  }

}

вот скриншот
проблемы со скелетной анимацией | Скелетная анимация. Проблема в экспортере или в коде обновления?
вот демка показывающая проблему
http://www.gamedev.ru/download/?id=6657
что я делаю не так?
Спасибо всем заранее с Уважением Андрей.

Правка: 18 янв. 2008 13:19

PSM на OpenGL18 янв. 200810:54#5
Exelents
>у меня тоже float32 текстура не работает. Заюзал float16
мдя... а карта какая?
Каких ключевых слов нет в ваших С++ проектах? :).18 янв. 200810:51#256
Zeux
+1 за *_cast и
try/throw/catch
Долго иногда я пытаюсь некоторым специалистам по C++ что старый стиль преобразования опасен(объяснения типа долго писать и неудобно, не катят т.к. можно напороться на серьезные ошибки, особенно если мегабайты кода движка, а не казуалка с использованием HGE), а исключения это большой тормоз.
Об это неоднократно говорят авторитеты по C++ (к примеру Майерс "Наиболее эффективное С++ 35 рекомендаций", стр. 25,  Правило 2; стр. 91,  правило 15).
Где ускорение от VBO (OpenGL)?18 янв. 200810:35#8
Lion007
а как-же страшная синхронизация с CPU когда вершины берутся из RAM ????
Vista glut.dll18 янв. 200810:33#3
Mogol
glClear != NULL ?
glFlush != NULL ?
glutSwapBuffers != NULL ?
бери исходники glut компиль и проверяй в Debug по шагам.
http://www.opengl.org/resources/libraries/glut/glut37.zip
PSM на OpenGL18 янв. 200810:30#3
_Coll_
может поможешь мою проблему решить?
PSM на OpenGL17 янв. 200818:18#1
_Coll_
я к примеру не смог еще вообще простые тени перенести с Direct3D на OpenGL (просто рендер в текстуру с передчаей мтрицы источника света ну) сдается что проблема в построении текстурной матрицы. FBO + F32  текстура не хочет работать. что на ATI  что на nVidia
Vista glut.dll17 янв. 200817:02#1
Mogol
а Debug и подробное указание строчки кода откуда сваливается в блок кода __except уже отменили?
Вода и шейдер17 янв. 200812:51#75
Osiris
6600
Не хочет работать. аналогичная ситуация как и раньше
Компиль в DEBUG версии с флагом D3D_DEBUG_INFO
DX Debug Level выкручивай на полную и проверяй все предупреждения и ошибки.
на nVidia не работает рендер в текстуру если отрубить запись в буфер цвета  на ATI работает так что что-то всетаки с очисткой.
Вода и шейдер17 янв. 200812:15#72
Osiris
1) да
2) нет нужен флаг D3DCLEAR_STENCIL. только зачем тебе это, ты что используешь тест трафарета?? это вроде нужно чистить только тогда когда используется Stencil Test.
3) не знаю.

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр