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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Импорт данных дерева/иерерхии  (Прочитано 6563 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Декабрь 12, 2016, 15:39 »

Добрый день

Есть иерархия объектов (сцена), в общем дерево (необязательно "ветвистое" - могут быть все "корни"). И есть файл в котором тоже записана иерархия объектов. Формат файла не мой и не совпадает с форматом моих объектов.  Задача прочитать из файла набор данных для каждого объекта (напр позиция, вращение, масштаб) и присвоить их объектам сцены. Нужно как-то "сбить" 2 дерева чтобы знать какой объект файла соответствует какому сцены.

И здесь и там объекты имеют имена, но они не уникальны. Как организовать "сбивку" и какой UI дать юзеру?  Да, интересует толковая "постановка"

Спасибо
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Декабрь 12, 2016, 18:16 »

Что является ключом элемента в файле?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Декабрь 14, 2016, 16:18 »

Что является ключом элемента в файле?
Это постановка, что решите то и будет
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Декабрь 14, 2016, 16:29 »

Вы ж сказали что формат не ваш
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Декабрь 14, 2016, 16:36 »

Вы ж сказали что формат не ваш
Не мой, Autodesk. Ну везде у объекта есть имя, тип, трансформы и дальше в зависимости от типа. Как-то с общими вещами совсем мрачно  Плачущий
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Декабрь 14, 2016, 19:40 »

Что значит имена не уникальны? Могут быть 2 объекта с одним именем и типом в пределах файла?
Если так, то юзать MultiMap с ключом по имени имхо ок.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Декабрь 15, 2016, 12:37 »

Что значит имена не уникальны? Могут быть 2 объекта с одним именем и типом в пределах файла?
Да, как в пределах файла, так и сцены, а что тут такого? Любое приложение рисует объекты в окнах где могут быть интерактивно выбраны и всегда есть их полный список. Поэтому нет необходимости еще их как-то идентифицировать для юзера.

Если так, то юзать MultiMap с ключом по имени имхо ок.
Не очень понимаю чему посвящен этот ключ. Думал может как-то задействовать иерархию. Отсутствие объекта в сцене не является преступлением, задача дать юзеру понять что найдено (и данные будут импортированы), а что нет
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Декабрь 16, 2016, 13:20 »

Собсно ничего супер-пупер я не спрашиваю, задачка - типичная "бытовуха" (ну или "логика ГУЯ" для солидности  Улыбающийся). Прикинем пару вариантов

1) Вообще без UI. Взяли имена объектов в файле, нашли объекты с теми же именами и типами в сцене, и импортировали данные. Ну так явно не годится - хз что сделала эта операция

2) Стало быть, нужно показать юзверю что есть в файле и что там "найдено". Видимо табличкой. И вот тут не очень ясно что и как. Напр показать дерево "все что есть в файле" с учетом иерархии. Логично, но очень может быть что многие ноды дерева не могут быть импортированы - не имеют нужных данных или в сцене нет с таким именем. Ну и хз по каким прынцыпам определять "найден", напр

File
node_1        // есть в сцене но нет данных для импорта,
  --node_2   // этого в сцене нет
    --node_3  // этот есть в сцене и данные имеет

Как должно выглядеть UI ? Может ли юзер импортировать данные node_3? А если в сцене он совсем не в такой цепочке иерархии?

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

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #8 : Декабрь 16, 2016, 15:40 »

Я бы сделал деревом с разноцветными (разноиконными) нодами.
То есть показать всю структуру, как она будет выглядеть после объединения.
а дальше варинты разных цветов нодов для:
- нормально импортированных объектов
- несуществующих в файле
- существующих только в файле
- дубликатов по имени
- конфликтов (не те данные и т.д.)

И предоставить юзеру варианты действий, например:
- при конфликте оставить только элемент сцены, или перезаписать элементом из файла, или сделать копию с др.именем
- удалить или оставить те, которые есть только в файле или только в сцене
и т.д.

Ну т.е. нод3 юзер может импортировать, если захочет (поставит галочку "перезаписать из файла").
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Декабрь 16, 2016, 17:18 »

Я бы сделал деревом с разноцветными (разноиконными) нодами.
То есть показать всю структуру, как она будет выглядеть после объединения.
а дальше варинты разных цветов нодов для:
- нормально импортированных объектов
- несуществующих в файле
- существующих только в файле
- дубликатов по имени
- конфликтов (не те данные и т.д.)
Это далеко за рамками задачи - в сцене иерархия и все остальное остаются неизменны, никаких новых объектов не добавляется, только данные существующих объектов могут быть загружены из файла. Также "вся структура" (сцены) может быть намного больше содержимого файла (хотя может и наоборот).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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