1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MayaAdvent Calendar 2024

Day 17

Mayaの解像度変えたら変になって困った話

Last updated at Posted at 2024-12-16

あー解像度違ったわー 余白分必要だったわー
ちょっと変えるかー

となったんですよ。

元のシーンはこんな感じ
image.png

ちょっと大きくする必要があったので、こんな感じで解像度を変更してみました。

cmds.setAttr("defaultResolution.width", 1900)
cmds.setAttr("defaultResolution.height", 1200)    

あ、変わってますねー・・・・・・・
image.png

変わってますか?

HUDの表記上は変わっているのですが
元は 1600x900 なので 16:9
変更後は 1900x1200なので 19:12
縦横比が異なるはずなんですが、同じに見えますね。

renderSettingsを確認してみます。

image.png

解像度自体は意図したものになっていますがー
pixcel比がおかしなことになってますね。

試しにこれを1にしてみると

image.png

ちょっと縦が長くなりました。

OKじゃぁ解像度変えつつ、pixcel比を指定すればいいんじゃぁないか?

cmds.setAttr("defaultResolution.width", 1900)
cmds.setAttr("defaultResolution.height", 1200)    
cmds.setAttr("defaultResolution.pixelAspect",1)

image.png

16:9だなぁー

image.png

あれ? 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

お、ずれましたね。

考察

image.png

原因はこれかなぁ・・・?

pixelAspect の方にチェックを入れて、解像度を変えるとpixelAspectは固定になりますね。

maintai ratio = deviceAspectRatio

  • 解像度を設定する。
  • deviceAspectRatio を維持する為にpixelAspectが設定される。
  • その為pixelAspectを指定しても、上書きされる。

maintai ratio = pixelAspect

  • 解像度を設定する。
  • pixelAspectを維持する為にdeviceAspectRatioが設定される。
  • その為deviceAspectRatioを指定しても、上書きされる。

ではこのアトリビュートはー

image.png

こいつかなぁ?

image.png

cmds.setAttr("defaultResolution.lockDeviceAspectRatio",1)

あー・・・・(嫌な予感

image.png

えい

cmds.setAttr("defaultResolution.width", 1900)
cmds.setAttr("defaultResolution.height", 1200)   

image.png

お、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)      

image.png

image.png

意図したとおりの数字になりました。

↓ 2024/12/22追記 ↓

何か違和感がある

起動時の設定はこう

image.png

UIから設定するとまぁ問題ないように思える。

image.png

再起動して renderSettingsのUIを呼び出さずに解像度を変えてみると

before
image.png

after
image.png

・・・・・あー 嫌な予感がー あたったようなー
これ renderSettingsWindowを立ち上げたときに何か裏で行われてますね。
なのでrenderSettingsWindowを立ち上げ済みか否かで結果が変わりますね。

これ mayaBatchだと結構まずいきもするな。

なので、

解像度変更したいときは解像度だけじゃなくて、lockDeviceAspectRatio pixelAspect deviceAspect も一緒に設定したほうがいい

という結果がでました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?