Программа-просмотрщик объектов: требуется помощь программистов!

Автор Zontik, 21 июля 2017 10:16:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Призрак Boris'а3000

Цитата: Zontik от 31 июля 2017 09:34:31
Radeon 1950x Pro. Кажется. По-моему, это PCI-E, было настолько давно, что уже просто не помню.
Эта карта была и на AGP. Давай модель материнки в студию.

Цитата: Zontik от 31 июля 2017 09:34:31
Я в гонке вооружений не участвую. Не тянет - и не надо. Ограничивать себя, ха. Ограничивать - это ставить себя в зависимость от каких-то драных железок. Да пропади они все.
Значит, так тебе нужен просмотрщик. Это, в принципе, ясно сразу. Кто хочет, ищет возможности, а кто не хочет -- причины. Хотя идея ведь не от тебя исходит, поэтому тебе можно.
Но в таком случае я предлагаю Форсу не мучиться и делать программу под OpenGL 3.2, а ты, если захочешь ею воспользоваться, поменяешь себе видеокарту. Тебе даже с нВидии на Радеон не нужно переходить -- вообще плёвое дело.
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

Force

Мое мнение таково: вы мечетесь между простым, но функциональным решением и глобальным, правильным и всеобъемлющим. Только с отклонением в сторону глобального. При этом вы же понимаете, что вам в любом случае придется каталогизировать все необходимые вам модели?

Если расставлять всё по полочкам и описать идеальную "программу", а точнее - вебсервис (да-да), то выглядит это примерно так:
Есть сайт по типу соц-сети, куда пользователи заносят модели для вора, они добавляют к ним любые описания, теги и чего только вздумается, в простом интерфейсе прямо на сайте можно ткнуть в любую модель, повертеть ее и понять, нужна она или нет, заодно посмотрев используемые ею ресурсы и пути к ним. Скачать. А и в качестве мегафичи - ткнуть в модель карандашиком и увидеть где располагается соответствующая точка в ее скине. (почти цитата) :biggrin: Именно подобное решение является окончательным шагом в ваших "хотелках", потому что вслед за поиском по тегам встанет вопрос, а как бы так поудобнее получить уже заполненную базу тегов где кто-то кропотливо свои модельки уже описал. А как же быть с моими двумя тысячами описанных моделек, чтобы мне соединить их с тремя тысячами других моделек Зонтика и т. п. А в таком вот мегасервисе, где все пользователи работают с единой базой - такого вопроса не возникнет. Правда, понадобится доступ к инету, но это уже другой вопрос ;).

Такое решение - оно, безусловно, правильное и покроет пожалуй большую часть потребностей дромедеров... Задержитесь на последнем слове предыдущего предложения подольше, осмыслите его, а потом возвращайтесь. Вернулись? Осмыслили? Тогда, должно быть вы уже начали понимать, что описанный выше идеальный сервис - это "золотая иголка для примуса". При этом разработка такого вебсервиса ОЧЕНЬ дорогостоящая (если пересчитать трудозатраты, т.е. человекочасы в деньги, получатся десятки тысяч рублей или тысячи долларов, если угодно). Вы же хотите получить такое бесплатно. Ладно, допустим, но при этом пользоваться этим сервисом будет два с половиной человека... ну ладно, можно умножить на десять... ну так и быть, на двадцать... То есть даже сотня юзеров не наберется. Не впечатляет. При всем при этом описанный сервис он уже идет перпендикулярно тому, что делаю я. То есть, общего с моим проектом тут будет только код чтения bin-файла, при этом, скорее всего его надо будет переписать под JavaScript, чтобы модельку рисовать прямо на сайте при помощи WebGL... В общем, я думаю, вы уже поняли, что как бы классно ни звучала такая идея - она слишком специфическая и узконаправленная и получить такую вот так вот просто по заказу бесплатно - практически нереально. Заинтересованных нет.

