Есть цилиндр с радиусом и высотой по размеру текстуры. Текстура представляет собой длинную полосу с символами. Сложность в том, что надо с помощью Boole убрать всё, кроме зоны в окошке, где будут крутиться эти самые символы. В идеале окружность цилиндра должна составлять минимум 2-3 длины текстуры. Важна точность, не 1,98, а 2. Иначе расчёты смело пойдут нахуй.
Дальше — ты множишь этот сетап на необходимое количество цилиндров, в идеале не простым клонером, а прям отдельными сетапами. Полигонов там всего ничего требуется, но вот буль будет сношать голову знатно.
После этого тебе нужно высчитать углы поворота в пределах 360°, чтобы понимать, на какие значения у тебя попадают определённые символы. Поэтому и важна точность в размерах, иначе при поворотах свыше 360° есть вероятность промахнуться мимо нужного символа.
Если у тебя одинаковые цилиндрические элементы с одинаковым набором символов, то задача упрощается, если нет — кратно усложняется.
Далее ты можешь сделать сетап через XPresso, в котором бы ты буквально вписывал нужные символы, а твои цилиндры поворачивались бы абсолютно корректно. Сделать это не так сложно, но долго, часа два-три минимум. Простая зависимость от поворота, думаю, ты справишься.
Далее — рандом. И вот тут я бы предложил вывести исходное значение поворота цилиндра во внешнюю переменную, на которую бы применял выражение, домножающее шаг цилиндра на определённое целочисленное значение, дабы у тебя на условном экране цилиндры всегда стояли в положении точного символа, иначе у тебя будут смещены цилиндры и символы на них. Как найти шаг — круг разделить на количество символов и высчитать значение поворота для смещения на один условный символ.
Соответственно, тебе остаётся два варианта. Либо каждый раз менять исходные и конечные значения (метод Олега выше), либо (сейчас пришёл в голову вариант) высчитать последовательность для каждого символа и просто домножать поворот плюс локацию символа на коэффициент вращения. Грубо говоря, у тебя есть исходное положение, тебе остаётся только просчитать смещённое значение. При условии того, что тебе известен шаг поворота и точные значения для всех необходимых символов, то ты можешь параметрически изменять шаг (домножение вращения на коэффициент смещения в целочисленных значениях — последовательный переход с символа на символ) — первый вариант — либо же выставлять значение финальной позиции (нужного символа) и прибавлять к нему x*360°, где x — количество оборотов цилиндра, которое так же можно вывести во внешнюю переменную.
Как-то так.