Russian Qt Forum
Ноябрь 25, 2024, 15:43
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Чтение большого количества файлов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Чтение большого количества файлов (Прочитано 5312 раз)
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
Сообщений: 11445
Re: Чтение большого количества файлов
«
Ответ #1 :
Январь 30, 2013, 13:13 »
В плане общих советов Вы вероятно получите рекомендации создать iostream в памяти, виртуальный диск и.т.п. А если серьезно - надо разбираться с движком. Информация о том что один объект является child'ом другого должна быть - это неотъемлемые данные. И это совсем не один флажок, обычно что-то типа
- точка линковки
- тип связи (напр child может и не наследовать движение parent'а)
- пре-матрица
и.т.д
А что говорят на форуме Ogre?
Записан
Disa
Гость
Re: Чтение большого количества файлов
«
Ответ #2 :
Февраль 05, 2013, 23:46 »
Ага, спасибо.
На форуме особо ничего не ответили. В начале ответили про то, что выбор нужно делать не через AABB, а отдельных полигонов, но на вопрос про взятие именно дочернего объекта и его имени ответов не было. Ну я и не удивлен - игровой рендер же. Потом сказали, что нельзя двигать дочерние объекты в модели, их нужно грузить как отдельные сущности в граф сцены. Вот в этом моменте я и подвис. Ну в общем дочерние объекты в огре существую в основном для того, чтоб можно было поменять их материал. Если нужно использовать ее как отдельный объект, со своими матрицами трансформаций - то нужно их грузить отдельно.
И еще почему-то все в один голос говорят, что AABB из коробки очень плохой и для выбора мышкой нужно прикручивать физический движек. Мне кажется это не правильный совет
Сорри за долгие ответы - не было в стране.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Чтение большого количества файлов
«
Ответ #3 :
Февраль 06, 2013, 11:18 »
Цитата: Disa от Февраль 05, 2013, 23:46
Потом сказали, что нельзя двигать дочерние объекты в модели, их нужно грузить как отдельные сущности в граф сцены. Вот в этом моменте я и подвис. Ну в общем дочерние объекты в огре существую в основном для того, чтоб можно было поменять их материал.
Пример: character держит в руке напр меч (дочерний объект). Когда char анимируется - меч ведь не остается на месте
Может char взять напр копье вместо меча? Конечно да, иначе что это за движок такой? Выходит (не в обиду Вам) плохо искали
Записан
Disa
Гость
Re: Чтение большого количества файлов
«
Ответ #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
Сообщений: 11445
Re: Чтение большого количества файлов
«
Ответ #5 :
Февраль 06, 2013, 21:47 »
А боны-то у Вас есть или увы "на жаль бананiв нема"?
Записан
Disa
Гость
Re: Чтение большого количества файлов
«
Ответ #6 :
Февраль 06, 2013, 23:13 »
Да можно добавить, но бонты на модели насоса без анимации вообще странно, нет?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Чтение большого количества файлов
«
Ответ #7 :
Февраль 07, 2013, 13:32 »
Цитата: Disa от Февраль 06, 2013, 23:13
Да можно добавить, но бонты на модели насоса без анимации вообще странно, нет?
Давайте сообщим для широкого круга читателей
bone - кость
bones - кости
Bone выглядит как отрезок, обычно боны соединены в цепочки, для chara это выглядит как примитивный скелет. Анимация сводится к управлению скелетом, а он автоматычно пересчитывает вертексы. Нет, Ogre я никогда не видел, но у меня есть работа по бонам - поэтому я это все и говорю
Связка parent-child в игре задается напр так - child знает индекс боны родителя к которой он должен крепиться. Плюс доп данные. Есть ли какой-то еще способ в Ogre - не знаю, может и нет.
Вывод - Вам надо создавать эти боны и управлять ими.
Записан
Disa
Гость
Re: Чтение большого количества файлов
«
Ответ #8 :
Февраль 07, 2013, 23:56 »
Уффф, я не силен в скелетной анимации (ток знаю теорию).
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...