Альтернативой такому мегаудобному и функциональному сервису может служить простой просмотрщик, который показывает модельки в структуре ваших каталогов. Например, каталог Жилые помещения/Мебель/Кухня/Столы... То есть, вы располагаете в некоей своей подготовленной личной структуре каталогов bin-модельки (только модельки, текстуры можно свалить в кучу, мало того, скорее всего именно так и придется делать), а при помощи просмотрщика путешествуете по ней и ищете нужные. Нашли - скопировали в каталог Дромеда и строите дальше. Нужно просмотреть какой-нибудь новый пак - помещаете его в рабочий каталог просмотрщика, либо в самом просмотрщике указываете путь и смотрите модели в паке. Но как я понял, у вас уже есть личные коллекции моделей, которые хотелось бы каталогизировать, так вот, вы можете сами растащить их по папкам так как вам удобно. При этом в таком подходе решается даже вопрос слияния двух "баз" моделей, потому что "база" обеспечивается файловой системой, а не дополнительным уровнем абстракции в лице дополнительной же базы данных. Думаю, можно будет даже прикрутить поиск по каталогам, хотя на первых парах можно будет искать нужный каталог в такой структуре средствами операционной системы (ctrl+f, все дела).

Такое решение сделать в разы проще, при этом я сам заинтересован в этом, потому что 80% функционала мне понадобится для движка. Так что предлагаю подумать еще раз и обсудить.

Zontik

Я и не мечусь, мне нужно простое функциональное решение. Все остальное - для какого-то абстрактного дисциплинированного человечества, которого в этом мире нет и быть не может.
Дайте глазам отдохнуть! Тёмное место

Призрак Boris'а3000

#108
Цитата: Force от 31 июля 2017 10:43:15
вслед за поиском по тегам встанет вопрос, а как бы так поудобнее получить уже заполненную базу тегов где кто-то кропотливо свои модельки уже описал
Не встанет. Каждый будет работать со своей личной, собственноручно созданной БД тегов. Точно так же как запускает музыку на прослушку в своём каталогизаторе музыки, а не лезет куда-то во вселенский склад.
Я беру и надираю откуда-то этих моделек. Пофиг, с описаниями они или без - я их в любом случае игнорю. При первом просмотре каждой модели я назначаю им теги. Таким образом постепенно будет формироваться моя личная БД, в которой надо будет производить поиск.
Это есть попросту документирование собственной работы, но в чуть более продвинутом виде -- не файлик текстовый с описанием всего и вся, а элементарная СУБД.

Цитата: Force от 31 июля 2017 10:43:15
Альтернативой такому мегаудобному и функциональному сервису может служить простой просмотрщик, который показывает модельки в структуре ваших каталогов. Например, каталог Жилые помещения/Мебель/Кухня/Столы... То есть, вы располагаете в некоей своей подготовленной личной структуре каталогов bin-модельки (только модельки, текстуры можно свалить в кучу, мало того, скорее всего именно так и придется делать), а при помощи просмотрщика путешествуете по ней и ищете нужные
Так и знал, что кто-нибудь это предложит. Ну не годится же. Вернее, годится лишь по сравнению с полным отсутствием просмотрщика. Очевидно, что у любой вещи не один, а несколько признаков, т. е. несколько параллельных классификаций. Возьмём музыку -- у нас есть год выпуска, исполнитель, жанр, автор и т. д. и т. п. По какому из этих признаков создавать каталоги? А в какой каталог помещать альбом, если он удовлетворяет сразу нескольким признакам?

Поэтому в БД всё валяется в общей куче, без всякой сортировки по каталогам, но каждой единице назначен ряд признаков, по которым и производится поиск и выдача его результатов.

Цитата: Force от 31 июля 2017 10:43:15
"база" обеспечивается файловой системой, а не дополнительным уровнем абстракции в лице дополнительной же базы данных. Думаю, можно будет даже прикрутить поиск по каталогам, хотя на первых парах можно будет искать нужный каталог в такой структуре средствами операционной системы (ctrl+f, все дела).
Да, файловая система -- это тоже база данных. Тем не менее не надо делать из файлового менеджера СУБД. Файловый менеджер -- это файловый менеджер. Предназначен для того, чтобы что-то делать с файлами, а не для бесконечного по ним поиска. Почему? Потому что иначе это:
1) медленно по сравнению с поиском по базе тегов, висящей в оперативке
2) приводит к повышенному износу жёсткого диска

Вот поэтому и существуют "дополнительные уровни абстракции в виде дополнительной базы данных". А иначе сидели бы все в Тотал Коммандере, а не в Экцессе.
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

Force


nemyax

Force
В глобальные абстракции уводит только Бориса, который ни миссий не делает, ни утилиты не заказывал. А Maxim и Zontik просили вьювер браузерного типа.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Force

Значит делаем для начала что попроще - модели в каталогах? С поддержкой структуры каталогов или без? Для начала можно вообще прототип сделать, максимально простой, потом нарастить...

