Render.ru

Изменение выходного разрешения в зависимос

PlutDem

Пользователь сайта
Рейтинг
2
#1
Здравствуйте, мне нужно отрендерить несколько разных по размеру объектов ортогональной камерой. При этом плотность пикселей должна быть одинаковой, т.е. если объект больше предыдущего в 2 раза то и разрешение будет больше в 2 раза. Сейчас я отдаляю камеру , что бы охватить весь объект и на глазок подгоняю разрешение выходного файла. Можно ли это как то автоматизировать?
 

igorznag

Мастер
Рейтинг
103
#2
Что означает ортогональная камера? Каким способом вы ее отдаляете?
Предоставьте скрин (картинку), чтобы было понятнее о чем идет речь.
Размер объектов означает размеры (Dimensions) по оси X, Y, Z, которые можно узнать с помощью Utilities > Measure?
 
Рейтинг
82
#3
А не проще ли объект "подогнать" под размер картинки с уже настроенными параметрами разрешения нажав на Zoom Extents Selected (на панели навигаций-при выделенном объекте) макс сам разместит объект в центре экрана (в любой проекции) .Естественно вид должен быть не из камеры.
 

PlutDem

Пользователь сайта
Рейтинг
2
#4
Ортографическая

Для примера:
Есть ящик метр на метр при рендере получаем его изображение 100х100 пикселей.
Есть другой ящик два на два метра и он уже не влезает в объектив камеры как первый ящик. Значит нужно изменить размер линзы, что бы он полностью влез в объектив, а также выходное разрешение в зависимости от того на сколько увеличилась площадь охватываемая камерой. В дам случае это будет 200х200 пикселей.

А не проще ли объект "подогнать" под размер картинки с уже настроенными параметрами разрешения нажав на Zoom Extents Selected (на панели навигаций-при выделенном объекте) макс сам разместит объект в центре экрана (в любой проекции) .Естественно вид должен быть не из камеры.
В этом случае все равно придется на глазок выставлять разрешение, а нужно это делать точно.
 

igorznag

Мастер
Рейтинг
103
#5
В этом случае все равно придется на глазок выставлять разрешение, а нужно это делать точно.
Попробуйте такой способ:
1. Вместо ортографической камеры используем вид User/Orthographic, Front, Back, Top, Bottom, Left, Right.
2. Включаем Safe Frames (Shift+F). Подгоняем объект вручную с помощью Zoom, Zoom Region.
3. Запускаяем скрипт. В новом окне нажимаем кнопку Apply.
Из-за округлений, Image Aspect будет немного меняться, но если хотите, то можете добавить его в код скрипта.
Код:
rollout igorznag_view_rez "View rez"
(
button btn_apply "Apply" pos:[50,50]
spinner sp_view_units "View units:" fieldWidth:60 range:[0, 1e9,100] pos:[5,5] type:#worldunits
spinner sp_render_pixels "Render pixels:" fieldWidth:45 range:[1, 32768,100] pos:[5,30] type:#integer
on btn_apply pressed do
(
views_array=#(#view_iso_user,#view_top,#view_bottom,#view_right,#view_left,#view_front,#view_back)
vt=viewport.getType()
if(finditem views_array vt !=0)then
(
dsf=displaySafeFrames; displaySafeFrames=true; completeRedraw();
asp_res=(renderWidth as float)/renderHeight
view_width=(getViewSize())[1]
view_height=(getViewSize())[2]
screen_center=[view_width/2,view_height/2]
asp_view=(view_width as float)/view_height
if(asp_res<asp_view)then view_width=view_height*asp_res
if(asp_res>asp_view)then view_height=view_width/asp_res
screen_p1=screen_center-[view_width/2,view_height/2]
screen_p2=screen_center+[view_width/2,view_height/2]
p1=mapScreenToView screen_p1 0
p2=mapScreenToView screen_p2 0
world_width=abs(p2.x-p1.x); 
world_height=abs(p2.y-p1.y)
if(sp_view_units.value!=0)then
(
asp_pixels_units=(sp_render_pixels.value as float)/sp_view_units.value
rw=ceil (world_width*asp_pixels_units)
rh=ceil (world_height*asp_pixels_units)
if(rw>0 and rw<32768 and rh>0 and rh<32768)then
(renderWidth=rw; renderHeight=rh)
)--if(sp_view_units.value!=0)then
displaySafeFrames=dsf; completeRedraw()
renderSceneDialog.update()
)--if(finditem views_array vt !=0)then
)--on btn_apply pressed do
); createDialog igorznag_view_rez 140 80
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
 
Сверху