Страница 1 из 1

Динамические номера - но не совсем. Как?

Добавлено: 24 дек 2019, 10:59
DmitriSkif
Привет.

Постановка вопроса. У одного условного локомотива номерные таблички (точнее, накладные номера) обладают препаскудным свойством:

- Одна из цифр имеет меньшую ширину, чем остальные, и при составлении номеров вида 112, 101, 001, 010, 210 и т.п. получается ахинея с пробелами в номере. Как вы наверняка догадались, это единица.
- учитывая, что все цифры динамического номера должны иметь одинаковую ширину, напрашивается несколько альтернативных решений. А какие варианты есть у вас?


Возможные варианты:
1. Читаем бортовой номер скриптом, подгружаем нужные динамические номера внешним узлом вместо механики динамических номеров. Очень муторно (282 варианта, если быть точным), и крайне высокий поликаунт в случае объемных цифр, так как весь полигонаж внешних узлов модели лишь делается невидимым, но не удаляется из сцены.
2. Уникальные модели без динамических номеров. Неинтересно, но самый надежный способ.
3. Забить на толщину цифры и стиснув зубы пойти на столь досадное допущение.
4. Городить метод с рассчетом положения цифр номера и двигать их при помощи анимации, благо просчитать расположение цифр потребуется только один раз при инициализации локомотива.

Еще варианты?

Re: Динамические номера - но не совсем. Как?

Добавлено: 24 дек 2019, 15:05
Света
5. Сделать модельку с 10 нодами-цифрами. Прикрутить её дочеркой, на каждый разряд по одной. Номер считывать скриптом, раскладывать на разряды, для каждого разряда скриптом задать дочерке координаты расположения. Если цифра, которую надо вывести, равна 1, координаты должны быть с учетом сдвига, координаты всех соседних разрядов-дочерок должны вычисляться с учетом этого сдвига. Самый оптимальный способ по быстродействию и расходу памяти - использование для базовых координат локального многомерного массива. Тот разряд, относительно которого центрируются остальные, может иметь жесткую привязку.
При этом способе количество разрядов может быть любым, количество номеров-нодов - 10*количество разрядов, каждая цифра может иметь произвольную ширину.

Re: Динамические номера - но не совсем. Как?

Добавлено: 24 дек 2019, 16:29
DmitriSkif
Ну это способ 4 и есть.
для каждого разряда скриптом задать дочерке координаты расположения.
А это возможно? Не помню, чтобы скриптом можно было двигать дочерку в узлах, помимо координат в блюпринте и анимацией? Есть возможность отредактировать матрицу чайлда скриптом? Больше похоже на то, что для каждого из разрядов (возможно, кроме старшего, от которого вправо и будет "растягиваться" номер) нужно прикрутить по две модели из 10 цифр: одну если 2-ой разряд единица, вторую для остальных случаев.

Re: Динамические номера - но не совсем. Как?

Добавлено: 24 дек 2019, 17:09
Света
Способ 4 - это устанавливать нод разряда анимацией. А я пишу об установке разряда загрузкой координат в позицию дочерки. Способ 4 подразумевает изготовление 10*(количество разрядов) нодов с цифрами, которые, к тому же, не факт, что удастся скрыть, так как проскакивала информация, что анимированный узел нельзя скрыть). А я говорю о способе, когда создается всего одна моделька с 10 нодами (0...9), которая тиражируется дочерками, а дочерки устанавливаются одна возле другой и все, что нужно рассчитать - это координаты, которые можно просто брать из массива, даже не высчитывая. Да и координата Y, в принципе, не нужна.
DmitriSkif писал(а):А это возможно?
Возможно.
DmitriSkif писал(а):для каждого из разрядов (возможно, кроме старшего, от которого вправо и будет "растягиваться" номер) нужно прикрутить по две модели из 10 цифр: одну если 2-ой разряд единица, вторую для остальных случаев.
Тогда три модели, потому что одиночный сдвиг - это когда первый или второй разряд равны 1, но есть ещё случай, когда оба разряда равны 1 и требуется двойной сдвиг, и когда оба разряда не равны 1 и сдвига вообще нет. Согласно этому третий разряд уже должен иметь, соответственно, ещё больше вариантов сдвига, так как надо учитывать уже как сдвиги первого и второго разрядов, так и его собственные. И каждый последующий разряд будет иметь все большее количество вариаций расположения.

Re: Динамические номера - но не совсем. Как?

Добавлено: 24 дек 2019, 17:28
DmitriSkif
Возможно.
Звучит обнадеживающе, спасибо.

Перефразируя классика, "Метод, сестра, скажи мне метод". Все остальное рассчитывается на коленке за час возни с модельками цифр. Конечно, если есть возможность "сложить" номер физически двигая модельки цифр, наборов понадобится меньше. Один на разряд, если быть точным, как ты и указала.

Call(“<ChildName>:setNearPosition”, x, y, z) - этот, что ли? Система координат родительская локальная или глобальная?