Призрак Boris'а3000

#112
Цитата: nemyax от 31 июля 2017 11:41:59
В глобальные абстракции уводит только Бориса, который ни миссий не делает, ни утилиты не заказывал. А Maxim и Zontik просили вьювер браузерного типа.
А это что:
Цитата: Maxim от 24 июля 2017 02:34:39
Да не, Борис всё правильно говорит. Просто нужен каталогизатор с возможностью поиска или какой-то разбивкой на категории/иерархии
?
Или по-твоему "каталогизатор с возможностью поиска" -- это дерево виндового Проводника?

И если я не набрался смелости кого-то об этом просить, это не значит, что я её "не заказывал". Если б не заказывал, меня бы вообще тут не было.
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

nemyax

Цитата: Boris3000 от 31 июля 2017 11:58:07
Или по-твоему "каталогизатор с возможностью поиска" -- это дерево виндового Проводника?
Ну я бы мог расписать, какой я вижу эту прогу, но толку? Я тут не заказчик и вообще не ЦА. И к счастью не исполнитель =)
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Chuzhoi

#114
Цитата: Zontik от 31 июля 2017 09:34:31
Да где же там в хотелках список с превьюшками?
Первый пункт.
"1) Просмотр как при щелчке по конкретному файлу, так и списком (запуск программы, выбор активной папки, отображение моделей в виде превьюшек - либо все скопом (наверное, чересчур затратно по ресурсам), либо по выбору из списка в окне программы)."
Значит, первый пункт упрощается? Все, что после первой запятой, отсекается? Ну и замечательно. Давайте спустимся на землю.

Цитата: Boris3000 от 31 июля 2017 11:33:41
Так и знал, что кто-нибудь это предложит. Ну не годится же.
Годится, годится. Начинать надо именно с этого. Именно в связи с полным отсутствием нормального просмотрщика. Я вообще считаю, что лучше взять готовый просмотрщик и добавить в него поддержку bin. Но раз уж у Форса уже есть код, который читает содержимое bin и отправляет его в OpenGL, то нужно просто-напросто сколотить из него программу, которая будет показывать bin по щелчку на файле. Это не должно занять много времени, а профит должен быть огромный. А база данных с тегами и проч. - это уже действительно из разряда долгосрочных проектов.

Цитата: Boris3000 от 31 июля 2017 11:33:41
Но в таком случае я предлагаю Форсу не мучиться и делать программу под OpenGL 3.2, а ты, если захочешь ею воспользоваться, поменяешь себе видеокарту.
А вот здесь совершенно поддерживаю. Если доработка кода ради того, чтобы он запустился у одного человека в мире, отнимет у Форса пару месяцев жизни (при том, что цена вопроса несколько сот рублей) - я готов самолично за свои деньги купить Зонтику видеокарту. Ибо смотреть на это все спокойно совершенно невозможно. Борис, продолжай расспросы.

