HLFX.Ru Forum
Показать все 27 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Моделирование (https://hlfx.ru/forum/forumdisplay.php?forumid=25)
-- Пропадает текстура после импорта/экспорта 3дмакс (https://hlfx.ru/forum/showthread.php?threadid=5460)


Отправлено Дикс 07-03-2020 в 07:25:

Пропадает текстура после импорта/экспорта 3дмакс

http://imgur.com/a/aT8tlC4

Есть такая проблема - импортируем модель ку2 в макс, экспортируем и смотрим в игре - у нижней части туловища пропадает текстура. Хотя файл текстуры лежащий рядом с моделью покрывает ее полностью в самом максе.

По ссылке 3 скриншота. 1 - модель до изменения, 2 - после экспорта. Из нее пропадает "base.pcx"
Но в папке с моделью не было и нет такой текстуры. Она есть у некоторых других.

Как бы это починить?

__________________
https://igroprom.d3.ru
https://t.me/deex_gamedev


Отправлено Дикс 07-03-2020 в 17:28:

моделлер говорит: "Не у нижней части туловища пропадает текстура: а растягивается UV map и + ещё визуально вроде как другая текстура назначается, так как оранжевый цвет появился. На исходной текстуре его нет."

Оранжевый цвет как раз на base.pcx

__________________
https://igroprom.d3.ru
https://t.me/deex_gamedev


Отправлено ncuxonaT 07-03-2020 в 18:00:

Чем импортируете-экспортируете? Если экспортированную модель опять импортировать, что в 3дмаксе будет?


Отправлено Дядя Миша 07-03-2020 в 18:27:

В кваке t = 1.0 - t
впрочем и в халфе так же

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Дикс 07-03-2020 в 21:18:

Моделлер тут зарегался, ждет активации. Позже ответит.

Добавлено 08-03-2020 в 00:18:

Цитата:
ncuxonaT писал:
Чем импортируете-экспортируете? Если экспортированную модель опять импортировать, что в 3дмаксе будет?


Цитата:
в максе все ок, если повторно закинуть

импорт/экспорт этим: importmd2.ms md2tagExport.ms

__________________
https://igroprom.d3.ru
https://t.me/deex_gamedev


Отправлено ncuxonaT 07-03-2020 в 22:26:

Это единственная косячная модель, или со всеми такие проблемы?
Смотрю спецификацию формата, имя текстуры занимает 64 байта. То есть base.pcx в оригинальной модели является частью имени первой текстуры, что странно.
Видно, что частично не совпадают заголовки (всё что идёт до имени текстуры), хорошо бы сравнить их в НЕХ редакторе. В заголовке третьим и четвертым числом идут длина и ширина текстуры. В скрипте md2tagExport.ms они всегда прописываются равными 256 и 256 с пометкой "blitz dont care". Возможно, проблема в этом.


Отправлено Дикс 08-03-2020 в 07:31:

Цитата:
ncuxonaT писал:
То есть base.pcx в оригинальной модели является частью имени первой текстуры, что странно



Там все же есть байт между именами, возможно движок по ним разбивает. Как бы иначе это работало

Другие модели сейчас будем пробовать.

Цитата:
В скрипте md2tagExport.ms они всегда прописываются равными 256 и 256 с пометкой "blitz dont care"


А у реальной текстуры dude, размеры 288х195

Добавлено 08-03-2020 в 10:31:

А "blitz dont care" относится к Blitz3d - https://blitzresearch.itch.io/blitz3d

судя по открываемым файлам:
types:"Blitz MD2 (*.md2)|*.md2|All Files (*.*)|*.*|"

__________________
https://igroprom.d3.ru
https://t.me/deex_gamedev


Отправлено Prokaza 08-03-2020 в 08:32:

Привет. Это Я.) Моделлер. В общем да, пока больше похоже на то что сбивается UV развёртка. Возможно движок создаёт свой UV канал, так как я заметил, что он текстуры может сам генерировать при экспорте с Макса, если видит, что такой нет в указанной директории. И вроде как текстурку левую на модельку назначает ещё. Цвета не соответствуют исходной текстуре.


Отправлено Дядя Миша 08-03-2020 в 08:58:

Цитата:
ncuxonaT писал:
Смотрю спецификацию формата, имя текстуры занимает 64 байта. То есть base.pcx в оригинальной модели является частью имени первой текстуры, что странно.

Там массив из 64 битных чаров.
C++ Source Code:
1
typedef struct
2
{
3
  int ident;
4
  int version;
5
 
6
  int skinwidth;
7
  int skinheight;
8
  int framesize;  /* byte size of each frame */
9
 
10
  int num_skins;
11
  int num_xyz;
12
  int num_st;     /* greater than num_xyz for seams */
13
  int num_tris;
14
  int num_glcmds; /* dwords in strip/fan command list */
15
  int num_frames;
16
 
17
  int ofs_skins;  /* each skin is a MAX_SKINNAME string */
18
  int ofs_st;     /* byte offset from start for stverts */
19
  int ofs_tris;   /* offset for dtriangles */
20
  int ofs_frames; /* offset for first frame */
21
  int ofs_glcmds;
22
  int ofs_end;    /* end of file */
23
} dmdl_t;

Может с оффсетами накосячили? Они там абсолютные от начала файла и ofs_end - это по сути размер модели.

Добавлено 08-03-2020 в 11:58:

Цитата:
Prokaza писал:
Возможно движок создаёт свой UV канал

Нет. Я же говорю, для кваки надо инвертировать t.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Дикс 08-03-2020 в 09:01:

code:
Оригинальная модель MDL_HEADER: models/deadbods/dude/tris.md2 MDL_ident: 844121161 MDL_version: 8 MDL_skinwidth: 288 MDL_skinheight: 195 MDL_framesize: 876 MDL_num_skins: 1 MDL_num_xyz: 209 MDL_num_st: 328 MDL_num_tris: 376 MDL_num_glcmds: 1920 MDL_num_frames: 6 После экспорта: MDL_HEADER: models/deadbods/dude/tris.md2 MDL_ident: 844121161 MDL_version: 8 MDL_skinwidth: 256 MDL_skinheight: 256 MDL_framesize: 876 MDL_num_skins: 1 MDL_num_xyz: 209 MDL_num_st: 328 MDL_num_tris: 376 MDL_num_glcmds: 1899 MDL_num_frames: 6


все совпадает кроме размеров (которые в скрипте-экспортере прописаны жестко) и num_glcmds

__________________
https://igroprom.d3.ru
https://t.me/deex_gamedev


Отправлено ncuxonaT 08-03-2020 в 13:29:

Если в новом файле отредактировать размер текстуры, ничего не изменится?

Добавлено 08-03-2020 в 15:51:

Цитата:
Дядя Миша писал:
Нет. Я же говорю, для кваки надо инвертировать t.

это уже делается в скрипте
code:
for i=1 to getnumtverts obj do ( local s=(((getTVert obj i).x)*256) as integer local t=((-(getTVert obj i).y+1)*256) as integer append md2.texlist (md2_tex s:s t:t) )


Добавлено 08-03-2020 в 16:01:

Может, то что они на 256 тут умножаются - это та же проблема? И умножаться они должны на реальный размер текстуры?

Добавлено 08-03-2020 в 16:29:

Поправил скрипт, попробуйте. Там добавились поля Width и Height для задания размера текстуры.


Отправлено Prokaza 08-03-2020 в 14:16:

Во! Вбил 288/195 по размерам, и как бы всё норм теперь, но есть одно но.. Я руками передвинул UV сетку. Импортер или Экспортер почему то двигают её вниз.


Отправлено Дядя Миша 08-03-2020 в 16:05:

Вниз двигают, потому что t инвертировано, блин

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-03-2020 в 18:07:

Prokaza это скрипт импорта косячит, кто только эти скрипты писал. Вот пофикшенная версия, проверь.


Отправлено Дядя Миша 08-03-2020 в 18:53:

ncuxonaT что за язык такой? Это Петон или что-то своё?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 08-03-2020 в 19:07:

Дядя Миша это MAXScript, встроенный язык 3дмакса


Отправлено Prokaza 09-03-2020 в 06:41:

Цитата:
ncuxonaT писал:
Prokaza это скрипт импорта косячит, кто только эти скрипты писал. Вот пофикшенная версия, проверь.


Спасибо большущее! Заработало.) Скрипты писались как я понял разными людьми под разные версии Макса, в этом и подвох.


