문제

I am trying to write a turntable script in which it will automatically fits all my objects(bounding box) within the frame of my resolution gate which is HD 1080 (1920x1080)

test = cmds.select('MODELS*')
mel.eval('FrameSelectedInAllViews')
cmds.setAttr('TT_CAM.cameraScale', 1)

As I have quite a few, is my above code the correct way to script for bounding boxes?

도움이 되었습니까?

해결책

I could only think of creating temporary locators, that fill the bounding box of the selected objects, then framing those locators, this works fine so far from what I've tested.

I've included comments in the script below:

from pymel.core import *

select("MODELS*")

## Gather our world bounding box and store it in a variable called b
b = general.exactWorldBoundingBox()

## b now contains min and max XYZ world coords
## Name our temporary locators

locName = "tempLoc"
## Create a locator at each min and max point to form a fake bounding box

positions = [[0,1,2], [0,4,2], [0,4,5], [3,4,5], [3,1,5], [3,4,2], [3,1,2], [0,1,5]]

## Create the locators 
for position in positions:
    print position
    spaceLocator(p=(b[position[0]],b[position[1]],b[position[2]]), name=locName)

## Once we create the locators, frame locators, delete

tempLocators = select("tempLoc*", r=1)
runtime.FrameSelectedInAllViews()
delete()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top