Render.ru

rotate objects

Di_di_0

Активный участник
Рейтинг
5
#1
Здравствуйте! Есть сцена торговый комплекс - практически целый квартал. Чтобы смотрелось более живее я накопировал около 2000 человек. Все они сделаны просто текстурой натянутой на plane. Под каждую камеру а их около 12, приходится выделять их все и поворачивать, так чтобы они смотрелись нормально. Имя каждого чела - chel01, chel02 и т.д. Скрипт чтобы выделить их всех одним нажатием я сделал сам, а вот с вращением, чтото не выходит. Когда поворачиваешь вручную, то выставляешь Local вместо World и они поворачиваются каждый вокруг своей оси. Я пробовал из Listenerа команду взять но почему-то они начинают поворачиваться всем блоком, у каждого меняется положение в сцене. Как ни мучился ничего не выходит, не хватает мозгов наверное! Было бы хорошо создать такую кнопочку чтобы все выбранные объекты поворачивались при нажатии на какой-то градус вокруг своей оси. Помогите пожалуйста!
 

Di_di_0

Активный участник
Рейтинг
5
#3
В целом хочу делать так:

select $chel*
toolMode.coordsys #local
--здесь они поворачиваются на определенный угол
render camera:$camera01 outputfile:("ren1.jpg") vfb:eek:n
--здесь на другой угол
render camera:$camera02 outputfile:("ren2.jpg") vfb:eek:n
и так далее пока все камеры не пройдут.

ПРОБОВАЛ ТАК
$.objectoffsetrot*=(EulerAngles 0 0 15)
и ТАК
$.rotation*=(EulerAngles 0 0 15)
И ТАК
$.rotation*=(angleaxis 15 [0,0,1])

но чего-то он поворачивает как-то непредсказуемо или непонятно по какой оси.
Или может это зависит от активного вьюпорта.

Меня интересуют две функции:
1. При нажатии кнопочки объект поворачиватся на 15 гр. при повторном нажатии еще на 15гр.
2. заранее прописываешь что угол должен быть допустим 32гр. кликаешь кнопку он становится на 32гр.
если снова щелкаешь он так и остается на 32 как был.
Приводи свой код, попробуем разобраться.
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#4
1. Впервом случае

Код:
coordsys local rotate $ (EulerAngles 0 0 15)
1. Во втором случае
Код:
fn setNodeWorldRotation theNode theRot = 

(
theNode_ = if isProperty theNode #count then theNode else #(theNode)
for obj in theNode_ do in coordsys (transmatrix obj.transform.pos) 
	obj.rotation = theRot

)

 

setNodeWorldRotation $ (eulerangles 0 0 0)
 

Di_di_0

Активный участник
Рейтинг
5
#5
Оказывается я был близко только не мог составить слова в предложение. Все работает. А до второго случая я бы в жизни не додумался. Спасибо, Денис!
 
Сверху