0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 2
|
|
1 | |
Подскажите, какая программа больше подходит юному программисту. Хочу создать свою игру.20.09.2019, 09:35. Показов 9368. Ответов 79
Метки нет (Все метки)
0
|
20.09.2019, 09:35 | |
Ответы с готовыми решениями:
79
Хочу создать свою игру в поуер пойнте Хочу сделать свою 3D игру (работа с текстурами и 3D моделями) Какая субд больше подходит для программирования на 1с? Подскажите какой код больше подходит для использования |
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
02.10.2019, 13:26 | 41 |
Для того чтобы их перекидать нужно формат модели знать а он закрыт. И у современных средств моделинга он простым не бывает. А тем более у хотя бы более менее серьезных. А через апи берешь все что надо прямо из геометрического ядра.
Добавлено через 2 минуты Ну и че его искать если он известен? А старые версии API они поддерживают очень долго. Если что то в API попало в ближайшие лет 20 оно точно не исчезнет и не изменится. Добавлено через 8 минут Нужных данных в файле сохранения частенько вообще нет. К примеру в *.swa вообще ни одного триангла нет. Их можно только из геометрического ядра получить по спецзаказу через api. Так что конвертер в данном случае тянет на полное дублирование геометрического ядра. Практически тоже самое касается 3D-пинбрашей типа макса.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
02.10.2019, 14:29 | 42 |
Кто вам мешает выбрать формат, в котором нужная вам часть известна? Я же не утверждал что нужно брать "строго 3ds" или "строго dxf". Вон 8Observer8 предлагает .dae. Если уго функционала достаточно - зачем изобретать новый закрытый формат?
Хорошо если известен. Правда, еще остается вопрос поиска плагина и угадывания версии, на которой он запустится. Я ведь только что приводил пример, когда простой способ не сработал. Еще раз: если формат вас не устраивает - выберите другой. Вот если ни один известный формат не устраивает - придется изобретать свой, а потом извращаться с плагинами или конвертерами. Кстати о плагинах: что-то мне подсказывает, что еще и другой язык учить придется, питон какой-нибудь.
0
|
02.10.2019, 16:36 | 43 |
Причём в некоторых ситуациях это самый простой вариант, когда нужно получить полный контроль над моделью нестандартного формата, импортировав её в редактор, который хорошо знаешь. Python меня сначала очень сильно напугал, показался мне очень сложным, сложнее, чем C++. Но когда начал с ним знакомиться поближе, оказалось, что не такой уж он супер сложный. В моей ситуации Python - это палочка-выручалочка, которая помогает решать те задачи, на которые ушло бы гораздо больше времени и сил. По Python довольно много уроков, чего не скажешь об языке для написания плагинов для 3DsMax, в котором используется свой особый язык - Maxscript. Вот такой пример я нашёл, который импортирует модель с костями из приставки PS1 и игры Resident Evil 1 (см. код ниже). Это ужас, а не язык. Лучше бы они использовали Python, так как это язык общего назначения. Видно, что они осознали ошибку и позже при разработке Maya сделали язык для плагинов Python. Итого, выучив один Python можно облегчить решение определённых задач в Blender, GIMP и Maya.
Код
macroScript RE1MVAS category:"RE1MV" tooltip:"RE1MV Animation Script..." Icon:#("Maxscript", 3) ( rollout Main_Form "RE1MVAS v0.1b" width:416 height:172 ( button btn1 "Import ANI" pos:[8,8] width:128 height:24 button btn2 "Export ANI" pos:[144,8] width:128 height:24 enabled:false button btn3 "About" pos:[280,8] width:128 height:24 progressBar pb1 "ProgressBar" pos:[136,40] width:272 height:14 label lbl1 "Part: 0" pos:[8,40] width:56 height:16 label lbl2 "Frame: 0" pos:[72,40] width:56 height:16 ---Import ANI--- on btn1 pressed do ( ---Global Variable--- global Part_Count global Part_Link_Count global Part_Index global Frame_Count global All_Object global POS_File ---Open File--- POS_File = getOpenFileName types:"RE2MV ANI(*.ANI)|*.ANI|" if POS_File != undefined then ( --POS_File = openFile "C:\LEON.POS" POS_File = openFile POS_File ----Set Part--- All_Object = geometry as array ---Part Count--- Part_Count = readValue POS_File lbl1.caption = "Part: " + Part_Count as String ---Reset Part Angle--- fn Reset_Part pt = ( All_Object[pt].rotation.x_rotation = 0 All_Object[pt].rotation.y_rotation = 0 All_Object[pt].rotation.z_rotation = 0 ) ---Reset All Part Angle And Position--- for i = 1 to Part_Count do ( Reset_Part i All_Object[i].pos = [0, 0, 0] deleteKeys All_Object[i] #allKeys ) ---Link Part--- for i = 1 to Part_Count do ( Part_Link_Count = readValue POS_File for ii = 1 to Part_Link_Count do ( if Part_Link_Count > 0 then ( Part_Index = readValue POS_File All_Object[Part_Index +1].parent = All_Object[i] ) ) ) ---Set Part Pos--- for i = 1 to Part_Count do ( local pos_x = readValue POS_File local pos_y = readValue POS_File local pos_z = readValue POS_File move All_Object[i] [pos_x, pos_y, pos_z] ) ---Rotate Part Angle--- fn Rotate_Part pt = ( local ang_x = readValue POS_File local ang_y = readValue POS_File local ang_z = readValue POS_File rotate All_Object[pt] (angleaxis ang_x [1,0,0]) rotate All_Object[pt] (angleaxis ang_z [0,0,1]) rotate All_Object[pt] (angleaxis ang_y [0,1,0]) ) ---Animate Part--- Frame_Count = readValue POS_File lbl2.caption = "Frame: " + Frame_Count as String Frame_Count -= 1 animationRange = interval 0 Frame_Count with animate on ( ---Main Body Position--- for i = 0 to Frame_Count do ( local pos_x = readValue POS_File local pos_y = readValue POS_File local pos_z = readValue POS_File at time i All_Object[1].pos = [pos_x, pos_y, pos_z] ---Reset Angle--- for ii = 1 to Part_Count do at time i Reset_Part ii ---Read Angle--- Temp = Part_Count while Temp > 0 do ( at time i Rotate_Part Temp Temp -= 1 ) ---Proggres--- pb1.value = 100.*i/Frame_Count ) ) sliderTime = 0 ----Close File---- close POS_File ) ) ---Export ANI--- on btn2 pressed do ( ) ---About--- on btn3 pressed do ( MessageBox "RE1MVAS v0.1b By Leo2236!" title: "About" beep: false ) ) createdialog Main_Form width:416 height:62 )
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
02.10.2019, 22:00 | 44 |
И как в него этот другой конвертировать из штатного формата средства моделирования?
Добавлено через 57 секунд Ну покажите полное описание к примеру *.max или *.swa Добавлено через 4 минуты В любом случае данные к примеру трианглов получаются только из яра api. Они не сохраняются ни в один из штатных для средства моделинга форматов. т.е. по любому или полное дублирование геометрического ядра в конвертере или плагин сохранения для средства моделинга. Зачем мудрить с сохранением в непонятно что если гораздо проще сохранить сразу в свой формат поддерживающий все нужные наборы данных для конкретно взятой задачи?
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
02.10.2019, 23:14 | 45 |
стандартными функциями экспорта, конечно. Это же не самописный формат с неизвестной структурой, а один из распространенных.
Могу повторить: я смотрел способы чтения только трех форматов: obj, dxf и 3ds, причем только геометрии. Без анимации, без текстур, даже без нормалей. Соответственно, не знаю и знать не хочу о структуре других. То, что знал - выложил. Именно для того чтобы не мудрить с сохранениями непонятно во что, а использовать готовый формат. Чем вас тот же obj не устраивает, если задача - отобразить статическую модельку?
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
02.10.2019, 23:27 | 46 |
Вы где то такие задачи встречали в геймдеве? Они встречаются разве что в первых лабораторках по машинной графике.
Вот именно поэтому чужие форматы и не подходят, только свои. Добавлено через 1 минуту Ну вот как раз стандартные функции экспорта продвинутых средств моделирования и не экспортируют в триангловые форматы принципиально. Это по вашему можно назвать моделью?
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
03.10.2019, 09:46 | 47 |
Достаточно, что я сам с такими задачами сталкивался.
"<причина, по которой лучше использовать стандартный формат>" - "вот поэтому лучше использовать самописный" Логика! А что же это по-вашему, картинка что ли? . Решать надо поставленную задачу, а не гадать "а если бы так, а если бы эдак". Пока хватает возможностей выбранного формата - используем его. Перестало хватать - ищем другой или изобретаем свой.
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
03.10.2019, 10:03 | 48 |
Рендерить в картинку без нормалей и текстурных координат вы как будете?
Добавлено через 49 секунд Игра где все модели статичны при этом без текстур и освещения? Это что то новенькое в мире 3D игр. Добавлено через 3 минуты А логика простая. Описание формата абсолютно неизвестно. Но при этом точно известно что никаких данных нужных для рендеринга он не содержит. Он содержит то из чего эти данные может получить ядро тулза которое этот формат создает. Именно так все средства моделинга живут как минимум с середины 90-х. Именно поэтому чтобы не изобретать лисапеты все через api оного ядра тянется в свой формат, который своей софтиной подгружается элементарно.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
03.10.2019, 11:25 | 49 |
То есть вы выбрали для импорта "абсолютно неизвестный" формат и жалуетесь, что он абсолютно неизвестен? Видимо, это какая-то особая логика.
Но могу повторить: Для моей задачи хватило формата obj. Зачем мне изучать еще один язык программирования, потом API средства моделирования? Вы действительно считаете, что изобрести автомобиль с нуля без знаний (мы ведь говорим в контексте темы: ТС не знал вообще ни одного формата) проще, чем взять готовый велосипед и научиться на нем ездить?
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
03.10.2019, 11:37 | 50 |
А вы найдите хоть один известный формат современных средств моделинга. Даже если бы и известным был. Данных нужных для рендеринга они там не держат еще с середины 90-х.
Добавлено через 3 минуты Это для вашей задачи. Именно так выглядит один из первых хеллоувердов по машинной графике. Ну с той разницей что в условиях оного хеллоуверда обычно свой формат спроектировать надо. А у ТС задача таки игра а не хеллоуверд. Добавлено через 5 минут А научится проектировать форматы и апи осваивать все равно придется никуда не денется. Годом раньше или годом позже особой разницы нет. Это уже только от его желания быстрей освоить графоний зависит.
0
|
03.10.2019, 14:02 | 51 |
Возможно я что-то пропустил, но насколько я понял, Gungala поставил себе задачу научиться извлекать модели и анимации из игры Skyrim. Я посмотрел список его тем. Вот здесь он сформулировал свою задачу:
Я решаю только такую же задачу. Моё мнение, что наиболее быстрый и перспективный способ решения этой задачи - это написать плагин для Blender на Python, чтобы можно было бы далее экспортировать модель в формат, который поддерживает анимации. Далее, можно было бы использовать Assimp для загрузки модели в свой 3D Viewer, где можно проиграть анимации. Так можно написать свою мини игру, или просто наслаждаться просмотром анимаций в своей программе. Или получить опыт, который позволил бы использовать знания для работы. Blender позволит редактировать анимации и модели. Можно даже сохранить обратно в формат Skyrim, чтобы изменения произошли в самой игре. Я думаю, что он захочет менять модели и анимации для изменений в самой игре, а не просто увидеть модель и анимацию в своей программе. Добавлено через 26 минут Но это я выбрал такой способ решения задачи, потому что я нашёл средство для извлечение моделей из бинарного формата в более удобный формат. И у меня ещё есть пример короткого скрипта на MaxScript, который импортирует кости. Я могу переписать на Python. Я не знаком с API, но я думаю, мне нужно почитать про несколько API, а не изучать весь API Blender целиком. Далее, я могу экспортировать в Collada. Но у Gungala намного более сложная задача, потому что если нет извлекателя моделей из бинарников Skyrim, то придётся писать самому, а для этого нужно описание формата, которое возможно уже есть где-то в сети, но вот самому создать такое описание формата - это огромный труд. Игра новая и найти такие описания крайне сложно. А ещё и хозяева игры следят и жалуются, чтобы такие описания удаляли из сети. Проще найти для старых игр. Я спрашивал у автора RE1MV (программы-извлекателя моделей и анимации из Resident Evil), где он брал описание формата в бинарнике, он мне давал ссылку, где подробно описывалось, какой байт в HEX что хранит и в каком файле. Те люди, которые создали такое описание проделали титанический труд, а может это не так сложно, как кажется. Добавлено через 3 минуты Если вы найдёте описание формата в бинарнике, или сами разберётесь в формате бинарника, то может сразу ипортировать координаты вертексов, текстурные коодинаты, нормали и анимации в свою программу на OpenGL или в движок, а можете сделать просмоторщик моделей и анимаций и сделать возможность сохранять в выбранный вами формат. Можно в два файла сохранять скин и кости из своего просмоторщика: OBJ и ANIM (как это делает RE1MV), а можно в один: Collada (.dae), тогда вы сможете импортировать свою модель в 3D редактор: Blender, 3DsMax, Maya и производить редактирование всех данных в удобном виде. Либо импортировать в свою игру на OpenGL или в готовый движок типа Unity, Godot, Unreal Engine и т.д. Какой способ выбрать - это зависит, что уже есть и какие цели вы себе ставите. Добавлено через 17 минут Gungala, я вам рекомендую взять задачу попроще, которую я взял. Есть готовые извлекатели моделей и анимаций на канале - Leo2236 -. Это извлекатели из компьютерных версий игр для PlayStation 1. Эти игры настолько старые, что за ними никто не охотится. Канал и сайт Leo2236 существует уже давно. Его извлекатели моделей и анимаций извлекают в формат .obj и .anim. Так вы потренируетесь с импортом .obj и с костями в своём любимом Java и OpenGL. Начните с изучения OpenGL в Java. Нарисуйте треугольник, квадрат, куб, наложите текстуру, свет, сделайте скелетную анимацию. Добавлено через 2 минуты В сети полно видео уроков, как поставить LWJGL3 или JOGL. Изучайте, тренируйте, тренируйтесь и тренируйтесь.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
03.10.2019, 14:08 | 52 |
И еще раз повторяю: obj, 3ds, возможно dae (не пробовал).
Да ну? 8Observer8, Возможно. Опять-таки, если возможностей стандартных не хватит для конкретной задачи. Но даже так хорошо бы сначала разобраться в устройстве чужих форматов, посмотреть что они хранят, в каком виде и для чего. У меня информации по тамошним моделям нет - ни в каком редакторе они делались, ни во что их можно конвертировать. Но выглядит задача достаточно стандартно: модель, скелет и анимация используются почти везде.
0
|
03.10.2019, 15:05 | 53 |
8Observer8, у меня это не основная задача в данный момент. Я прекрасно понимаю, что, не имея необходимых знаний, такое не выйдет реализовать. Я сейчас просто собираю информацию, можно сказать. Сохраняю статьи, ссылки на книги и т.д., и пока буду выполнять другие задачи, постепенно буду читать, проверю канал, что вы посоветовали. Ну и когда наконец приступлю к реализации задумки, будет уже намного проще
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
03.10.2019, 17:01 | 54 |
Свой формат нужен всегда. Для того чтобы не изобретать ненужные лисапеты при загрузке и не ловить грабли и слоудауны.
К примеру *.obj имеет раздельные буфера и раздельную индексацию атрибутов вертексов. Для редактора идея очень даже здравая. Но вот одна незадача - железо то раздельную индексацию не поддерживает. А соответсвенно при подгрузке придется производить конвертирование. Мало того эта штука еще и текстовая еще и с секциями. Поэтому придется изобрести парсер. Т.е. и ненужные лисапеты и тормоза при подгрузке и ненужные перераспределения динамической памяти при подгрузке obj гарантированы. Откройте майкрософтовский пример подгрузки *.obj и посмотрите объем лисапетов который для этого нужен. Подгрузчик же из своего же специализированного формата аналогичных данных займет строк 10 кода. Теперь к примеру *.3ds толпа секций и т.д. из которых всего несколько нужных содержащих трианглы и т.д. но для того чтобы проскипить ненужные нужно написать код их пропуска. При этом половина кодов секций неизвестны. Поймал неизвестный и сливай воду. А организовать неизвестный не проблема - забыть проконвертить какой то объект в меш при редактировании. Неизвестные это как раз таки стеки модификаторов и их параметры. Даже если будут известны чтобы их подгрузить придется реализавать действие всех этих модификаторов - т.е. по факту переписать ядро 3ds с нуля. Опять же скачайте библиотечку с гитхаба и посмотрите сколько кода нужно залисапетить чтоб попытаться подгрузить даже известные секции. Вопрос - нафига нужен этот реверс форматов и т.д. чтобы получить конкретнейший гемморой с реализацией загрузчика, если можно штатным способом получить данные из ядра средства моделирования и сохранить в формат обеспечивающий простую и быструю загрузку с минимумом накладных расходов? Если же возьмем современные средства моделинга то к примеру *.swa закрытый формат а если бы и был открыт то хранит он не разу не трианглы и даже не нурбсы, а набор команд геометрического ядра, которые нужно последовательно выполнить чтобы получить нурбсовую модель. Примерно так же дела обстоят у макса только там стеки модификаторов. Надеюсь понимаете что при таких раскладах без экспорта через апи в свой формат вообще никак. Без разницы что они там хранят и для чего оно нужно средству моделирования. Важно что и как надо хранить нам для конкретно нашего набора эффектов, которые мы хотим отрендерить. Универсальные форматы хранят принципиально другой набор данных чем нужен в игре.
0
|
03.10.2019, 17:12 | 55 |
Знания - это хорошо, но без регулярной практики вы никуда не провинитесь. Самое главное, это уметь себя мотивировать, не пасовать перед трудностями, и получать радость от процесса и осознания, что продвинулся на одну ступеньку выше и закрепился на ней. Объём знаний и навыков большой. Ставьте небольшие цели. Например, поставьте первую цель установить LWJGL3 на свою IDE: Eclipse, NetBeans и т.д. Потом потренируйтесь несколько раз правильно подключать нужные библиотеки из LWJGL3. Создайте несколько раз пустое окно. Найдите уроки или пример, как покрасить фон в заданный цвет. Научитесь рисовать: точку, линию, треугольник, квадрат, накладывать текстуру на квадрат. Всё это вы должны проделывать до тех пор, пока не научитесь делать из головы без подглядываний. Каждый раз создавайте новый проект, подключайте библиотеки для использования OpenGL, пишите код с нуля. Лучше всего каждый день уделять этому хотя бы 1 час в день или 30 минут. Должно быть большое желание продвигать себя на новую ступень за счёт отработки знаний до навыков, иначе вы будете забрасывать, оттягивать, вспоминать всё заново, опять бросать, мотивация будет падать и вы так и останетесь на одном уровне и уйдёте в другую область. Если вам другая область нравится, то развивайтесь в ней, а на эту не тратьте время.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
03.10.2019, 20:43 | 56 |
Именно поэтому нужно использовать готовый формат, где эти грабли формата уже найдены и исправлены.
Так это придется делать в любом случае. Вы же свой формат не бинарным делаете под фиксированную структуру с фикированными полями и endian'ом. Так кто заставляет их использовать? Не нужны - пропускаешь. Наоборот, разделение на секции это удобное свойство формата. Вот не знаю чем вас не устраивает штатный способ что вы предлагаете лезть писать плагины. Вот когда ТС воткнется в ограничения, тогда и будет искать решение. А пока лучше воспользоваться простейшим способом. . Ладно, мне этот неконструктивный спор уже надоел. Вы изобрели какую-то свою задачу и упорно продвигаете ее решение, совершенно не соотнося с исходной задачей ТСа.
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
04.10.2019, 04:24 | 57 |
Для того чтобы пропустить нужно знать ее размер
Добавлено через 33 секунды Тем что штатный это через плагин.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
04.10.2019, 08:18 | 58 |
Вот у нас есть файл *.3ds, который разбит на chunk'и, каждый из которых содержит 16-битное поле ID (значение которого может быть неизвестным), потом 32-битное поле длины, потом сами данные.
Что конкретно вам мешает считать из файла длину поля и проигнорировать его? да-да, для любого использования трехмерных моделей штатный способ - писать плагин, который в следующей же версии сломается. И для игр, и для просмотровщика, и для 3Д-печати. Для всего. Fulcrum_013 сказал!
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
04.10.2019, 08:42 | 59 |
То что вы предлагаете не заведется и в текущей версии.
Добавлено через 6 минут Вы хотя бы одну игру найдите которая не свой формат использует. Добавлено через 2 минуты Это ж кем надо быть чтобы поломать апи серьезного геометрического ядра которое с этим апи уже лет и лет живет при разработке следующей версии? Наверное COKPOWEHEU, который элементарнейших вещей не понимает.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
04.10.2019, 09:22 | 60 |
Ваше утверждение просто ложно, а поскольку не содержит ни примеров, ни подробностей, там даже нечего опровергать.
Вот уж не знаю, даже не интересовался кто автор того плагина. Наверняка, такие как Fulcrum_013, которые полагаются на ОС-специфичные API или баги реализации.
0
|
04.10.2019, 09:22 | |
04.10.2019, 09:22 | |
Помогаю со студенческими работами здесь
60
Создал первую свою Flash игру, но не знаю в каком формате сохранять. Подскажите Хочу создать игру Хочу создать игру в консоли на С# Хочу создать игру с вебкой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |