Здравствуйте!
Давным-давно у меня возникла идея создания игры Глобальная Война
Вот, я созрел для ее реализации.
Потихоньку еще с прошлого года начал пилить, то через три месяца затух.
Сейчас реанимирую разработку.
Вот репозиторий проекта.
Цели проекта:
1) Покодить, разгрузить голову, подкачать скиллы (многопоточное программирование и кое-что еще),
2) Создать команду для создания игры, получить опыт в open source
3) Теоретически возможная какая-то монетизация в принципе, однако на данном этапе обсуждать это слишком рано
Я сам буду лидером проекта и проводить код-ревью.
Правила оформления кода
Не совсем уверен в каком подфоруме публиковать этот пост.
Тут я не только хочу сделать объявление о наборе в команду,
но еще описывать текущий статус проекта, используемые
технические решения, но еще и задавать разнообразные технические вопросы,
просить советы по улучшению архитектуры и т.д.
Сейчас я напишу текущий статус проекта и дальнейшие планы.
В настоящий момент пишу на винде, 2019 студия, можно использовать последние кресты,
что держит эта студия.
Сейчас имеется несколько подпроектов.
node_server - это основной сервер, на котором происходит вычисление игровой логики.
Данных серверов может быть запущене много, и они будут взаимодействовать между собой.
Каждый такой сервер будет ответственнен за определенную зону на карте.
Нод-сервера будут порождаться и тушиться специальным монитором.
Все нод-сервера будут находится в одной локальной сети, в одной серверной.
Взаимодействие между ними планируется довольно интенсивным.
balancer_server - специальный сервер, предназначенный для запуска новых нод-серверов,
выключения неиспользуемых. Следит за нагрузкой на нод-сервера и балансирует нагрузку.
proxy_server - самописный прокси-сервер, который будет иметь выход в интернет и обслуживать
входящие подключения от клиентов.
balancer_monitor - QT-приложение, которое будет отобразать статиски и визуально графически отображать зоны нод-серверов и их загрузку. Будет позволять также вручную балансировать (создавать, удалять) но-сервера.
win_client - Windows-приложение, использующее фремворк bgfx, клиент для Windows. В перспективе надо будет создать клиенты для других ОС.
bot_client - консольное приложение для тестирования
Также я начал делать mesh_builder - простейщий редактор мешей.
Вот тут у меня возникли сомнения. Не хочу сейчас подробно расписывать,
какой редактор я хочу. Из существующих редакторов я пока не нашел нужный,
хотя, может, плохо искал.
Подпроект mesh_builder как бы уводить подпроект в сторону. А с другой стороны,
чем черт не шутит, почему бы не покодить?
И еще нужно будет сделать генератор карт (генератор ландшафтов, генератор некоторых мешей,
расстановщий мешей) из данных OSM.
В настоящий момент 3D дизайнеры пока не требуются.
Нужно будет немного программистов на первое время.
Задавайте вопросы, отвечу.
P.S.: Администраторам форума - возможно здесь координироваться, или в этом месте обсуждается тема исключительно набора в команду?
Еле нашел топик,забыл название и раздел.
Звучит красиво, код ещë не смотрел. В любом случае идея не нова, но ваши инструменты наверняка пригодятся.
Вы не смотрите что нет комментариев, просто никто не хочет брать долгострой без явных перспектив по коммерческому направлению.
Я смотрю у вас там вроде мастер сервер, интересно будет посмотреть.
Вопрос такого характера, можно ли использовать ваш код (его часть) или подход в своих проектах?
Да я так и понял, что в долгострой никто особо не стремится.
Код использовать можно, однако фактически сейчас оттуда особо нечего использовать.
В ближайшее время буду пилить MeshBuilder для низкополигонального моделирования,
что немного уводит проект в сторону. Это будет что-то вроде ручного photogrammetry.
Но надо самому реализовать какой-то базовый функционал.
GhostCoderPPetrov
Можно узнать что именно вы ищете(чего вам так нехватает) в 3д редакторе?
Не 3D дизайнер, опыта особого нет в 3D моделировании.
Какие есть простенькие 3D редакторы для создания низкополигональных 3D моделей,
чтобы можно было модель создавать с 5-6 фото объекта, под разных ракурсом?
Всякие Blender, 3D Max, Maya - они мне кажется тяжелыми раз,
и во-вторых есть ли у низ средства для создания моделей по фото?
Ну, скажем в Blender есть возможность создать модель, есть редактор текстурных координат.
Однако саму модель ты создаешь вручную, используя разные операции типа выдавливания, отсечения и прочее из головы.
Есть еще пакеты для автоматического создание моделей по фото.
Включая и бесплатные. Однако они генерируют кучу полигонов.
У меня идея такая. Может уже есть что-то готовое?
Есть, скажем, 5-6 фото объекта с разного ракуса.
Обычно грубо объект можно представить в нулевом приближении в качестве box (коробки).
Это не обязательно bounding box. Скажем, объект у нас - компьтерная мышь.
Основание объекта - тут хорошо подхоит прямоугольник.
А вот "крыша" - гладкая, вся на поверхностях нёрбс.
Вот для такого объекта высота "ориентировочного" box, будет, скажем, доходить до какой-то характерной точки объекта, например, сочленение двух пластиковых деталей.
У тут мысль для редакторе - мы в ручном режиме ориентируем камеру для каждого фото.
У нас есть 3D окошечко, в котором при помощи лайнсетов отображен наш box.
Три ребра нашего бокса - красное, зеленое и синие. Эти ребра совмещены
с осями координат (X, Y, Z)
Поверх нашого 3D box рисуется наша текстура (как двухмерное изображение типа billboard)
с прозрачностью 30-50%.
Мы можем изменять положение нашей камеры стандартным способом (как в 3D viewerах),
масштабирование, вращение и т.п.
И совмещаем положение нашего бокса с картинкой.
Теперь наша камера ориентирована правильно -
расположенна примерно в том месте, откуда делалась съемка.
Для каждой картинку ориентируем камеру.
Далее, когду у нас камеры ориентированы, мы можем приступить к созданию моделей.
Для этого у нас показываются два окошечка одновременна с друмя разными фото (вращение камеры сейчас заблокировано).
Выбираем "создать треугольник" и тыкаем мышью в три места на первом фото.
Соответственно, мы из фото не знаем глубину до выделенных точек,
и имеет три луча, идуших из позиции камеры.
Предполагаем, что нужный нам треугольник виден на втором фото,
но под другим ракусом.
На втором фото лайн сетами рисуем лучи возможных положений трех вертексов треугольника.
Если камеры ориентированны без больших погрешностей,
то мышью выбираем позицию этих вертексов на втором фото.
Таким образом определяем координаты вершин.
Другим вариантом является возможность тыкнуть в любом месте на втором фото,
и программа каким-то способом (пока еще не обдумывал в деталях) открорректирует ориентацию первой или(и) второй камеры (или вертекса).
Программа автоматические генерирует текстуры, используя большие участки с фото.
Если, например, на втором фото треугольник по площади в два раза больше чем на первом,
то имеет смысл генерировать кусочек текстуры для него из второго фото.
Однако, имеет смысл сделать и ручной режим. Отображаются два кусочка фото (из первого и второго фото) и результурующий кусочек. И пользователь мышкой водит, примерно как кистью в редакторах 2D изображиений, скажем зажмет левую кпоку мыши - небольшой участок вокруг мыши будет браться с первого фото, зажмет правую - со второго фото.
Для чего это? Есть скажем фото здания с двух ракусов. На одном фото окно загородило дерево.
Чтобы резуьтирующая модель была без изображения дерева в текстурах,
нужно вручную в том месте мышью повозюкать, и взять этот кусок из другого фото,
где ракурс другой и дерево не заслоняет.
Ну и всякие блескучие объекты можно моделировать.
Или я изобретаю велосипед и уже есть готовое что-то?
В принципе для этого я и создал тему на этом форуме, чтобы не городит лисапедов в том числе.
GhostCoderPPetrov
Вообще есть возможность через мобильное приложение довольно черновую модельку "сфоткать" и скинуть уже в рабочую прогу, но это всё, что я знаю об этом.
Есть готовые Online сервисы которые создают многополигональные модели по фото. Есть как платные, так и бесплатные. Качество и уровень моделей на столько высок, что для игры они просто не подходят (ну скоро уже начнут подходить). Поэтому моделям на выходе приходиться делать ретопологию (для этого тоже есть готовые инструменты).
Также я вот щас сходу нашел даже программу Visual SFM or CMVS.
на 24ой минуте можно посмотреть результат
Это называется 3D scanning with Photogrammetry.
тут предлагают использовать MeshLab для ретопологии, тоже бесплатна. https://ichip.ru/sovety/prevrashhaem-obychnuyu-fotografiyu-v-3d-model-186352
Ну то что подойдет для 3д принтера, уже можно использовать и для игры.
Ну а здесь, можно посмотреть сколько на таких программах (зарабатывают, ну или не зарабатывают)) https://all3dp.com/1/best-photogrammetry-software/
Salamandr
Спасибо. Но дело в том, что идея в "полуавтоматическом" создании моделей у меня пришла как раз
после просмотра подобных видео, где-то полгода назад.
Про такие пакеты в своем исходном сообщении я и упомянул.
Мне не нравится такой подход - полностью автоматическая генерация модели, а потом ретопология.
Совсем другое дело, когда ты контролируешь создание каждого треугольника,
и ты точно будешь знать, что лишних треугольников у тебя в модели не будет.
Кроме того, почти в каждой статье про 3D scanning with Photogrammetry говорится про невозможность
построения моделей которые зеркальные или блескучие.
Или чего только стоит возможность создания модели домов (а для меня это почти основное!)
и удаления ненужных фрагментов деревьев с текстур.
Salamandr
меня интересует именно "ручное" 3D scanning with Photogrammetry.
Я изначально писал про "Это будет что-то вроде ручного photogrammetry." в сообщении #2,
где под словом photogrammetry я имел в виду 3D scanning with Photogrammetry.
Понятно, ну точнее не понятно что именно вас не устраивает. Но если вы можете улучшить существующие решения, то я буду рад за вас, потому что лично я в этом не разбираюсь.
У меня есть навыки моделирования и могу сделать любую модель чисто по фотографиям (или одной), думаю как и любой другой 3д моделлер. Поэтому если надо, обращайтесь несколько домов в месяц из коробок я сделаю совершенно бесплатно (когда есть время). Текстуры поправите сами или сделаете их более детализированными.
Вообще есть такая программа как Quixel, которая позволяет создать любой материал просто с немыслимой детализацией путём генерации и небольших правок. В общем то все построенные дома используют какие то технологии, которые для нескольких домов могут быть точно такими же. Благодаря этому можно сделать ещё круче (даже чем по фото).
Salamandr
Может все из-за того, что я сам толком никогда не моделировал,
поэтому у меня такие извращеные "хотелки".
Тем не менее руки чешутся реализовать вот это.
Надеюсь, общественность оценит этот инструмент (когда-нибудь).
За предложение помочь - спасибо!
Сегодня сделал небольшой коммит.
MeshBuilder - это QT приложение которое использует QOpenGLWidget.
Пытался нарисовать лайнсет при помощи vbo - работало.
Решил, что использовать vbo для простейшего box слишком жирно,
решил в старом добром fixed pipeline режиме запустить - что-то не работает.
Может кто-нибудь подскажет что-нибудь?
Еще тестовые фото залил.
GhostCoderPPetrov
Днем посмотрю одним глазком, давно qt не трогал.
Не было времени, часа два только качал сам qt. По коду вроде всё ок. Завтра точно посмотрю.
Сейчас поигрался немного.
Там glFlush() не было. Однако еще что-то с камерой, near или far отсечение.
Колбасит как-то странно сценку.
Что-то не так.
Вообщем, плюнул я на "старый добрый" fixed pileline и glBegin\glEnd.
Будем через VBO с шейдерами, а не в каменном веке.
Закоммитил текущие изменения.
Там orientation box через лайнсет рисуется, и камеру можно ориентировать.
Следующий шаг будет - рисование поверх фото в режиме billboard (этот режим еще называют HUD).
Конечно, надо чтобы fov фотографии и fov 3D виджета совпадали - но это потом.
Настройки какие-то должны быть, а еще лучше автоматически со свойств фото брать.
Еще размеры orientation box чтобы можно было задавать.
Это можно сделать либо через динамический vbo, либо каждый раз при изменении размеров
пересоздавать вбо, либо через матрицу модели (скейлинг). Как думаешь лучше поступить?
Тема в архиве.