あー解像度違ったわー 余白分必要だったわー
ちょっと変えるかー
となったんですよ。
ちょっと大きくする必要があったので、こんな感じで解像度を変更してみました。
cmds.setAttr("defaultResolution.width", 1900)
cmds.setAttr("defaultResolution.height", 1200)
変わってますか?
HUDの表記上は変わっているのですが
元は 1600x900 なので 16:9
変更後は 1900x1200なので 19:12
縦横比が異なるはずなんですが、同じに見えますね。
renderSettingsを確認してみます。
解像度自体は意図したものになっていますがー
pixcel比がおかしなことになってますね。
試しにこれを1にしてみると
ちょっと縦が長くなりました。
OKじゃぁ解像度変えつつ、pixcel比を指定すればいいんじゃぁないか?
cmds.setAttr("defaultResolution.width", 1900)
cmds.setAttr("defaultResolution.height", 1200)
cmds.setAttr("defaultResolution.pixelAspect",1)
16:9だなぁー
あれ? pixcel比が反映されてませんね・・・
ちょっと吐かせてみます。
cmds.setAttr("defaultResolution.width", 1900)
cmds.setAttr("defaultResolution.height", 1200)
cmds.setAttr("defaultResolution.pixelAspect",1)
print(cmds.getAttr("defaultResolution.pixelAspect"))
## 1.0
1.0だな??
renderSettingsを開かないで、再確認すると
print(cmds.getAttr("defaultResolution.pixelAspect"))
## 1.1230000257492065
お、ずれましたね。
考察
原因はこれかなぁ・・・?
pixelAspect の方にチェックを入れて、解像度を変えるとpixelAspectは固定になりますね。
maintai ratio = deviceAspectRatio
- 解像度を設定する。
- deviceAspectRatio を維持する為にpixelAspectが設定される。
- その為pixelAspectを指定しても、上書きされる。
maintai ratio = pixelAspect
- 解像度を設定する。
- pixelAspectを維持する為にdeviceAspectRatioが設定される。
- その為deviceAspectRatioを指定しても、上書きされる。
ではこのアトリビュートはー
こいつかなぁ?
cmds.setAttr("defaultResolution.lockDeviceAspectRatio",1)
あー・・・・(嫌な予感
えい
cmds.setAttr("defaultResolution.width", 1900)
cmds.setAttr("defaultResolution.height", 1200)
お、renderSettingsの方も変わりましたね。
attr的には設定されているので、GUIよりもそっちを優先する感じですかね。
※このGUIで設定すると、裏で色々関連attrを良い感じに設定してくれるのはいいのですが
GUIの挙動を把握してないとスクリプト化した際に意図した挙動をしてくれないことがありますね。
カメラとかrenderSettingsでこの手の項目が多いように思えます。
となると?
今回はpixelAspectを維持して欲しいので、lockDeviceAspectRatioを0にしてあげればー
resolutionW = 1900
resolutionH = 1200
cmds.setAttr("defaultResolution.lockDeviceAspectRatio",0)
cmds.setAttr("defaultResolution.width", resolutionW)
cmds.setAttr("defaultResolution.height", resolutionH)
意図したとおりの数字になりました。
↓ 2024/12/22追記 ↓
何か違和感がある
起動時の設定はこう
UIから設定するとまぁ問題ないように思える。
再起動して renderSettingsのUIを呼び出さずに解像度を変えてみると
・・・・・あー 嫌な予感がー あたったようなー
これ renderSettingsWindowを立ち上げたときに何か裏で行われてますね。
なのでrenderSettingsWindowを立ち上げ済みか否かで結果が変わりますね。
これ mayaBatchだと結構まずいきもするな。
なので、
解像度変更したいときは解像度だけじゃなくて、lockDeviceAspectRatio pixelAspect deviceAspect も一緒に設定したほうがいい
という結果がでました。