TauCetiClassic
TauCetiClassic copied to clipboard
Кривое расположение ног на кукле.
Подробное описание проблемы
Ноги у всех кукл в билде прорисовываются неправильно, а точнее неправильно накладываются слои друг на друга, в результате чего протез на правой ноге находится поверх левой ноги при направлении на запад (скрин ниже).
Хотел отрисовать протезы, а тут такое. В общем надо фиксить, ибо такая же беда и с руками которые видно сквозь пузо у толстиков.
Было бы хорошо сюда линкануть все похожие ишуи, к примеру про жир, оверлеи крови поверх отрезанных рук, и т.д. Можно было бы сделать большим заданием, и навесить баунти (когда-нибудь)
#8754
Такая же штука с отображением предметов в руках. Дальние спрайты перекрывают по какой-то причине те, что ближе к зрителю
Как по какой причине. всё просто. слои рук и ног не меняются. как и слои инхэндов при повороте куклы. даже по логике представьте себе ситуацию. Когда хуман смотрит направо - его правая рука ближе к нам, а левая дальше. Когда хуман смотрит влево - его правая рука дальше от нас, а левая ближе. Но это визуально. По факту же от дира не зависит расположение слоёв куклы. Надо сделать чтобы при смене дира кукла пересобиралась или некоторые слои только.
var/list/bodypart_layer_by_dir = list(
BP_HEAD = list(
NORTH = HEAD_LAYER_NORTH,
SOUTH = HEAD_LAYER_SOUTH
)
вот такое надо выходит
Ммм. нет, наверное. Ты хочешь чтобы противоположный дир вообще вырезался чтоль?
возможно красивее было бы
var/list/bodypart_layer_by_dir = list(
"[BP_HEAD][NORTH]" = HEAD_LAYER_NORTH,
"[BP_HEAD][SOUTH]" = HEAD_LAYER_SOUTH,
)
Я вам напомню, но руки так-то корректно отображаются
Нога же почему-то даже поверх руки рисуется..
Гусев выше правильно написал, кукла склеивается в определенном порядке и стейты фиксируются один поверх другого, не зависимо от dir-а. Возможно, что проблема не решаема вовсе.
С руками схитрили - левые стейты у правых рук почти отсутствуют в самом dmi, но с ногами так не получится - если у нас нет одной из ног, нам нужно показывать другую. У рук мы по этому поводу не волнуемся из-за всегда присутствующего туловища. Единственное что, руки так подогнаны под тощее тело, и на толстом заметен косяк с тремя пикселями через пузо.
Можно попробовать делать для определенных dir-ов конечностей оверлей с BLEND_SUBTRACT (вычетание из одного спрайта другого по маске) от определенных dir-ов других конечностей. Я, правда, не представляю, как оптимально это сделать, не плодя операций с иконками на сервер-сайд и не клепая кучу оверлеев на оверлеи. Возможно альтернативой blend_mode
могли бы стать фильтры в режиме альфа-маски.
И нужно будет смотреть это с 3 парами, руки и ноги в https://github.com/TauCetiStation/TauCetiClassic/blob/2fbdc98a4121a10a42be32117ac65aa5cdefcad1/code/modules/mob/living/carbon/human/update_icons.dm#L222-L226 +учитывать для рук туловище, для ног возможно хвост
И инхенды предметов в правой и левой руке в https://github.com/TauCetiStation/TauCetiClassic/blob/2fbdc98a4121a10a42be32117ac65aa5cdefcad1/code/modules/mob/living/carbon/human/update_icons.dm#L396-L397 которым так же стоит скорее всего учитывать туловище
Всмысле не решаемая. Я ж кидал месяцев 3 назад ТГ фикс отображения....
Могл бы и сюда кинуть, https://github.com/tgstation/tgstation/pull/66607
но они как раз блендят (серверсайд), хоть и кэшируют - это будет затратно для инхендов. Сужу по PR-у, нужно смотреть последнюю ревизию.
~~Я подумал еще немного, запишу на полях.~~
~~Для дальней пары можно брать appearance из overlays_standing ближней пары (руки/ноги не в overlays_standing, но им нужен свой массив для порядка), выставлять ему нужный dir, и в качестве фильтра или оверлея с BLEND_SUBTRACT каким-то образом применять именно к 4-му из 4-х dir-у иконки дальней пары. Не могу придумать, как делать последний шаг. Если получится, то была бы генерация всего на лету без дополнительных затрат ресурсов.~~
не важно, оно работает не так
Можно отслеживать смену дира, думаю, поворот перса. И на повороте пересобирать только руки-ноги + инхенды, меняя их лееры.
Сюда же отображение вещей в руках вокесов. Там тупо спрайтов не хватает и поэтому все выглядит убого. А еще разница в высоте рук. Поэтому вещи где-то не в руках у воксов, а рядом с ними.