Цитата: Force от 31 июля 2017 11:53:09
Значит делаем для начала что попроще - модели в каталогах? С поддержкой структуры каталогов или без? Для начала можно вообще прототип сделать, максимально простой, потом нарастить...
Я думаю, оптимальный путь такой:
1. Показ модели по щелчку на файле с возможностью перехода к следующему/предыдущему bin'у в текущей папке. Вверх/вниз по структуре катологов не надо, иначе все несоразмерно усложняется.
2. Также желательно реализовать открытие через стандартное системное диалоговое окно выбора файла (папка по умолчанию должна быть текущая). Вот там пусть и путешествуют по структуре, если хотят.
3. Поиск текстур открываемой модели в текущей папке, а также в  txt/txt16.
4. Отображение имени текущей модели (с абсолютным путем), списка текстур (с относительными путями в случае их наличия - txt/txt16), геометрических размеров модели (длина/ширина/высота), числа полигонов в модели. Все отображение прямо во вьюпорте средствами OpenGL (сверху/снизу/сбоку/по углам).
5. Фон окна черный. Один источник света слева-сверху со стороны зрителя + эмбиент лайт в разумных пределах. Опционально: режим Full Bright.
6. Возможность вращать модель мышью и приближать/удалять камеру колесом. Вращаться должна именно модель, а не камера (у нас же будет источник света - зачем нам смотреть на модель с темной стороны).
7. По умолчанию (сразу после загрузки) модель занимает примерно 1/2...2/3 вьюпорта. Дефотный угол - вдоль одной из осей или что-то типа изометрии (обсудить с заказчиками, как лучше). Если модель покрутили/изменили масштаб - то следующая открываемая модель все равно показывается в масштабе и под углом по умолчанию.
8. Опционально: можно реализовать отключаемый режим "фиксированный масштаб", когда при переходе к следующей модели масштаб/угол не изменяются (может быть полезно при сравнении размеров моделей). Но можно и не реализовывать, если влом или если никто из потенциальных юзеров не видит в этом пользы.
9. Все управление (кроме того, что в п. 6) - с  клавиатуры. Например: стрелки вправо/влево - следующий/предыдущий файл, O/Ctrl+O - открыть файл, F - режим "Full bright". На экране внизу - краткая инструкция мелким шрифтом. Никаких тулбаров с кнопками. Раскладку клавиатуры обсудить с заказчиками и захардкодить - никаких ini,  привыкнут.
10. Если при загрузке модели пошло что-то не так, программа не должна виснуть или вылетать, а выдавать внятное сообщение в центре пустого окна. Например: "Animated models are not currently supported." Или просто: "Could not open file ...."
11. Программа должна нормально работать в окне любого размера и адекватно реагировать на изменение размера окна, распахивание на весь экран и т. д. Масштаб модели при изменении размера окна пропорционально изменяется.
12. Опционально: Копирование имени файла и дополнительной информации (имена текстур) в буфер обмена.
13. Опционально: отображение джойнтов, вхотов (что там еще в модели может быть?)
14. Опционально: работа с zip-архивами, в т. ч. *.crf (если это просто технически и если заказчики подтвердят, что это действительно надо).
15. Опционально: снятие скриншота.

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

nemyax

Цитата: Chuzhoi от 31 июля 2017 13:31:00
А база данных с тегами и проч. - это уже действительно из разряда долгосрочных проектов.
"База данных с тегами" - это один словарик с ключами - строчками и значениями - бинарными деревьями строчек-путей.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!


Zontik

ЦитироватьТак и знал, что кто-нибудь это предложит. Ну не годится же. Вернее, годится лишь по сравнению с полным отсутствием просмотрщика.
А что у нас есть, кроме полного отсутствия? View.exe - это даже не костыль, а лишь ручка от него.
ЦитироватьДля начала можно вообще прототип сделать, максимально простой, потом нарастить...
Поддерживаю. Это не тот случай, когда нужно тянуть до последнего и выдать сразу само совершенство.
А вообще Chuzhoi все правильно написал. Разве что кроме двух последних пунктов. Работать с архивами - зачем? Распаковать, что ли, долго? Тем более что для оригинальных моделей T2 уже имеется средство. А последнее - вообще опция для домохозяек. Но им эта программа и так не нужна.
Дайте глазам отдохнуть! Тёмное место

Призрак Boris'а3000

#118
Цитата: Chuzhoi от 31 июля 2017 13:31:00
Борис, продолжай расспросы.
Расспросы мои что-то получаются уж больно риторическими. Риторические расспросы -- это как комические куплеты в "Трое в лодке..."
- Что же вы мне всё время играете, сээр?
- Я уже в са... в са...
- В саду.
- Сэээр.
- Сэээр.

ЗЫ.
Ещё одно маленькое пожелание -- писать максимально читаемый и закомментированный код, чтоб в случае чего его мог легко подхватить другой человек.
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

Chuzhoi

Ну что? Оставляем 13 пунктов? Никто не суеверный?

Если непременно нужен 14-й пункт, могу еще предложить добавить режимы отображения Wireframe/Wireframe+textures, но это уже очень-очень опционально и при условии, что это сделать легко. Если в этом есть хоть какая-то сложность - лучше не делать (не в этом главное назначение программы).

Еще хочу добавить по вращению модели: оно должно осуществляться при зажатой левой кнопке мыши. То есть кликаем на вьюпорте, оставляем кнопку нажатой и крутим модель. При ненажатой кнопке мыши ничего в программе происходить не должно. Так, как сделано в моем "мини-симуляторе" - когда мышка полностью перехватывается для управления камерой - делать не надо, иначе невозможно будет, например, управлять размером окна и закрывать программу крестиком. Вон, Борис даже жаловался... Колесо же должно функционировать все время, когда программа в фокусе (вверх - приближение, вниз - удаление).