Rioshi
5 постов
Карма: 2
#1 14 сентября 2013 в 11:58
Решил поэкспериментировать и сделать модельку гранаты для Q3, но столкнулся с непонятным поведением шейдера: в одном случае работает, в другом — нет.<br />Как делал:<br />Сделал в 3Dmax заготовку;<br />Сделал развёртку текстуры;<br />В фотошопе набросал по развёртке пробную текстуру (models/ammo/grenade_rio.tga), и отдельную текстуру для использования в шейдере (models/ammo/shader_tex.tga), а так же два кадра для анимированой текстуры (models/ammo/grenade_f1.tga и models/ammo/grenade_f2.tga):<br /><br />В Максе применил текстуру к модельке и экспортировал её в MD3 с именем файла как у стандартной гранаты, чтоб заменить её (models/ammo/grenade1.md3);<br />Создал файл шейдера в папке scripts с таким содержимым:<br />models/ammo/grenade_rio<br />{<br /> nopicmip<br /> cull none<br /> {<br /> map models/ammo/shader_tex.tga<br /> rgbgen identity<br /> }<br /> {<br /> AnimMap 7 models/ammo/grenade_f1.tga models/ammo/grenade_f2.tga<br /> blendfunc GL_ONE GL_ONE<br /> }<br />}<br />Сложил всё это в zzzzz-test.pk3, с соблюдением структуры папок, конечно, и поместил его в baseq3.<br /><br />Результат — в игре отображается только текстура, привязанная к MD3 (models/ammo/grenade_rio.tga), шейдер не подтягивается (хотя в консоли пишет, что загружен).<br />Тогда делаю тестовую карту и помещаю на неё модельку этой самой гранаты. Запускаю игру и вижу, что на помещённой на карту модельке шейдер работает. Стреляю тут же рядом гранатой — на ней шейдера нет. Скриншот:<br /><br /><br />Но если из созданного .pk3 удалить .md3 файл новой гранаты, то в игре будет стрелять стандартной гранатой, но с рабочим новым шейдером (если предварительно в нём первую строку поменять на «models/ammo/grenade», привязав шейдер к родной текстуре стандартной гранаты).<br /><br />Альфа-канал, вроде, ни при чём — нет его ни в старой, ни в новой.<br /><br />Вроде бы всё стандартные операции, что может быть не так? Скорее всего просто я где-то невнимателен, либо не знаю каких-то особенностей.<br />В общем, подскажите где ошибка, пожалуйста. Вчера пол-дня гуглил — не помогло.<br /><br />Quake3 1.32;<br />3Dmax 2011 х64;<br />Плагин Export MD3 beta by Pop N Fresh;<br />GTK Radiant 1.6.3 - Oct 7 2012.
Берсеркер
2326 постов
Карма: 218
#2 14 сентября 2013 в 12:09
Кинь карту с запеченной на ней гранатой, и пак с гранатой, погляжу на q3bers.<br />А так, imho плохая идея делать смесь из текстуры и материала с одинаковым именем.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Rioshi
5 постов
Карма: 2
#3 14 сентября 2013 в 21:38
Ок. Вот паки с картой и гранатой:<br />https://docs.google.com/file/d/0B7t2uOL7iutNV1FhbGpIQjhHTVE<br />https://docs.google.com/file/d/0B7t2uOL7iutNc3d5QmZ1cUw4Nmc<br />Можно было было и в один пак сложить, конечно, т.к. запечённая на карте граната использует текстуру из папки ammo, ну да ладно :)<br /><br />
плохая идея делать смесь из текстуры и материала с одинаковым именем
<br />Имеется ввиду в шейдере писать не «models/ammo/grenade_rio», а произвольное имя? Но как тогда квейк узнает, что к текстуре grenade_rio.tga нужно подсосать соответствующий шейдер? Или я неправильно понял.
Берсеркер
2326 постов
Карма: 218
#4 15 сентября 2013 в 07:31
Всё оказалось просто:<br />В модели grenade1.md3 путь к материалу был &quot;models\ammo\grenade_rio.tga&quot;,<br />хотя до загрузки md3 уже был загружен материал &quot;models/ammo/grenade_rio.tga&quot; вместе с картой.<br />Для ку3 это разные названия, потому для модели был загружена текстура, а не материал.<br /><br />Поправил в модели путь на &quot;models/ammo/grenade_rio.tga&quot; и всё стало на свои места.&nbsp; ;)<br /><br />Я не знаю точно, баг это или фича. Кто что скажет?<br />Я могу влёгкую поправить это, но вдруг кто-то пользует эту фичу для явного указания для загрузки текстуры? Хотя как тогда это согласуется с linux-сборкой ку3?
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
DOOMer
1601 постов
Карма: 103
#5 15 сентября 2013 в 08:27
[quote author=Берсеркер link=topic=855.msg18691#msg18691 date=1379230287]Я не знаю точно, баг это или фича. Кто что скажет?[/quote]<br />Скорее всего это ни баг и не фича, это издержки того что в windows в качестве разделителя между каталогами в путях файлов, приняты обратные слэши. Поэтому у Rioshi и прописался &quot;кривой&quot; путь. <br /><br />Я глянул пару моделей из models - там везде прямые слэши (/) прописаны в путях к материалам.
Вертексы должны образовывать конвексный браш
My Quake Maps

Core i7 8700 3.3 Ghz, 32 Gb RAM, GeForce RTX2060s
Gentoo Linux [amd64] | Windows 10 Home



сохранись перед дверью...два раза =)
VorteX
341 постов
Карма: 60
#6 15 сентября 2013 в 12:01
Могу посоветовать попробовать экспорт-плагин Darkplaces MD3 Exporter. В нем сделано несколько исправлений по части правильного экспорта имени материала в md3. <br /><br />http://omnicide.legacy-of-kain.ru/w/index.php/Darkplaces_MD3_Exporter
Rioshi
5 постов
Карма: 2
#7 16 сентября 2013 в 21:59
Берсеркер, DOOMer, спасибо за помощь. Сам бы я не скоро заметил этот нюанс, если вообще заметил бы :D. Завтра, если выкрою время, закончу это дело.<br /><br />VorteX, спасибо за совет. Описанные усовершенствования радуют. Но у меня Макс 2011 и под ним плагин не заработал. Так что пока придётся пути ремонтировать winhex&#039;ом, а нормали в MD3Compile :D<br />Или, может быть, можно безболезненно что-то поменять в коде, чтобы под 2011-м запустилось?
VorteX
341 постов
Карма: 60
#8 19 сентября 2013 в 22:09
Да, надо забилдить плагин под СДК от 2011 макса. Что я попробовал сделать:<br />- http://omnicide.legacy-of-kain.ru/files/tools/darkplacesmd3exporter_1.00_max2011_x86.zip<br />- http://omnicide.legacy-of-kain.ru/files/tools/darkplacesmd3exporter_1.00_max2011_x64.zip
Eugeny
200 постов
Карма: 10
#9 20 сентября 2013 в 00:41
[quote author=VorteX link=topic=855.msg18713#msg18713 date=1379628591]Да, надо забилдить плагин под СДК от 2011 макса[/quote]<br />А под СДК от 2014 макса сможешь забилдить?
VorteX
341 постов
Карма: 60
#10 22 сентября 2013 в 09:27
Eugeny: могу. Но это будет не быстро. В 2013-2014 максе Autodesk сделала обязательным UNICODE для плагинов. Нужно приводить в соответствие участки кода, работающие со строками, не теряя при этом совместимости со старыми версиями.