|
|
![]() |
#1 | |
Пытающийся полететь
|
![]() Цитата:
К сожалению я с 3Д макс недавно учусь работать и многого в настройках просто не знаю. АУ !!! мастера 3Д подключитесь, просветите ![]() Последний раз редактировалось carsmaster; 22.09.2015 в 22:14. |
|
![]() |
![]() |
![]() |
#2 |
Местный
Регистрация: 12.04.2009
Сообщений: 5,099
|
![]()
не сталкивался с этим ... у меня всё по умолчанию обычно... я с чёрного хода же работаю
__________________
ищется идейный Программер ) |
![]() |
![]() |
![]() |
#3 |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
![]()
Ладно, с этой проблемой в obj похоже не совладать. Тратить на неё время сейчас не будем. Пока, видимо, надо просто переворачивать текстуру. Увы. Может подбиру чуть позже другой формат для экспорта, который и эту проблему позволит решить, и нормали будет сохранять.
В аттаче версии, которые пишут библиотеку материалов. Проверяем. ![]() Важно: - Библиотеку материалов пишу туда-же, куда и obj - Непосредственно текстуры (tga) не копирую. Во-первых, есть нюансы с иерархией (об этом чуть ниже), и во-вторых - при копировании можно перезаписать по верх чего-то, что перезаписывать не надо было. В принципе, можно и экспорт текстур сделать, но пока не буду, потом посмотрим. - Параметры для материалов (свет, отражение и т.д.) пока забиты как константы (всё белое макс яркости). В mat Ила значения задаются непонятным мне образом, одно число на параметр, хотя их должно быть четыре. Возможно, что цвет везде белый и это число простой множитель для него. Но не факт, пока не понятно. - Путь к текстуре для материала пишу так, как он задаётся в игре, т.е. - относительный. Если вы будете использовать структуру каталогов как в игре, то текстуры будут подхватываться как надо. Пример для понимания того, что такое относительный путь: Допустим, что у нас есть общий каталог для текстур и есть мешь, который лежит в другом каталоге: 3do\textures\tex1.tga 3do\planes\textures\tex2.tga 3do\planes\bf-109_f4\mesh.obj 3do\planes\bf-109_f4\tex3.tga Для меша прописано три материала, мат1, мат2 и мат3. В мат1 путь к текстуре задан "..\..\textures\tex1.tga". В мат2 - "..\textures\tex2.tga" В мат3 - "tex3.tga" Когда вы открываете mesh, то путь к текстуре из относительного преобразовывается в абсолютный. И, соответственно, по полученным путям и берутся нужные текстуры. Это традиционный способ задания путей. Его огромный плюс в том, что вы можете скопировать данные в любое место (сохраняя структуру каталога), переносить на другие компы и при этом у вас всегда нужные данные будут доступны. - В библиотеку материалов также добавлены некоторые служебные материалы. В первый слот - материал NULL (цвет красный, что ещё для него надо установить - ХЗ). После всех материалов меша также добавлены материалы для кубов, которые на хуках у нас сидят. Потом материал для теней (зелёный) и материал для коллизий (фиолетовый). Грани кубов для хуков крашу так, как мне указали парой страниц выше. Яркий цвет - ось в плюс, тёмный - в минус. Ну и чуть перерулил отображение модели во вьювере. Учитываю некоторые параметры из материалов. По лучше рисуется. Нет сортировки для полупрозрачных полигонов, по этому некоторые модели (похоже те, что ещё с СПШ) немного не правильно рисуются, за стёклами иногда не видно внутренностей. ![]() Вроде ничего не забыл. Смотрите, что получилось и докладывайте. ![]() Если всё гуд, то след. пунктом пойдёт запись в бинарный меш. Последний раз редактировалось NB79; 22.09.2015 в 23:35. |
![]() |
![]() |
![]() |
#4 |
Местный
Регистрация: 18.01.2012
Сообщений: 814
|
![]()
скачал, посмотрел. Открыл модельку газика. Во вьюере смотрится превосходно, автоматом подцепились текстуры, сглаживание корректное показывает.
Сохранил в обж и открыл максом. Тут не айс. Групп сглаживания нет вообще (А без них моделька не моделька). Маппинг какой-то странный искажённый, или смещённый. В списке материалов куча материалов (вот этого мне совсем не надо. Надо 1 мультиматериал на каждый лод. Вот к примеру откроете вы кокпит ю88, а там от 50 материалов. Если слоты занимать одним материалом то вы потом запутаетесь в поиске нужного материала. Мультиматериал это правильный выход). В принципе штуку вы задумали хорошую. Ещё бы в макс всё хорошо переходило, было бы совсем замечательно. Последний раз редактировалось yt2; 23.09.2015 в 00:40. |
![]() |
![]() |
![]() |
#5 | |
Пытающийся полететь
|
![]() Цитата:
Пока попробовал на около 15 разных мещах разных самолетов. Пока косяков не выявлено. Все четко сохраняет и TXT и в OBJ После переворачивания текстуры основного скина, в максе все выглядит достойно. Меня цветовка теней, коллизий, кубов Хуков вполне устраивает Цветовка начальных правильных ориентаций осей кубок хуков позвлдяет БЕЗ ПРОБЛЕМ вручную загнать пивот куба в центр куба и развернуть согласно видимой цветовке сторон куба. Построение всей ветки материалов тоже позволяет весьма экономить время и дает четкое представление что есть что! Мне кажется стоит попробовать прочитать HIM всего самолета и попробовать "сложить" всю модель. Ибо там же в HIM часто прописано всякие смещения и развороты отдельных мешей для их правильной стыковки в единое целое. Вдруг там будет засада с ошибками построения модели корректной? Например меш конвертер открывает модель(через HIM) вроде корректно, но например в 3DS сохраняет всю модель КОРЯВО , не получается правильно сложить все элементы. А вот при сохранении в OBJ всей модели в меш конвертере, он правильно и корректно стыкует все меши в единый самолет. Правда есть косяки все равно с хуками, расставляет их не корректно !! Огромное спасибо ![]() ![]() Ибо с хорошим инструментом люди меньше будут бояться сложностей с моделями для игры Последний раз редактировалось carsmaster; 23.09.2015 в 00:53. |
|
![]() |
![]() |
![]() |
#6 |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
![]() |
![]() |
![]() |
![]() |
#7 | |
Пытающийся полететь
|
![]() Цитата:
В максе конечно при открытии все элементы по отдельности(меши, тени, коллизии, хуки) Тоесть меш конвертер при чтении HIM просто согдасно смещений и разворотов в HIM прописанных складывает все в визуально цельную модель и пишет все в один файл. |
|
![]() |
![]() |
![]() |
#8 |
Пытающийся полететь
|
![]()
Прислать(файл) весь самолет сохраненный в OBJ в меш конвертере ???
|
![]() |
![]() |
![]() |
#9 |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
![]() |
![]() |
![]() |
![]() |
#10 |
Пытающийся полететь
|
![]()
вот весь Ki-43-II(Multi1)
Это я делал в меш конвертере. ВСЕ пути в папке с самолетом я переписал на саму папку самолета , тоесть где HIM, там и текстуры у меня лежат и в материалах так прописал. Это я там для своих целей дела. Но это в пригципе не важно я думаю для вас, вы создаете все по иловской структуре папок. Хуки все равно в моем файле не корректно расставлены меш конвертером. Видно в самолете он не путается при открытие HIM и корректно расставляет меши, а вот Хуки все равно не понимает до конца правильно. МАППИНГ НЕ СОХРАНЯЕТ меш конвертер в OBJ !!! Последний раз редактировалось carsmaster; 23.09.2015 в 01:12. |
![]() |
![]() |
![]() |
#11 |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
![]()
Ага, спасиб! Завтра посмотрю как в obj оно складывается.
Him/sim я читать умею и дерево объектов строю, только надо будет немного доработать под экспорт всей модели. |
![]() |
![]() |
![]() |
#12 |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
![]()
Давайте я ещё раз о группах сглаживания, применительно к игре, расскажу.
Меши игры не содержат в себе групп сглаживания. Что такое "группы сглаживания"? Условно, это некий атрибут, указывающий на то, каким образом должна рассчитываться нормаль к вершине. Мы объединяем полигоны с одинаковыми атрибутами и при загрузке модели, ориентируясь на эти атрибуты, рассчитываем нормали для всех верши. Однако, то, что приемлемо для разработки моделей совершенно не годится для игры. Расчёт нормалей операция дорогая, занимающая приличное время. Если это десяток полигонов, то это не беда, но если у нас куча мешей и тысячи полигонов, то это уже становится проблемой. Негоже заставлять игрока сидеть перед монитором и любоваться на неторопливый прогресс загрузки. По этому, при экспорте в игру готовой модели нормали просчитываются заранее. А информация о группах сглаживания после этого расчёта просто выкидывается за ненадобностью. Игре она не нужна, хранить её в игре - бесполезно занимать место, нормали то, уже есть! Вот по этому и взят для конвертации obj, в отличии от 3ds он может писать в себя нормали. Группы сглаживания тоже, но в иловском меше их нет. По этому я и не пишу их в obj. Как я уже говорил, какую-то часть информации о группах сглаживания наверное можно восстановить по нормалям. Но это сложный алгоритм и не факт, что результат будет приемлемый. Алгоритму нужно обойти тысячи вершин и полигонов, определённым образом отсортировать их по разным критериям, обнаружить определённые закономерности и принять решение о размещении того, либо иного полигона в определённую группу. И всё это осложняется тем, что полигон может состоять в нескольких группах сразу. И, соответственно, его нормали, это результат нескольких перерасчётов. Как этот фарш провернуть назад - ХЗ. Частично что-то вынуть можно, но что получится в итоге - подозреваю, что ничего хорошего. В общем, на эту задачу нужно убить прорву времени. И самое главное, время это, с высокой долей вероятности, будет потрачено в пустую. И вполне возможно, что вообще зря, ибо исправлять последствия неверных трактовок обычно труднее, чем руками их указывать. Имею богатый опыт подобного из другой сферы, но схожий по смыслу. Так-что, групп сглаживания в ближайшее время точно не будет. А там - посмотрим будут ли на них силы и ваще. ![]() |
![]() |
![]() |
![]() |
#13 |
Пытающийся полететь
|
![]()
Опытным путем выяснилось, что ваша программа ругается и не открывает некоторые меши созданные в максе через MARAZ экспортер.
MARAZ экспортер пишет текстовый меш например с такими строками [CoCommon] [NBlocks 1] тут квадрат скобки [CoCommon_b0] Nparts 1 тут маленька буква "p" [CoCommon_b0p0] Type Mesh [NFrames 1] тут квадрат скобки Name Live Меш конвертер пишет это же самое вот так: [CoCommon] NBlocks 1 [CoCommon_b0] NParts 1 [CoCommon_b0p0] Type Mesh NFrames 1 Name Live Вашей программе мешают как раз квадратные скобки или маленькая буква в названии. Она не видит меша и выдает ошибку MeshError: FileName = "3333333333333333333333\Новая папка\MY_FIELD_PACK\Z-ga-konus-bwS\z-ga-konus-bwS\3DO\Buildings\Russia\DummyplaneG\live.msh"; ReadTextCoCommonInfo:ElementCount <> 1 (0). SectionName = "CoCommon" Меш конвертеру по барабану на эти тонкости, он читает без проблем и меши из MARAZ экспортера с квадратными скобками и маленькой буквой в названии. Так как игра спокойно работает с мешами от MARAZ, то следовательно и игре пофиг на эти вещи Если можно подлечите пожалуйста вашу прогу от привередливости к квадратным скобкам и регистру букв. В архиве меши с текстурами live.msh меш на котррый ругается ваша прога(меш конвертер все нормально ему) 33live.msh тот же меш ,но правленный, вручную убрал скобки и маленькую букву"p" заменил на большую "P". Ваша прога увидела и открыла меш. С уважение Сергей. Последний раз редактировалось carsmaster; 07.10.2015 в 03:16. |
![]() |
![]() |
![]() |
#14 |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
![]()
Чувствительность к регистру можно исправить. А вот со скобками всё сложнее и совсем не так, как кажется.
![]() Тут вопрос вот в чём. Как загрузчик мешей игры воспринимает подобные ситуации? А воспринимает он это следующим образом - всё, что заключено в квадратные скобки, для него является не параметром и/или значением, а именем секции. И, соответственно, будет проигнорировано при чтении всё то, о чём он не знает. Ибо он ожидает строго определённый набор секций. И в вашем примере в игре просто для соответствующей коллизии по умолчанию кол-во блоков будет задано в 1, и меш будет загружен. И ошибок в логах при этом не будет, потому что с точки зрения парсера в файле нет ошибок. В нём просто присутствует секция, о которой загрузчик мешей не знает. Для лучшего понимания. В игре есть универсальный способ сохранения данных, файл секций. Он может существовать в двух видах, текстовом и бинарном (сигнатура бинарного "BS", от "Binary Sect", как я понимаю ![]() ничего о ней не знает и не предполагает её наличие в файле. И никаких ошибок при этом не возникнет. Чтение данных происходит следующим образом: 1) Загрузчик просит у парсера вернуть ему ссылку на секцию с определённым именем 2) Если секции с таким именем нет, то загрузчик по заданному разработчиками алгоритму может ругнуться (если эти данные обязательно должны присутствовать), либо заполнить структуры данными по умолчанию (не сообщая об ошибках). 3) Если ссылка на секцию получена, то далее загрузчик просит у парсера различные данные из этой секции и аналогично, если данные в секции присутствуют, то читает их. Если нет, то по заложенным разрабами алгоритмам для этого загрузчика: либо ругается, либо заполняет по умолчанию. Итак: Если первый символ в строке открывающая скобка ("[") и в этой же строке присутствует закрывающая ("]"), то парсер однозначно трактует это как начало новой секции и всё, что между этими скобками находится считается именем секции. По этому: 1) Чувствительность к регистру я могу убрать, это я не ожидал просто, что имена регистронезависимые. В игре-то, имена заданы с регистром. Кстати, надо бы посмотреть, действительно ли регистронезависимые, может просто вместо значения из файла берётся значение по умолчанию, если имя отлично от того, что присутствует в игре. 2) С открывающей скобкой никаких изменений делать не буду, ибо это приведёт к появлению неоднозначных последствий. Кстати говоря, наличие некоторого кол-ва ошибок в мешах (я здесь об этом уже говорил и соответствующий список передавал) скорее всего связанно именно с тем, что экспортёр из Макса иногда пишет файлы вот с такими ошибками. Последний раз редактировалось NB79; 07.10.2015 в 14:28. |
![]() |
![]() |
![]() |
#15 | |
Пытающийся полететь
|
![]() Цитата:
Тогда поступлю(да и поступил уже) проще, В Хексе поправлю экспортер от MARAZ , просто удалю(чтоб не писал) скобки в тех секциях что я указвал на своих примерах меша экспортера от MARAZ. В принципе все работает уже(экспортер), правда при загрузке Макса ругается на ошибки загрузки плагина, но макс запускается и экспортер потом работает. Скорее всего в файле экспортера от Maraz какая нибудь проверка описана на CRC файла напрмер. Пр загрузке проверил, увидел (после моих изменений) не соответствие, РУГНУЛСЯ, но решил, что и так сойдет и работе экспортера это НЕ МЕШАЕТ. ![]() Последний раз редактировалось carsmaster; 07.10.2015 в 15:28. |
|
![]() |
![]() |
![]() |
#16 |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
![]()
Кстати, прошу прощение за пропадание. Не пропал, тут.
![]() Загрузка всей модели сделана уже больше недели назад, нет времени её экспорт прикрутить. Постараюсь к выходным приделать экспорт хотя-бы в текстовые меши. |
![]() |
![]() |
![]() |
#17 | |
Пытающийся полететь
|
![]() Цитата:
Вы делает полезное дело и сроки и скорость тут не является критичными вовсе. Основная масса людей(кто остался тут) сами ковыряются в свободное время, на энтузиазме. И адекватные люди тут весьма ценят труд людей умеющих что-то делать, кроме болтать языком. Так что в любом случае спасибо за реальные результаты вашей работы. |
|
![]() |
![]() |
![]() |
#18 | |
Местный
Регистрация: 12.04.2009
Сообщений: 5,099
|
![]() Цитата:
![]()
__________________
ищется идейный Программер ) |
|
![]() |
![]() |
![]() |
#19 | |
Пытающийся полететь
|
![]() Цитата:
Ведь самое важно это собрать корректно по координатам всю модель в максе . В hier.him как раз и описан принцип сборки всей модели ,с учетом поворотов и смещений каждого меша. Было бы очень неплохо иметь всю целую модель тоже. Последний раз редактировалось carsmaster; 07.10.2015 в 18:32. |
|
![]() |
![]() |
![]() |
#20 | |
Местный
Регистрация: 12.07.2015
Сообщений: 417
|
![]() Цитата:
![]() В текстовом виде, как текстовый меш, её всю в один файл загнать не получится. Экспорт будет набором текстовых мешей. В obj можно в один файл. Но там надо немного повозиться будет. А сейчас хронически не хватает свободного времени, по этому в obj тоже пока будет экспорт в несколько файлов. Потом допилю. Кстати, на счёт переворота текстур. Теперь я точно знаю, почему в Максе она перевёрнута по сравнению с развёрткой. В OpenGL нулевая координата (0.0) - нижний левый угол. Вот по этому в Максе текстуры и перевёрнуты. Т.е., при загрузке из текстовых мешей, либо из obj, текстуры надо переворачивать по вертикали. Странно, что в Максе нигде явно не указать где для текстуры находится 0.0. И ещё из того, что сделано помимо загрузки всей модели. Первое, это по подгрузке текстур. Теперь, если грузится модель самолёта и путь к модели содержит "3do\plane\", т.е. так, как в игре, то автоматом подтягиваются текстуры из папки "summer" для этого самолёта. Тля нулевого лода, если там есть tgb, берётся она. TGA или IMF - значения не имеет, я IMF нормально читаю. Второе, это разделение модели на степени повреждения, если в ней это предусмотрено. И третье, более качественное текстурирование за счёт того, что читаю и применяю почти все параметры из mat файлов. Чего пока не сделано, это настройка отражающих способностей материалов на основе данных из mat файла. Опять же, из-за нехватки времени. Модельки сейчас очень похоже на игру выглядят. ![]() |
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|