Вот кстати быстрая запись с экрана, как работает мое приложение по созданию и визуализации волейбольных схем.
Детали реализации тут:
Вот кстати быстрая запись с экрана, как работает мое приложение по созданию и визуализации волейбольных схем.
Детали реализации тут:
Чем я занимался в самолете в/из отпуска и иногда между и после: 3D-визуализация и редактор волейбольных схем для Нади (она — тренер). Этот корт на приложенном изображении свободно вращается, на нем могут быть поставлены игроки, и указан путь мяча и игрока — все в 3D.
Траектория мяча рассчитывается так, чтобы мяч не пересекал сетку при движении из A в B (формула Безье). Игроки могут принимать несколько поз — прямо сейчас есть наспех сделанные позы serve, attack, block, pass/receive. Кстати, из интересного в коде: пришлось прописать немного «волейбольных мозгов». Система сама считает траекторию мяча через кривые Безье так, чтобы он всегда проходил над сеткой. Причем высота вылета зависит от типа действия: для атаки мяч «вылетает» с более высокой точки, чем а для паса. Еще добавил авто-разворот: 3D-моделька сама поворачивается лицом туда, куда она по схеме должна пасовать или бежать.
Дольше и сложнее всего было сделать 3D-модель волейболистки. Для генерации реалистичной волейболистки я использовал сервис tripo3D. Он мне выдал модель в нейтральной позе (бесплатно выдал). Теоретически дальше с помощью Blender и плагина Rigify можно прицепить к ней armature и двигать руки-ноги, за которыми будет пересчитываться модель.
Однако в реальности такой подход не срабатывает: сгенерированная ИИ модель содержит большое количество геометрических ошибок, которые прощает рендер, но не прощает Rigify. Их можно условно разделить на два вида — неверные нормали полигонов и проблемы с немногообразной (non-manifold) геометрией, которые исправлять значительно сложнее. Внутри корпуса могут «плавать» невидимые кластеры полигонов или пересекающиеся поверхности. Когда Rigify пытается рассчитать веса (какая кость на какую часть кожи влияет), этот внутренний шум сбивает алгоритм с толку, и в итоге веса распределяются хаотично (например, движение руки может начать тянуть за собой сетку на животе). Плюс модель немного не симметрична.
Non-manifold — это ошибка геометрии, при которой топология объекта перестаёт быть корректной с точки зрения трёхмерного тела: рёбра могут принадлежать более чем двум полигонам, полигоны могут соприкасаться только вершинами или рёбрами без общего объёма, внутри модели появляются «висящие» поверхности или нулевая толщина. Такая геометрия формально не описывает замкнутый объём, из-за чего возникают проблемы с риггингом и деформациями. Кроме этого, нужно упростить модель, потому что для рендера в реальном времени в браузере миллионы полигонов не нужны.
Я исправлял это с помощью MashLab, попутно дорабатывая «напильником» (руками). В итоге получается модель, чуть-чуть отличающающаяся от исходной почти везде. На исходной же модели нацеплена «кожа» в виде текстуры — лицо, майка, шорты должны быть раскрашены. Как все это перенести на упрощенную модель? Для этого есть специальная операция в Blender, называется Baking. Там тоже шаманство. В итоге неидеально перенеслось, но идеально пока и не нужно.
Дальше привязываем арматуру к «суставам», и через часа три разбирательств, почему все работает не так, как должно, оно все-таки заработало. Я сделал четыре позы, и теперь каждому кружочку (игроку) можно указывать в какой позе он стоит.
Еще нужно будет сделать динамическую смену раскраски формы — это не должно быть сложно. Есть еще идея переносить позу с фотографии — это посложнее, но в целом реалистично. С помощью MediaPipe/AlphaPose можно детектировать ключевые точки в 2D, затем с помощью каких-нибудь моделей типа HMR/HybrIK можно «поднять» плоские координаты в 3D-пространство, выдавая относительные углы поворота суставов. Полученные данные можно попробовать спроецировать на Rigify-скелет. Поскольку пропорции сгенерированной волейболистки и человека на фото могут не совпадать, как раз и используется Inverse Kinematics (IK). Это довольно сложная часть, но в целом она уже не очень обязательная — просто интересно разобраться и сделать что-то работающее.
Видео в комментах