Отправлено Дядя Миша 09-03-2020 в 07:19:

Макс-то может и разный, а вот md2 никогда не менялся.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 09-03-2020 в 13:01:

Prokaza пожалуйста. Вообще ДМ прав, косяки с поддержкой самого формата.


Отправлено Дикс 10-03-2020 в 08:15:

А что вот это может быть такое? Текстура модели плывет, если подойти к ней ближе.

https://gyazo.com/92ae94a37d324a2e56dc3d44cbf114dd

И по размерам текстуры модели такое:

"В общем да. Максимальный размер текстуры модели 640x480. Если квадратная 480x480.
Почему то при размере 480 на 480 двиган стал вылетать когда вплотную к модельке подходишь."

__________________
https://igroprom.d3.ru
https://t.me/deex_gamedev


Отправлено Crystallize 10-03-2020 в 08:34:

Дикс это ограничение софтварного рендера который не может перспективно искажать текстуру, а только аффинно. Переключись в GL и выстави gl_texturemode gl_nearest_mipmap_linear если любишь квадратики.


Отправлено Дядя Миша 10-03-2020 в 08:50:

Цитата:
Crystallize писал:
это ограничение софтварного рендера который не может перспективно искажать текстуру, а только аффинно

Именно вот эту текстуру? Или к остальным текстурам нельзя так близко подойти?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 10-03-2020 в 09:25:

