TauCetiClassic icon indicating copy to clipboard operation
TauCetiClassic copied to clipboard

Кривое расположение ног на кукле.

Open WatlerJe opened this issue 2 years ago • 13 comments

Подробное описание проблемы

Ноги у всех кукл в билде прорисовываются неправильно, а точнее неправильно накладываются слои друг на друга, в результате чего протез на правой ноге находится поверх левой ноги при направлении на запад (скрин ниже). image

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

WatlerJe avatar Mar 14 '22 14:03 WatlerJe

Было бы хорошо сюда линкануть все похожие ишуи, к примеру про жир, оверлеи крови поверх отрезанных рук, и т.д. Можно было бы сделать большим заданием, и навесить баунти (когда-нибудь)

LudwigVonChesterfield avatar Mar 14 '22 14:03 LudwigVonChesterfield

#8754

UDaV73rus avatar Mar 14 '22 14:03 UDaV73rus

Такая же штука с отображением предметов в руках. Дальние спрайты перекрывают по какой-то причине те, что ближе к зрителю

LiLJard avatar Mar 14 '22 15:03 LiLJard

Как по какой причине. всё просто. слои рук и ног не меняются. как и слои инхэндов при повороте куклы. даже по логике представьте себе ситуацию. Когда хуман смотрит направо - его правая рука ближе к нам, а левая дальше. Когда хуман смотрит влево - его правая рука дальше от нас, а левая ближе. Но это визуально. По факту же от дира не зависит расположение слоёв куклы. Надо сделать чтобы при смене дира кукла пересобиралась или некоторые слои только.

DarthSidiousPalpatine avatar Mar 14 '22 15:03 DarthSidiousPalpatine

var/list/bodypart_layer_by_dir = list(
    BP_HEAD = list(
        NORTH = HEAD_LAYER_NORTH,
        SOUTH = HEAD_LAYER_SOUTH
    )

вот такое надо выходит

LudwigVonChesterfield avatar Mar 14 '22 15:03 LudwigVonChesterfield

Ммм. нет, наверное. Ты хочешь чтобы противоположный дир вообще вырезался чтоль?

DarthSidiousPalpatine avatar Mar 14 '22 15:03 DarthSidiousPalpatine

возможно красивее было бы

var/list/bodypart_layer_by_dir = list(
    "[BP_HEAD][NORTH]" = HEAD_LAYER_NORTH,
    "[BP_HEAD][SOUTH]" = HEAD_LAYER_SOUTH,
)

LudwigVonChesterfield avatar Mar 14 '22 15:03 LudwigVonChesterfield

Я вам напомню, но руки так-то корректно отображаются

KIBORG04 avatar Apr 10 '22 14:04 KIBORG04

image image image

Нога же почему-то даже поверх руки рисуется..

KIBORG04 avatar Apr 10 '22 14:04 KIBORG04

Гусев выше правильно написал, кукла склеивается в определенном порядке и стейты фиксируются один поверх другого, не зависимо от 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 которым так же стоит скорее всего учитывать туловище

volas avatar Aug 01 '22 04:08 volas

Всмысле не решаемая. Я ж кидал месяцев 3 назад ТГ фикс отображения....

Deahaka avatar Aug 01 '22 05:08 Deahaka

Могл бы и сюда кинуть, https://github.com/tgstation/tgstation/pull/66607

но они как раз блендят (серверсайд), хоть и кэшируют - это будет затратно для инхендов. Сужу по PR-у, нужно смотреть последнюю ревизию.

volas avatar Aug 01 '22 05:08 volas

~~Я подумал еще немного, запишу на полях.~~

~~Для дальней пары можно брать appearance из overlays_standing ближней пары (руки/ноги не в overlays_standing, но им нужен свой массив для порядка), выставлять ему нужный dir, и в качестве фильтра или оверлея с BLEND_SUBTRACT каким-то образом применять именно к 4-му из 4-х dir-у иконки дальней пары. Не могу придумать, как делать последний шаг. Если получится, то была бы генерация всего на лету без дополнительных затрат ресурсов.~~

не важно, оно работает не так

volas avatar Aug 01 '22 06:08 volas

Можно отслеживать смену дира, думаю, поворот перса. И на повороте пересобирать только руки-ноги + инхенды, меняя их лееры.

DarthSidiousPalpatine avatar Sep 09 '22 18:09 DarthSidiousPalpatine

Сюда же отображение вещей в руках вокесов. Там тупо спрайтов не хватает и поэтому все выглядит убого. А еще разница в высоте рук. Поэтому вещи где-то не в руках у воксов, а рядом с ними.

ZER0-In avatar Oct 10 '23 19:10 ZER0-In