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

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

SetTextureStageState. помогите пофиксить багу с маской.8 фев. 200816:50#2
progman
может проще в шейдере это сделать? не спроста аналога IDirect3DDevice9::SetTextureStageState нет в Direct3D10
Проблема с CreateOffscreenPlainSurface8 фев. 200812:24#2
Denis1986
так проверял ?
if (FAILED(pDevice->CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, AdapterFormat, D3DPOOL_SYSTEMMEM,  D3DRTYPE_SURFACE, D3DFMT_R3G3B2)) {
//
}

Скелетная анимация. Проблема в экспортере или в коде обновления?7 фев. 200811:32#15
0r@ngE
ну с этим то все ок у меня.
// Получение локальной матрицы трансформации
Matrix3 tm = node->GetObjTMAfterWSM(i->GetTime());
....
  Matrix3 rot = tm;
  rot.NoTrans();
  rot.NoScale();
....
  // получение нормали
  curVertex.normal = GetVertexNormal(mesh, j, index, rot);
//Получить нормаль к вершине
Point3 ModelSaver::GetVertexNormal(Mesh& mesh, int faceNo, int vertexIndex, const Matrix3& rot) const
{
  if (faceNo >= mesh.getNumFaces()) {    
    return Point3(0.0f, 0.0f, 0.0f);
  }
  // Получение RVertex
  RVertex& rv = mesh.getRVert(vertexIndex);
  // Получить грань
  Face& face = mesh.faces[faceNo];
  // Группа сглаживания
  DWORD smGroup = face.getSmGroup();
  // Число нормалей
  int numNormals = 0;  
  Point3 vertexNormal;
  // Данное определение еще не используется,
  // но может быть определена в следующих версиях
  if (rv.rFlags & SPECIFIED_NORMAL) {
    vertexNormal = rot * rv.rn.getNormal();
  }
  // Проверка нормали для группы сглаживания
  else if ((numNormals = rv.rFlags & NORCT_MASK) && smGroup) {
    // Если есть 1 вершина найденная в Классе rn 
    if (1 == numNormals) {
      vertexNormal = rot * rv.rn.getNormal();      
    }
    else {
      // Ищется та нормаль которая входит в ту-же группу сглаживания
      // что и нормали указктеля ern класса RNormal. 
      // В этом случае найдется множество нормалей 
      for (int i = 0; i < numNormals; i++) {
        if (rv.ern[i].getSmGroup() & smGroup) {
          vertexNormal = rot * rv.ern[i].getNormal();
        }
      }
    }
  }
  else {
    // Последний вариант получения нормали это нормаль к гране 
    // содержащей вершину
    vertexNormal = rot * mesh.getFaceNormal(faceNo);
  }  
  vertexNormal.Normalize();
  return vertexNormal;
}

pugiXML :(7 фев. 200810:38#15
Ghost2
спасибо гляну...
Скелетная анимация. Проблема в экспортере или в коде обновления?7 фев. 200810:37#13
gorus13
>ага даешь всем модельку из коммерческого проекта :) ... А кто то бумаги подписывал об авторских правах....
ты чего херню несешь? Сам понял что сказал? Никому ничего давать не собираюсь. В комерческих целях ничего не использую. Ценю труд того кто, ее сделал.
Тебе не надоело цепляться?
Guyver
>в максе всегда были какие то оговорки по матрицам (строка, столбец) ...
ты имеешь ввиду транспонировать?
а где почитать про это?
>ну ты помниш что их транслейтить не нада ага ?
а по подробней?
Сделал обновление в качалке.(нашел пару ошибок в экспортер) Нажав на букву "I", "i" можно глянуть работу без расчета иерархии и с ней. Почему-то слетают немного положения с костей.
Но результат уже лучше.
Тут узнал что нужно множить на инверсную матрицу первого кадра все матрицы. Если это делать при загрузке то модель немного съезжает при анимации.
pugiXML :(6 фев. 200819:49#7
Ghost2
а файлы большие были?
ух. ты спасибо надо поменять либу... а там как мног переделывать придется c tinyXML на pugiXML?
pugiXML :(6 фев. 200818:56#4
BeInspired
Ghost2
извиняюсь вопрос не по теме, pugiXML лучше TinyXML ?
Скелетная анимация. Проблема в экспортере или в коде обновления?6 фев. 200818:34#9
0r@ngE
спасибо за тест. Буду дальше ковырять
Скелетная анимация. Проблема в экспортере или в коде обновления?6 фев. 200816:27#7
0r@ngE
а так все видно ? камерой подлети поближе, это тестовый проект там не камеры нормальной нет не ввода/ввода.
еще в шейдере можно закоментить TRANSFORM максос и нажать "T"/"t" в этом случае анимация будет софтварной.
Скелетная анимация. Проблема в экспортере или в коде обновления?6 фев. 200816:19#5
Итак после долгих поисков ошибок результаты улучшились. Нашел ошибки по назначению для вершин весов и индексов.
Вот скрин результата.
Ошибка в скелетной анимации(http://www.gamedev.ru) | Скелетная анимация. Проблема в экспортере или в коде обновления?
вот демка.
http://www.gamedev.ru/download/?id=6753
вот так переделал экспорт анимации:
// цикл по кадрам {
  // цикл по костям {
    // матрица переворота осей
    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->GetNodeTM(t);
    // если есть родительская оксть
    if (bone->GetParentNode()) {
      Matrix3 parent = bone->GetParentTM(t);
      parent = Inverse(parent);
      mat = mat * parent;
    }
    mat = mat * ZYMatrix;
    // кватернион поворота кости
    Quat quaternion(mat);
    // выврд в файл
  }
}

Где еще может быть ошибка?

Правка: 7 фев. 2008 10:28

Загрузка текстур из файлов для использования в D3D9.6 фев. 200816:00#8
antber
>Только мульти-АПИ маньяки против d3dx.
ну почему-же
Загрузка текстур из файлов для использования в D3D9.6 фев. 200815:59#7
UltraDruid
>А что, исходники Fear тоже где-то можно скачать?
ну зачем скачивать? можешь exe файл глянуть что за функции он экспортит из D3DX9_3*.dll как минимум будут юзать D3DXAssembleShader/D3DXCompileShader
Загрузка текстур из файлов для использования в D3D9.6 фев. 200815:28#3
UltraDruid
Готика, Fear и много других.
Дамп памяти и т.п.6 фев. 200814:05#13
Executor
WinDbg скачай, почитай Help, може там  что найдешь интересного.
char или std::string5 фев. 200817:32#14
antber
>Так этот список объявлялся локально в функции, вызываемой каждый раз для каждого меша каждый кадр. Производительность катастрофически падала! Я невзлюбил >STL еще больше почему то... Понял одно: без знания того как устроен любой из объектов в STL, лучше их не использовать.
вместо std::list сделать std::vector и вынести его в члены класса. Далее на каждом кадре делать resize(0) тогда память не будет перевыделяться. И полюбишь ты STL тогда.
А строки ясен перец нефиг в Real Time парсить.

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

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