Дядя Миша я ещё когда в 2003 в Q2: Zaero играл, помню что наблюдал такой глюк конкретно на одном зелёном ящике-пушабле. Меня тогда это заинтересовало. Так что это именно прикол с обработкой модельных текстур движком.


Отправлено ncuxonaT 10-03-2020 в 12:42:

Crystallize это было на только на зелёном ящике? Странно, что вы с Диксом заметили это только на индивидуальных моделях. Странная избирательность


Отправлено Crystallize 10-03-2020 в 12:49:

ncuxonaT нечто подобное я ещё наблюдал в Q2: 1492 на стенке и в редакторе Doom 3 на полу, там вообще текстура превратилась в экран, а её края образовали коридор перспективно уходящий в бесконечность, и в завимости от угла камеры его плющило как диораму. Я видео даже имел одно время и тут на форуме должен был пост остаться.


Отправлено Дядя Миша 13-03-2020 в 20:41:

Поскольку проблема всё еще актуальна, выложу своё мини-исследование с вердиктом. Итак. Моделлёр делает модель. Модель видна в софтваре, но в гл её не видно. Причём, что немаловажно - модель видна в любом софт-рендере и не видна в любом гл-рендере. Кудвашный модельвьювер попрежнему её не отображает, а вот кварк прекрасно рендерит, у него софт-рендер там. Как такое возможно?

Я предположил самое простое - нету гл-комманд. Софтвару они не нужны, он просто пробегает все треугольники, а вот гл только по ним и рисует.
пихнул алерт в отрисовку и это предположение полностью подтвердилось:

C++ Source Code:
begin draw model()
gl commands: 0
end draw model()

Если бы дело было только в этих индексах, то пожалуй можно бы было доработать сам рендерер, например. Но дело в том, что в этом списке еще и улучшенные ST-координаты во флоатах. Они дополнительно закодированы в самом треугольники как старшая часть int32. Т.е. по сути такие же целочисленные координаты как и в халфовских моделях, но не суть. Теперь почему так получилось. У меня собственно два варианта: Крупский и ДелчевЛибо MAXScript не предоставляет достаточного функционала, чтобы в его рамках осуществить стрипификацию треугольников, т.к. там по сути требуется полноценный язык программирования. Является ли MAXScript таковым - я не знаю. Но если да, то очевиден второй вариант - тот, кто писал экспортёр поленился\не смог реализовать этот функционал, а тестировал свою поделку исключительно в софтваре. Это конечно странно, но вот такие дела.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ncuxonaT 13-03-2020 в 22:33:

Цитата:
Дядя Миша писал:
тот, кто писал экспортёр поленился\не смог реализовать этот функционал

Вообще в скрипте есть процедуры стрипификации и фанификации, но они почему-то не используются.


Временная зона GMT. Текущее время 07:34.
Показать все 27 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024