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

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

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

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

Zontik

Примерный общий вид (Maxim):

Полное ТЗ (Chuzhoi):
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. Опционально: отображение джойнтов, вхотов (что там еще в модели может быть?)

Еще варианты интерфейса для обсуждения. Противоречивые.





Дальше под спойлером идет достояние истории - этот пост в первоначальном варианте.
[spoiler]Идея принадлежит Максиму, он сам собирался написать, но у меня терпения не хватило дождаться.
Собственно, это просьба. К любому из вас, кто способен писать программы. Нужна утилита, которая бы показывала объекты в формате BIN в их натуральном виде. Желательно с текстурами, которые всегда находятся в подпапке TXT или TXT16 относительно расположения самого файла BIN.
Какой-то просмотрщик существует, но, во-первых, он крайне глючный и показывает текстуры только из текущей папки, что делает его применение крайне ограниченным. А во-вторых, добрую половину моделей он просто отказывается демонстрировать, вылетая из окна.
Собственно, проблема в том, что при накоплении изрядного количества моделей (а в случае с кампанией счет идет уже на многие сотни) в них становится невозможно ориентироваться. В результате огромное количество времени расходуется авторами впустую: поискал - поставил - не подошло - пошел искать другую. А если речь идет о неизвестных ресурсах, как те же паки от Кристины? Сплошная головная боль.
Что нужно:
1) Просмотр как при щелчке по конкретному файлу, так и списком (запуск программы, выбор активной папки, отображение моделей в виде превьюшек - либо все скопом (наверное, чересчур затратно по ресурсам), либо по выбору из списка в окне программы).
2) Автоматическое подключение текстур из трех возможных мест: папка с объектом (бывает нужно в ходе разработки) и две подпапки: TXT16 и TXT.
3) Поддержка всех существующих форматов текстур: PNG, DDS, GIF, PCX, TGA, BMP.
4) Обязательное отображение имени текущей модели, хоть где, хоть в статусной строке, но чтобы его не надо было держать в уме, а можно было считать с экрана.
5) Вращение/приближение/смещение модели при просмотре желательны, но не так важны на начальном этапе. Первичная функциональность достаточна и без этого.
6) Отсутствие вылетов, если модель вдруг окажется нестандартной (джойнты, вхоты, прозрачные/светящиеся участки или просто какая-то не такая). Последнее достало особо.
Вроде ничего не забыл, если что, Максим поправит.
Так что, кому-нибудь по зубам это сделать? Это ведь попроще будет, чем плуги ковать для Блендера (если, конечно, не ошибаюсь), а полезность трудно переоценить.
В крайнем случае можно сделать упрощенный вариант, хотя бы просто по пункту 6. И то будет на порядок лучше, чем сейчас. Не представляете, до какой степени надоело выбирать модели через DromEd!!![/spoiler]
Дайте глазам отдохнуть! Тёмное место

Призрак Boris'а3000

Ещё чтоб имена файлов используемых текстур отображались. И чтоб можно было водить мышой по картинке с текстурой, а на модели бы указывалось, где на ней это место.

А это касается и obj и mesh?

И нельзя ли сделать проверку применимости модельки для ОМ?
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

Maxim

Ну ты просто опередил на несколько часов, очень спешишь. Всё правильно. Только ещё хотел бы поиск чтоб был. И возможность распределять тематически по категориям, которые можно было бы вводить пользователю.
Просто представьте, что вам требуется, допустим, расставить мебель в доме. И вот вы идёте, как выразился Зонтик, на мебельный склад. И каждый раз требуется все модели на складе осматривать, чтобы понять что вам, собственно, нужно.
Я уже трудно представляю как именно называется какой-нибудь там стол или миска, или что угодно из нескольких десятков моделей что успел наделать. Чего "душа именно здесь желает" прекрасно понимаешь, а какой это у тебя файл - уже приходится вспоминать. А представьте что будет потом, когда своих моделей перевалит за сотни, а может и тысячу. Да мы замучаемся убивать сколько-то % времени на подобную рутину, не имеющую ничего общего с креативностью.

Посмотрите программу T2OLv3complete. Что-нибудь типа такого можно забацать? Чтобы если ты знаешь, что сейчас нужен факел или табурет или даже Npc, то сразу раскрываешь свёрнутую плюсиком или как-то так категорию соответственно "Lights", "Furniture" или "Creature".
Still they talk anyway
When there's nothing to say
There's so much said in empty words...

Zontik

Точно, про отображение имен используемых текстур забыл. Вторая по важности вещь!
ЦитироватьИ нельзя ли сделать проверку применимости модельки для ОМ?
Вот этого не понял. Разве в ОМ какой-то особый формат моделей? Или речь об Old Dark?
Maxim, давай оставим поиск на вторую версию. Иначе никогда не увидим первой, потому что тема более чем скользкая. Надо будет встраивать модуль искусственного интеллекта, чтобы он по внешнему виду определял категорию, к которой отнести модель. А если сортировка тупо по именам, то это околонулевая функционцальность. Посмотри смеха ради, как называются модели у Кристины. Ну хорошо, у тебя стол - это всегда Table. Или Tabl. Или Tbl. Или то же, но с опечаткой...
В общем, это требование пока сложно сформулировать, мне так кажется.
Дайте глазам отдохнуть! Тёмное место

Призрак Boris'а3000

