Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты C++

Ответ
 
Опции темы
Старый 11.06.2014, 00:21   #286
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: [TrueHorror] - разработка

Сообщение от mr.DIMAS Посмотреть сообщение
Что будет быстрее - загрузить текстуру в jpg ( распаковка, все дела ) или несжатый tga?
Ты имеешь ввиду "из", а не "в"?
Быстрей всего загружаются форматы с RLE сжатием, даже быстрей чем без сжатия.
Вообще если что то разжимается быстрей чем читается с диска распакованный вариант, то значит загружаться будет быстрей.

Раз у тебя D3D9 то вообще используй DDS - он же на GPU распаковывается.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (11.06.2014)
Старый 11.06.2014, 00:50   #287
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Ты имеешь ввиду "из", а не "в"?
Риальне "из". Опечатался.

Спасибо за то что напомнил про DDS. Пожалуй переведу в него текстуры.
__________________

(Offline)
 
Ответить с цитированием
Старый 11.06.2014, 00:54   #288
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: [TrueHorror] - разработка

Сообщение от mr.DIMAS Посмотреть сообщение
Риальне "из". Опечатался.

Спасибо за то что напомнил про DDS. Пожалуй переведу в него текстуры.
Судя по wiki opengl через расширение тоже держит dds. Еще я помню doom3 (у него opengl рендер) также использует dds. Так что я думаю это оптимальный вариант и ты ничего не теряешь.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (11.06.2014)
Старый 11.06.2014, 02:16   #289
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: [TrueHorror] - разработка

В релизе текстуры обязаны быть в DDS. DDS это контейнер нативных видюшных данных. Большинство текстур отлично сжимаются DXT, что позволяет экономить дохрена видеопамяти. Самому сжатию нечего делать в рантайме (это не реалтайм дело) - сжимать надо на препроцессе а не у игрока.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (11.06.2014)
Старый 11.06.2014, 02:35   #290
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: [TrueHorror] - разработка

Сообщение от Mr_F_ Посмотреть сообщение
В релизе текстуры обязаны быть в DDS. DDS это контейнер нативных видюшных данных. Большинство текстур отлично сжимаются DXT, что позволяет экономить дохрена видеопамяти. Самому сжатию нечего делать в рантайме (это не реалтайм дело) - сжимать надо на препроцессе а не у игрока.
Ну в DXT всё равно извлечение данных во время выборки? Там конкретный пиксель вычисляется из общего шаблона.

Да важно отметить что в видеопамяти нужно хранить в DXT, больше по причине ограниченного размера vram, нежели скорости распаковки.
Актуально при таких больших локациях как в TrueHorror


В Watch Dogs заметил что текстуры прогружаются напрямую в видеопамять (видимо из-за наличия общей памяти в консолях), и если её не хватает то стримится с диска.
Разве нельзя кешировать текстуры в ram?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (11.06.2014)
Старый 11.06.2014, 12:05   #291
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: [TrueHorror] - разработка

Ну в DXT всё равно извлечение данных во время выборки?
Оно в железе. DXT читается даже быстрее, чем неDXT, потому что меньше работы с памятью.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (11.06.2014)
Старый 17.06.2014, 01:41   #292
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Для катсцен понадобилась скелетная анимация. До этого был морфинг - но он слишком много жрет оперативки.

В качестве костей используются узлы сцены - точнее их global transform. И вот тут косяк. Если этой трансформацией преобразовать вершину - она улетает в ебеня.

Вроде как нужно получить transform в с.к. относительно [0,0,0] а не позиции кости.

Кароч я тут понаписал ататы. Научите меня скелетке.
__________________

(Offline)
 
Ответить с цитированием
Старый 17.06.2014, 02:41   #293
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: [TrueHorror] - разработка

у тебя меш в Т-позе - т.е. в такой позе, при которой у костей есть определённые дефолт-ротации.
тебе нужно иметь инвертированные матрицы костей в Т-позе, чтобы мировые ротации костей анимационные преобразовывать в пространство относительно Т-позы. вот и все дела.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (17.06.2014)
Старый 17.06.2014, 02:47   #294
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: [TrueHorror] - разработка

Есть книга Джима Адамса про скелетную анимацию.
Однако книга 2004 года и некоторые вещи связанные с directx в ней сильно устарели (даже для dx9), но теоретическая часть в ней подробно расписана.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (17.06.2014)
Старый 17.06.2014, 04:27   #295
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: [TrueHorror] - разработка

Сообщение от Samodelkin Посмотреть сообщение
Есть книга Джима Адамса про скелетную анимацию.
.
Прочитал как Адам Дженсен.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Samodelkin (17.06.2014)
Старый 17.06.2014, 11:18   #296
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: [TrueHorror] - разработка