Как мы встретили новый год? В пустом кинотеатре на Avatar IMAX 3D.
CGI просто потрясающий. Серьёзно, это, возможно, самый фотореалистичный фильм в истории с точки зрения компьютерной графики. Детализация отдельных лиц — временами я готов был поклясться, что смотрю на человеческие лица, покрытые краской (и это комплимент). И ещё там очень много всего происходит на заднем фоне. Или нужно на IMAX и желательно в 3D, потому что это один из немногих фильмов, где технология imax 3D используется не в отдельных сценах, а вообще везде.
Главная злодейка Varang там просто потрясающая. Каждый раз, когда она появлялась в кадре, она перетягивала внимание на себя. Несмотря на CGI, они идеально передали все сложные эмоции её персонажа. Её сделали реально беспощадной, сексуальной и опасной. Клёво получилось.
Хронометраж в три часа очень густо наполнен экшеном, там практически нет сцен, где хочется позевать.

Муравьи Golden Carpenter с последний поездки в Коста-Рику. Они огромные, примерно 1.5см. Строят гнезда в древесине. Саму древесину в отличие от тестов не едят, просто делают там домик себе. Жала нет, но если их очень тревожить, то могут укусить своими челюстями (на фото у левого видно) и впрыскнуть муравьиную кислоту. У них отличительный признак — золотое брюшко. Про других примечательных муравьев-листорезов в следующий раз напишу, у меня пол-телефона в них.

Сажусь в самолёт и задумался, а как авиакомпании разделяют излишне тучных людей от ещё недостаточно тучных, и как они заставляют первых платить в два раза больше. И как м это вообще дружит с политикой всеобщего равенства и единых возможностей. Проблема вызывает «антропометрический диссонанс» — за последние десятилетия средняя ширина кресла в самолетах сократилась с 47 до 43 см, в то время как средний вес пассажиров значительно вырос. В итоге, выходит жесткая классификация пассажиров на «обычных» и официально признанных «пассажирами крупной комплекции» (Customer of Size — CoS).
.
Главным техническим критерием, разделяющим эти категории, является «правило подлокотника». Если тело человека выступает за внешнюю границу опущенного подлокотника более чем на 1 дюйм (2,5 см), он официально признается «негабаритным». Неспособность полностью опустить подлокотник без боли для себя или дискомфорта для соседа является основанием для требования выкупить второе кресло.
.
До 2025 года авиакомпания Southwest Airlines считалась «золотым стандартом» для крупных людей, позволяя бесплатно занимать второе место. Однако с 27 января 2025 года правила изменились: теперь такие пассажиры обязаны покупать второе место заранее при бронировании. Если человек этого не сделал и самолет оказался полон, ему могут просто отказать в посадке и предложить перебронировать билет на другой рейс, где будет два свободных места рядом.
.
Финансовые риски теперь почти полностью лежат на пассажире. Согласно новой политике 2025 года, возврат средств за дополнительно купленное место возможен только в том случае, если рейс вылетел не полностью заполненным. Учитывая, что средняя загрузка самолетов сегодня составляет 85–90%, вероятность того, что деньги за «кресло для комфорта» не вернут, крайне высока.
.
В мире существует «географическая лотерея» прав пассажиров. В Канаде действует уникальная доктрина «Один человек — один тариф» (1P1F), закрепленная судом. Там ожирение признано «функциональной инвалидностью», поэтому на внутренних рейсах авиакомпании обязаны предоставлять второе место бесплатно, если пассажир предоставит медицинскую справку. В США и Европе таких льгот нет, и комфорт считается коммерческой услугой.
.
Технически, есть ещё правило ремня», которое является вторым по значимости (после правила подлокотника) и служит своего рода «юридическим и техническим барьером». Типа каждый пассажир обязан быть пристегнут во время руления, взлета и посадки. Если ремень не застегивается, пассажир физически не может находиться в кресле. Мол, это не вопрос комфорта, а вопрос законности нахождения на борту. Если стандартной длины ремня не хватает, пассажир имеет право попросить удлинитель (seatbelt extender). Обычно он добавляет от 25 до 60 сантиметров. Сам факт просьбы удлинителя часто фиксируется бортпроводниками как маркер «пассажира повышенной комплекции». Это критический момент. Большинство авиакомпаний мира официально запрещают использовать два удлинителя одновременно. Если человеку не хватает длины одного стандартного ремня плюс одного удлинителя, он признается «негабаритным» для данного типа кресла. В этом случае авиакомпания имеет полное право снять его с рейса или потребовать покупки второго места, так как безопасность не может быть обеспечена.
.
Безопасность полетов — основной аргумент авиакомпаний при введении ограничений. Согласно нормам EASA и FAA, полная эвакуация самолета должна занимать не более 90 секунд. Крупный пассажир, который физически не помещается в кресло, может заблокировать проход или замедлить движение других в экстренной ситуации, поэтому им запрещено занимать места у аварийных выходов.я лично думаю, что это просто красивая причина не тратить лишние деньги.
.
Идентификация «слишком толстых» пассажиров часто происходит прямо в салоне. Бортпроводники имеют право потребовать от человека пройти «тест на подлокотник» при свидетелях. Если обнаружится «вторжение» в пространство соседа, приоритет всегда отдается тому, кто помещается в свое кресло, а пассажира CoS могут снять с рейса ради комфорта окружающих.

