Итак, у меня есть круг плоскостей, которые построены как:
plane.x = Math.cos(angle) * radius;
plane.z = Math.sin(angle) * radius;
plane.rotationY = (-360 / numItems) * i - 90;
, который вычисляет количество угловых срезов для общего числа плоскостей (вращение Y) и помещает каждую плоскость в свое место на окружности радиуса.
затем, чтобы обновить их вращение вокруг круга, у меня есть:
var rotateTo:Number = (-360 / numItems) * currentItem + 90;
TweenLite.to(planesHolder, 1, { rotationY:rotateTo, ease:Quint.easeInOut } );
как видите, самолеты кружатся, и каждый из них ориентирован на 90 градусов от круга.
Я использую это как справку - в значительной степени это: http://papervision2.com/a-simple-papervision-carousel/
Теперь я хотел бы узнать, как я могу рассчитать степень ориентации для каждой отдельной плоскости, чтобы всегда быть лицом к камере без нормали, если это вообще возможно. Я пробовал самолет. Посмотри (камера), но это не работает. По сути, каждая плоскость должна иметь ориентацию как камера, обращенная к середине.
Почему-то я думаю, что не могу изменить этот пример по ссылке, чтобы сделать это.
edit: OK. Я ответил на свой вопрос после того, как написал его. Помогает читать ваши собственные мысли написано. Так как я ориентирую плоскости по отдельности и поворачиваю их все как группу, то, что я сделал после анимации группы в коде выше, было перебрать каждую плоскость и сориентировал ее в Y-ориентацию передней плоскости так:
for (var i:int = 0; i < planes.length; i++) {
TweenLite.to(planes[i], 1, { rotationY:(-360 / numItems * rotoItem - 90), ease:Quint.easeInOut } );
}
rotoItem - тот, что находится впереди. Дело закрыто.