Russian Qt Forum
Ноябрь 24, 2024, 09:59
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Создание массива вершин фигуры с помощью редактора
Страниц:
1
2
3
[
4
]
5
6
7
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Создание массива вершин фигуры с помощью редактора (Прочитано 42759 раз)
Hrundel
Гость
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #45 :
Апрель 10, 2014, 20:53 »
Цитата: Old от Апрель 10, 2014, 20:10
2 Hrundel
У вас в коде ошибка, течет память и оставляет видимым диалог прогресса, если файл нельзя открыть.
Это может быть - иногда испытываю затруднения с указателями.
Записан
8Observer8
Гость
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #46 :
Апрель 10, 2014, 22:38 »
Я немного продвинулся вперёд. Мне удалось нарисовать треугольник:
Ещё я из следующего примера добавил: оси, поворот с помощью мыши, приближение и отдаление с помощью колёсика мыши:
http://www.gamedev.ru/code/articles/OpenGL_Qt4
Код:
https://github.com/8Observer8/CubeFromBlender/tree/one_triangle
Подскажите, пожалуйста, как узнать в Blender какой вершине соответствует какой индекс?
«
Последнее редактирование: Апрель 10, 2014, 22:41 от 8Observer8
»
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #47 :
Апрель 11, 2014, 08:52 »
Цитата: Hrundel от Апрель 10, 2014, 12:52
Цитата: m_ax от Апрель 10, 2014, 12:35
А что в итоге получилось?
Какая то невообразимая архитектурная каша.. Один чих и всё развалится(
Почему каша, и какой именно "чих" все это развалит? Обоснуйте.
Под "чихом", я так понимаю, подразумевается какой-нибудь безпорядочно написаный *obj файл. Так, я уже сделал замечание, что парсер читает только выхлоп из одного редактора и не предполагает универсальности.
Чих - это не только файл..
Во-первых, ваш "парсер" слишком много знает.. Он сильно завязан на гуи, хотя парсер вообще не должен знать об этом ни-че-го.. Такая архитектура вообще противоречит принципам ООП, раз уж тут об этом речь зашла.. Если измениться интерфейс прогрессдиалога или сам прогрессдиалог, то придётся лезть под капот этого парсера..
Во-вторых сама реализация парсера.. мм.. не самая изящная..
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #48 :
Апрель 11, 2014, 09:36 »
Цитата: 8Observer8 от Апрель 10, 2014, 19:03
Далее будет очень черновой код. Мне главное идею понять, правильно ли я делаю? В следующей функции я заполняю три массива: m_vertexArray, m_colorArray, m_indexArray:
Код
C++ (Qt)
void
Scene
::
setPointsAndIndexes
(
QList
<
QVector3D
>
&
points
,
QList
<
QVector3D
>
&
indexes
)
А кто Вам мешал заполнить все три массива сразу при чтении obj файла? И почему Scene планируется в расчете только на 1 объект? Их может быть и больше. Куда Вы все время летите, почему все тяп-ляп? Разберемся c glDrawElements
Цитировать
glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_INT, indices);
1-й аргумент - что рисуем, какие примитивы - у нас треугольники
2-й аргумент - сколько треугольников
3-й аргумент - сколько байт на индекс, чего ж GL_UNSIGNED_BYTE, индекс может ссылаться на вертекс напр 10000. Конечно GL_UNSIGNED_INT
4-й аргумент - массив int'ов (указатель)
В obj файле
Цитировать
f 1 2 4
f 5 8 6
f 1 5 2
...
Значит подаваемый массив { 1 2 4 5 8 6 1 5 2.. }
Теперь с glVertexPointer(3, GL_FLOAT, 0, m_vertexArray);
В obj файле
Цитировать
v 1.000000 1.000001 -0.999999
v 1.000000 -0.999999 -1.000001
v -1.000000 -0.999999 -1.000001...
Значит подаваемый массив
{ 1.000000 1.000001 -0.999999
1.000000 -0.999999 -1.000001
-1.000000 -0.999999 -1.000001...
}
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #49 :
Апрель 11, 2014, 09:56 »
Цитата: m_ax от Апрель 11, 2014, 08:52
Во-первых, ваш "парсер" слишком много знает.. Он сильно завязан на гуи, хотя парсер вообще не должен знать об этом ни-че-го.. Такая архитектура вообще противоречит принципам ООП, раз уж тут об этом речь зашла.. Если измениться интерфейс прогрессдиалога или сам прогрессдиалог, то придётся лезть под капот этого парсера..
Не вижу где он "завязан" на UI, ну может QMessageBox. А так нормально, юзается интерфейс прогрессдиалога, в кишки не влазим. И, зная Вас, убежден что никакого feedback'а в Вашей реализации не случилось бы вообще - ушли бы гулять с собачкой, и все
Цитата: m_ax от Апрель 11, 2014, 08:52
Во-вторых сама реализация парсера.. мм.. не самая изящная..
Так никто ж не мешает показать "более изящную", богатырскую силу буста и освоившего его программиста
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #50 :
Апрель 11, 2014, 10:07 »
Цитата: Igors от Апрель 11, 2014, 09:36
А кто Вам мешал заполнить все три массива сразу при чтении obj файла?
А почему он должен был их сразу заполнять?
Здесь он получает исключительно данные из файла, дальше он их может разложить в какие угодно специализированные структуры.
Цитата: Igors от Апрель 11, 2014, 09:36
И почему Scene планируется в расчете только на 1 объект? Их может быть и больше.
Потому что он скопипастил его из примера, он там даже ссылку на него привел.
Цитата: Igors от Апрель 11, 2014, 09:36
чего ж GL_UNSIGNED_BYTE, индекс может ссылаться на вертекс напр 10000. Конечно GL_UNSIGNED_INT
А почему нет, у нас всего 8 вершин, байта хватит с головой.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #51 :
Апрель 11, 2014, 10:11 »
Цитата: Igors от Апрель 11, 2014, 09:56
Не вижу где он "завязан" на UI, ну может QMessageBox.
И QInputDialog?
Цитата: Igors от Апрель 11, 2014, 09:56
А так нормально
Сойдет.
Цитата: Igors от Апрель 11, 2014, 09:56
Так никто ж не мешает показать "более изящную", богатырскую силу буста и освоившего его программиста
Точно-точно, у вас же есть готовая, так сказать "профессиональная" - покажите.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #52 :
Апрель 11, 2014, 10:52 »
Цитата: Old от Апрель 11, 2014, 10:11
Точно-точно, у вас же есть готовая, так сказать "профессиональная" - покажите.
Ну вот, то обзываете меня всяко - то "покажите"
. Нет уж, да и не смог бы, это был заказ.
А вот где ж ота вся умность std/boost которой некоторые так гордятся? Формат легкий и приятный, есть куда более гнусные. Следовало ожидать что вот "щас", "на раз" - но ничего не происходит. Ну где же Ваши "карандаши" которые так усердно затачивались? А если дойдет до дела - опять позорный split, или как?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #53 :
Апрель 11, 2014, 11:02 »
Цитата: Igors от Апрель 11, 2014, 10:52
Ну вот, то обзываете меня всяко - то "покажите"
. Нет уж, да и не смог бы, это был заказ.
Другого ответа я и не ждал. Все как всегда. Зато написать "халтура" это вы первый.
Цитата: Igors от Апрель 11, 2014, 10:52
А вот где ж ота вся умность std/boost которой некоторые так гордятся? Формат легкий и приятный, есть куда более гнусные. Следовало ожидать что вот "щас", "на раз" - но ничего не происходит. Ну где же Ваши "карандаши" которые так усердно затачивались?
Карандаши там же где и у вас.
С той лишь разницей, что нам читать этот формат и даром не надо, а вы как бы должны, ведь вы же
Цитата: Igors от Апрель 10, 2014, 18:41
Полигонной геометрией я занимаюсь давненько...
Цитата: Igors от Апрель 11, 2014, 10:52
А если дойдет до дела - опять позорный split, или как?
Нет, будет boost::spirit.
Записан
Hrundel
Гость
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #54 :
Апрель 11, 2014, 11:30 »
Цитата: Igors от Апрель 11, 2014, 09:56
Цитата: m_ax от Апрель 11, 2014, 08:52
Во-первых, ваш "парсер" слишком много знает.. Он сильно завязан на гуи, хотя парсер вообще не должен знать об этом ни-че-го.. Такая архитектура вообще противоречит принципам ООП, раз уж тут об этом речь зашла.. Если измениться интерфейс прогрессдиалога или сам прогрессдиалог, то придётся лезть под капот этого парсера..
Не вижу где он "завязан" на UI, ну может QMessageBox. А так нормально, юзается интерфейс прогрессдиалога, в кишки не влазим. И, зная Вас, убежден что никакого feedback'а в Вашей реализации не случилось бы вообще - ушли бы гулять с собачкой, и все
Цитата: m_ax от Апрель 11, 2014, 08:52
Во-вторых сама реализация парсера.. мм.. не самая изящная..
Так никто ж не мешает показать "более изящную", богатырскую силу буста и освоившего его программиста
Спасибо, Игорь, мне уже и добавить нечего
Что касается "завязки" на GUI - ну знаете, я все-таки семестровый проект пишу, а не корпаративный продукт от Adobe. Строгой независимости классов с меня никто не требует.
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #55 :
Апрель 11, 2014, 11:42 »
Цитата: Hrundel от Апрель 11, 2014, 11:30
Цитата: Igors от Апрель 11, 2014, 09:56
Цитата: m_ax от Апрель 11, 2014, 08:52
Во-первых, ваш "парсер" слишком много знает.. Он сильно завязан на гуи, хотя парсер вообще не должен знать об этом ни-че-го.. Такая архитектура вообще противоречит принципам ООП, раз уж тут об этом речь зашла.. Если измениться интерфейс прогрессдиалога или сам прогрессдиалог, то придётся лезть под капот этого парсера..
Не вижу где он "завязан" на UI, ну может QMessageBox. А так нормально, юзается интерфейс прогрессдиалога, в кишки не влазим. И, зная Вас, убежден что никакого feedback'а в Вашей реализации не случилось бы вообще - ушли бы гулять с собачкой, и все
Цитата: m_ax от Апрель 11, 2014, 08:52
Во-вторых сама реализация парсера.. мм.. не самая изящная..
Так никто ж не мешает показать "более изящную", богатырскую силу буста и освоившего его программиста
Спасибо, Игорь, мне уже и добавить нечего
Что касается "завязки" на GUI - ну знаете, я все-таки семестровый проект пишу, а не корпаративный продукт от Adobe. Строгой независимости классов с меня никто не требует.
Дело не только в завязке на гуи.. (хотя это уже о многом говорит)
Сама реализация парсера в аля процедурном стиле(
Да и использование сплита.. где то я это уже видел)
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #56 :
Апрель 11, 2014, 11:44 »
Цитата: Hrundel от Апрель 11, 2014, 11:30
Что касается "завязки" на GUI - ну знаете, я все-таки семестровый проект пишу, а не корпаративный продукт от Adobe. Строгой независимости классов с меня никто не требует.
Не обижайтесь, я нисколько не хочу принизить ваш код.
Просто мне было непонятно, откуда такая избирательност, почему наш "профессионал" хвалит одного и ругает другого? Хотя и у вас и у 8Observer8, есть что поругать, и что похвалить.
Сейчас я понимаю, что 8Observer8 "в опале" за то, что не внемлет "профессионалу". И главное он может не переживать дальше: все что он будет делать - будет называться халтурой.
«
Последнее редактирование: Апрель 11, 2014, 12:12 от Old
»
Записан
Hrundel
Гость
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #57 :
Апрель 11, 2014, 12:19 »
Цитата: Old от Апрель 11, 2014, 11:44
Не обижайтесь, я нисколько не хочу принизить ваш код.
Просто мне было непонятно, откуда такая избирательност, почему наш "профессионал" хвалит одного и ругает другого? Хотя и у вас и у 8Observer8, есть что поругать, и что похвалить.
Да я и не обижаюсь совсем
Я на великое не претендую. Я, ведь, еще учусь!
Ну, на счет Игоря, могу сказать, что он как-то помог написать мне кусок кода. Мне было все очень понятно. Его стиль мне нравиться. Это наверное как в искусстве - кто-то импрессионистично картины пишет, кто-то академично. И то, и другое имеет место быть. Рамок быть не должно - иначе не будет открытий. А правила, конечно, соблюдать надо. Без граммотности красота не возможна.
Давайте лучше переключимся на ТС. Что-то он не отвечает больше. Получается у него там парсеную модельку показать?
Да, и мнение M_AX по коду ТС, тоже было бы интересно выслушать.
А по поводу сплита я как-то не понимаю. Для всего есть свой инструмент. Вилкой суп есть не будешь. Сплит прост и удобен. Ошибок в его работе вроде как не замечено.
На счет парсера в "аля процедурном стиле" тоже не понял. Может быть какой-то другой стиль в подходе к парсеру? И он действительно необходим?
Тогда, прошу привести пример кода. А то, как-то, M_AX голословно все у вас.
«
Последнее редактирование: Апрель 11, 2014, 12:38 от Hrundel
»
Записан
OKTA
Гость
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #58 :
Апрель 11, 2014, 14:04 »
Мне кажется, что Old и Igors давно уже должны устроить ООП-баттл
Записан
8Observer8
Гость
Re: Создание массива вершин фигуры с помощью редактора
«
Ответ #59 :
Апрель 11, 2014, 14:24 »
Пока из файла построить не получается. Не разоблался в соответсвии между порядком координат и индексов в массивах.
Вот кубик, который задаётся в самой программе:
Исходники:
https://github.com/8Observer8/Cube
Записан
Страниц:
1
2
3
[
4
]
5
6
7
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...