В лесах Коста-Рики встретились несколько видов обезьян. Вот самые интересные — коаты. Обитают довольно высоко, но и трейл проходил тоже по склону горы
Вчера ночью встретил на тропинке самую опасную, самую ядовитую змею в джунглях — Fer De Lance (Bothrops asper). В целом, в местных клиниках есть противоядие и смертность с противоядием падает до нуля, но лучше не доводить — яд вызывает быстрый некроз и отключает свёртывание крови. Ещё у нее в голове встроена камера ночного зрения. Система настолько чувствительна, что змея может обнаружить разницу температур всего в 0,003 °C. Это помогает ей охотиться на теплокровных грызунов и птиц ночью, когда визуальное зрение ограничено.
Ещё она супербыстрая. Четыре с половиной метра в секунду. Это быстрее, чем вы моргнете. Правда, если не сидеть перед ее носом, время на разворот в боевую позицию достаточное, чтобы отпрыгнуть — поэтому получалось пройти сзади.

Чего только не найдёшь в джунглях ночью. Внезапно взрывающееся дерево с ядовитыми шипами.
Взрывается не дерево, конечно, а его плоды. Они напоминают маленькие тыквы-капсулы. Когда созревают и высыхают, стенки плода постепенно натягиваются, накапливая внутреннее напряжение. В какой-то момент этот «биологический прибор» разрывается с громким хлопком и выбрасывает семена с огромной скоростью — до ~70 м/с на расстояние десятков метров, а звук напоминает выстрел.
Все части дерева крайне токсичны. Сок содержит раздражающие вещества, которые при попадании на кожу вызывают сильные ожоги и сыпь, а в глаза — временную или даже постоянную слепоту.
Просто деревьев с шипами (неядовитыми), но длинными и острыми сильно больше вокруг. Как раз такую показывали в сериале pluribus


Дикий костариковский кабан в составе небольшого стада посчитал меня за своего и дал себя поснимать. Точнее, это не совсем кабан — это пекари (peccary). У меня этими хрюшками полтелефона забито.
Отличная фотка с сегодняшнего похода в национальный парк. У меня этих обезьянок весь телефон, они сотнями бегали под ногами
