Russian Qt Forum
Октябрь 02, 2024, 01:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Чтение большого количества файлов  (Прочитано 5263 раз)
Disa
Гость
« : Январь 30, 2013, 01:34 »

Добрый день. Не совсем уверен что именно по qt вопрос, вероятнее всего по iostream или производному от него (нужно в движке посмотреть).

Задача пока не поменялась (если, кто-то читал мои пред. вопросы). "Симпатичный" инструмент для обучению ремонтно-слесарных работ на различных ТЭЦ (преимущественно АЭС). То есть нужно красивый и простой ГУЙ (поэтому Qt) и симпатичная 3D графика (поэтому Ogre, а не OSG или Delta3D) + работы с БД и множеством пользователей (опять же поэтому Qt) + работа под CentOS и Виндой.

В результате работы выяснилось, что просто так пробегать дерево модели в ogre нельзя. Можно менять материала, узнавать имена объектов, а вот двигать и вращать - фиг. Кроме того, каким-то непостижимым образом дочерние элементы модели (это называется subEntitiy) в иерархии не являются дочерними для класса модели (Entity), что не позволяет загружать их в сцену, как это делается с обычной моделью и что самое поганое нельзя сделать dinamic_cast<То, что можно приаатачить к сцене>. Выход был найдет - все детали модели разбиты на нужное количество файлов и подгружаются к сцене.

Так вот, мне это кажется жутким костылём. Почему вместо чтения 1ого файла в котором все есть, мне нужно их читать, например, 100 - 200 штук (а такое спокойно мб). Загрузка модели тоже происходит средством движка.

Буду рад, если кто-то может подсказать, можно ли как-то ускорить загрузку файлов или уменьшить количество обращения к ЖД.
« Последнее редактирование: Январь 30, 2013, 01:36 от Disa » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Январь 30, 2013, 13:13 »

В плане общих советов Вы вероятно получите рекомендации создать iostream в памяти, виртуальный диск и.т.п. А если серьезно - надо разбираться с движком. Информация о том что один объект является child'ом другого должна быть - это неотъемлемые данные. И это совсем не один флажок, обычно что-то типа

- точка линковки
- тип связи (напр child может и не наследовать движение parent'а)
- пре-матрица
и.т.д

А что говорят на форуме Ogre?  Улыбающийся
Записан
Disa
Гость
« Ответ #2 : Февраль 05, 2013, 23:46 »

Ага, спасибо.

На форуме особо ничего не ответили. В начале ответили про то, что выбор нужно делать не через AABB, а отдельных полигонов, но на вопрос про взятие именно дочернего объекта и его имени ответов не было. Ну я и не удивлен - игровой рендер же.  Потом сказали, что нельзя двигать дочерние объекты в модели, их нужно грузить как отдельные сущности в граф сцены. Вот в этом моменте я и подвис. Ну в общем дочерние объекты в огре  существую в основном для того, чтоб можно было поменять их материал. Если нужно использовать ее как отдельный объект, со своими матрицами трансформаций - то нужно их грузить отдельно.

И еще почему-то все в один голос говорят, что AABB из коробки очень плохой и для выбора мышкой нужно прикручивать физический движек. Мне кажется это не правильный совет Улыбающийся

Сорри за долгие ответы - не было в стране.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Февраль 06, 2013, 11:18 »

Потом сказали, что нельзя двигать дочерние объекты в модели, их нужно грузить как отдельные сущности в граф сцены. Вот в этом моменте я и подвис. Ну в общем дочерние объекты в огре  существую в основном для того, чтоб можно было поменять их материал.
Пример: character держит в руке напр меч (дочерний объект). Когда char анимируется - меч ведь не остается на месте Улыбающийся Может char взять напр копье вместо меча? Конечно да, иначе что это за движок такой? Выходит (не в обиду Вам) плохо искали
Записан
Disa
Гость
« Ответ #4 : Февраль 06, 2013, 21:33 »

Я ,наверное, не правильно выразился. В этом случае нет проблем загрузить оружие отдельно, персонажа отдельно и дальше привязать через граф сцены.

Ну собственно вот http://www.ogre3d.org/docs/api/html/classOgre_1_1Entity.html

Есть Entity::ChildObjectListIterator и getSubEntity.
Первый возвращает итератор на объект, который Contains the child objects (attached to bones) indexed by name.
Второй возвращает вот это http://www.ogre3d.org/docs/api/html/classOgre_1_1SubEntity.html у которого можно менять материал.

Пошел офф топ Улыбающийся
Так, я пока продолжу ковыряться с этим, мб и вправду что-то упускаю. Хотя вариант со многими файлами меня мб больше устроит, т.к. некоторые детали в механизмах могут часто повторятся.

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Февраль 06, 2013, 21:47 »

А боны-то у Вас есть или увы "на жаль бананiв нема"?
Записан
Disa
Гость
« Ответ #6 : Февраль 06, 2013, 23:13 »

Да можно добавить, но бонты на модели насоса без анимации вообще странно, нет?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Февраль 07, 2013, 13:32 »

Да можно добавить, но бонты на модели насоса без анимации вообще странно, нет?
Давайте сообщим для широкого круга читателей
bone - кость
bones - кости

Bone выглядит как отрезок, обычно боны соединены в цепочки, для chara это выглядит как примитивный скелет. Анимация сводится к управлению скелетом, а он автоматычно пересчитывает вертексы. Нет, Ogre я никогда не видел, но у меня есть работа по бонам - поэтому я это все и говорю  Улыбающийся

Связка parent-child в игре задается напр так - child знает индекс боны родителя к которой он должен крепиться. Плюс доп данные. Есть ли какой-то еще способ в Ogre - не знаю, может и нет.

Вывод - Вам надо создавать эти боны и управлять ими.
Записан
Disa
Гость
« Ответ #8 : Февраль 07, 2013, 23:56 »

Уффф, я не силен в скелетной анимации (ток знаю теорию).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 22.