книга Джима Адамса про скелетную анимацию
не знаю даже, я за ~1.5 дня её писал, чутка погуглив
можно конечно извращаться типа дуал кватернионов, но под них и арт надо готовить специально итп
для самого скелета юзал обычные ноды сцены с иерархией, как и mr.DIMAS
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 17.06.2014, 16:01   #297
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: [TrueHorror] - разработка

Ну там не только скелетка, там еще рэгдолл, морфинг, лицевая анимация и еще всякие более общие штуки. Да после прочтения книги, нужно поискать более современные статьи, конкретно по реализации, т.к. то что в книге - устарело, но теория там ОК.
(Offline)
 
Ответить с цитированием
Старый 18.06.2014, 02:58   #298
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Бля. У меня бомбит пукан. Эта скелетка никак не получается. Вроде все правильно сделал - но нет блять - меш перекареживает просто пздц. В топку. Оставлю морфинг - рагдолл не нужен.

Второй день маюсь - ну просто пичаль, ненависть, ярость, агрессия, фрустрация, безысходность, депрессия.
__________________

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
Samodelkin (18.06.2014), tirarex (18.06.2014)
Старый 18.06.2014, 14:46   #299
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Я упертый\упоротый - вот все мои исходники скелетки.

Расчет вершин по скелету
if ( node->skinned )
  {
    int i = 0; 

    for( auto meshIter = node->meshes.begin(); meshIter != node->meshes.end(); ++meshIter )
    {
      Mesh * mesh = *meshIter;

      vector< Vertex > temp = mesh->vertices;

      for( int i = 0; i < mesh->vertices.size(); i++ )
      {
        Vertex & vertex = mesh->vertices[ i ];
        Weight & weight = mesh->weights[ i ];

        btVector3 lastPosition = btVector3( vertex.coords.x, vertex.coords.y, vertex.coords.z );
        btVector3 newPosition = btVector3( 0, 0, 0 );

        for( int j = 0; j < weight.boneCount; j++ )
        {
          SceneNode * bone = weight.bones[ j ].node;

          newPosition += newPosition += bone->invBoneBindTransform * bone->globalTransform * lastPosition * weight.bones[ j ].weight;
        }

        vertex.coords.x = newPosition.x();
        vertex.coords.y = newPosition.y();
        vertex.coords.z = newPosition.z();
      }

      UpdateBuffers( mesh );

      mesh->vertices = temp;
    }
  }
Поиск костей и расчет их инверсных матриц.
  for( int i = 0; i < numMeshes; i++ )
  {
    SceneNode * node = scene->childs[ i ];

    node->invBoneBindTransform = CalculateGlobalTransform( node ).inverse();

    for( int k = 0; k < node->meshes.size(); k++ )
    {
      Mesh * mesh = node->meshes[ k ] ;

      for( int j = 0; j < mesh->weights.size(); j++ )
      {
        Weight & w = mesh->weights[ j ];

        for( int q = 0; q < w.boneCount; q++ )
        {
          w.bones[ q ].node = reinterpret_cast< SceneNode* >( FindByName( w.bones[q].name.c_str() ));
        }
      }
    }
  }
Расчет глобальной трансформации
btTransform & CalculateGlobalTransform( SceneNode * n )
{
  if( n->body )
    n->body->activate( true );

  if( n->parent )
  {
    if( n->parent->frozen )
    {
      n->globalTransform = CalculateGlobalTransform( n->parent ) * n->localTransform;

      if( n->body )
      {
        n->body->setWorldTransform( n->globalTransform );
        n->body->setLinearVelocity( btVector3( 0, 0, 0 ));
      }
    }
    else
    {
      if( n->body )
        n->globalTransform = n->body->getWorldTransform();
      else
        n->globalTransform = CalculateGlobalTransform( n->parent ) * n->localTransform;
    }
  }
  else
  {
    if( n->body )
      n->globalTransform = n->body->getWorldTransform();
    else
      n->globalTransform = n->localTransform;
  }

  return n->globalTransform;
}
И в аттаче пример работы этой хуиты.

[E] - анимировать объект
Вложения
Тип файла: rar rrr.rar (653.2 Кб, 414 просмотров)
__________________


Последний раз редактировалось mr.DIMAS, 18.06.2014 в 19:21.
(Offline)
 
Ответить с цитированием
Старый 18.06.2014, 16:57   #300
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: [TrueHorror] - разработка

Сообщение от mr.DIMAS Посмотреть сообщение
Бля. У меня бомбит пукан. Эта скелетка никак не получается. Вроде все правильно сделал - но нет блять - меш перекареживает просто пздц. В топку. Оставлю морфинг - рагдолл не нужен.

Второй день маюсь - ну просто пичаль, ненависть, ярость, агрессия, фрустрация, безысходность, депрессия.
Да что там сложного? Берём позицию вершины в T-позе, умножаем её по очереди на инвертированные матрицы костей в порядке иерархии, умножаем на матрицу объекта (ЕМНИП). Вот, переводил как-то статью.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
impersonalis (19.06.2014), Mr_F_ (18.06.2014)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 04:07.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com