Цитата: Zontik от 21 июля 2017 11:14:02
Разве в ОМ какой-то особый формат моделей?
Я не знаю, скорее модели как-то связаны с окружающим пространством. Я попробовал однажды посадить деревце из общего склада для ФМ-ок -- оно получилось гигантским и висящим в воздухе. После этого я перебирал варианты только из паков, созданных для ОМ.

Цитата: Zontik от 21 июля 2017 11:14:02
Или речь об Old Dark?
Нет, почему. Про New.
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

Maxim

ЦитироватьMaxim, давай оставим поиск на вторую версию. Иначе никогда не увидим первой
Ты прав. Согласен. Размахнулись, мечтатели, а тут ещё неизвестно смогут ли хоть что-то сделать. Ты бы, как и я, наверное очень хотел помочь Сообществам Thief такой штуковиной. Но никаких навыков программирования.
Still they talk anyway
When there's nothing to say
There's so much said in empty words...

nemyax

Цитата: Zontik от 21 июля 2017 10:16:53Это ведь попроще будет, чем плуги ковать для Блендера (если, конечно, не ошибаюсь)
Сложнее. Чтобы сделать независимый просмотрщик, ты должен уметь в гуй и в OpenGL/D3D. А для плугов под блендер тебе вообще не надо ничего уметь.
К такой задаче готов только Force, пожалуй, но он уже не то чтобы с нами.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Soul_Tear

Да, такая штука нужна. У меня в папке свыше 1600 файлов. Но тему лучше бы создать на ТТЛГ, там людей больше и программистов больше.

nemyax

Вы бы что называется поисследовали бы рынок. Вдруг уже существует похожий просмотрщик моделек с поддержкой плагинов и достаточно было бы добавить плагин для даркошных форматов.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Zontik

Boris3000, нет никакой разницы, ОМ или ФМ. Если у тебя что-то там не получилось, это определенно не вина формата. [spoiler]Мало у кого что-то получается в этом редакторе с первого раза.[/spoiler] Могут отличаться разве что модели для старого и нового движка, да и то разве что набором доступных форматов и размеров текстур.
nemyax
ЦитироватьА для плугов под блендер тебе вообще не надо ничего уметь.
Ты слишком высокого мнения обо мне. Я не умею даже исследовать рынок.
Да, прошу добавить еще одно требование от себя лично: чтобы работало под XP.
Дайте глазам отдохнуть! Тёмное место

nemyax

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

import bpy, os, glob

def batch_import_bins(path):
    path += os.sep
    l = len(path)
    for f in (glob.glob(path + "*.bin")):
        try:
            bpy.ops.import_scene.dark_bin(filepath=f)
            fname = f[l:]
            ao = bpy.context.active_object
            while ao.parent:
                ao = ao.parent
            ao.name = fname
        except:
            continue
    bpy.ops.object.mode_set()
    for o in bpy.context.scene.objects:
        o.hide = True
        if o.name.lower().startswith("bbox"):
            bpy.data.objects.remove(o, do_unlink=True)

bin_folder = "d:\\programs\\games\\system-shock-2\\obj"
batch_import_bins(bin_folder)

Только поправьте путь на нужный для переменной bin_folder.
Результат работы будет примерно такой:
http://pix.academ.info/images/img/2017/07/21/37a15b49349784e9e9d90c5b48288ed5.png
Объекты импортнутся, переобзовутся именами своих файлов и сделаются скрытыми. Чтобы увидеть объект, откройте ему глазик в окне аутлайнера.
Текстур я что-то не вижу, тут мои баги, судя по всему.
Работа под XP для свежих блендеров не гарантируется.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Zontik

Нет, это вариант, конечно (хотя интересно, сколько времени и ресурсов займет импорт 1600 объектов?), да и текстуры подтянутся, это, я так понимаю, решаемо. Но менять одни костыли на другие я лично смысла не вижу. Либо у тебя две ноги, либо ты хромой.
Дайте глазам отдохнуть! Тёмное место

nemyax

Цитата: Zontik от 21 июля 2017 20:47:47
интересно, сколько времени и ресурсов займет импорт 1600 объектов
Средства блендера позволяют не импортировать всё зараз, а отображать, например, гуйный списочек, набитый моделями из указанной папки (с фильтрацией, сортировкой и всеми делами). При клике на пункт списочка можно выгружать текущую модельку и загружать новую. Но тут не на 5 минут работы.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Zontik

То есть в текущем виде этот вариант несерьезен. Даже при условии некоторого знакомства с Блендером.
Пять-десять, даже двадцать, пусть даже сто моделей я могу и в собственной памяти удержать. Если я их когда-либо видел, конечно. Речь-то именно о больших количествах, вот тогда это имеет смысл. И то не для меня, у меня-то по-прежнему XP.
Дайте глазам отдохнуть! Тёмное место

Soul_Tear

R Soul много всяких программ понадедеал, зачем игнорировать "зарубежных партнеров" (ВВП)?

С другой стороны, лично мне Блендера до сих пор хватало. Там удобно импортировать, правда без текстур, но итак ясно, что это. Зачем текстуры? Вертеть можно, ничего не вылетает. Чтобы увидеть текстуры я открываю Дромед > Portalize > F3 > Stool (потому что запомнилось) > и назначаю модель, на которой хочу увидеть текстуры.
Кроме того, закидывая новые чужие модели в папку Obj, я сразу задаю им понятные имена. Например, у ПинкДота паутины называются pajecz##, я их переименовал в Web##. Потом уже не забудешь.

Приспособится можно, хотя конечно толковая прога была бы кстати.