【Maya】Pythonスクリプティング基本メモ
概要
MayaでのPythonの基本的なスクリプティングについて覚えたことのメモ
環境
- Pythonバージョン3.7.7
シーン
シーン内のオブジェクトを列挙
オブジェクトにtransformは必ずあるのでtype="transform"で絞るとシーン内のオブジェクトが取れるって感じですね。
import maya.cmds as cmds objs = cmds.ls(type="transform") for o in objs: print(o) # 出力例 front joint1 joint2 joint3 pSphere pSphere4 pSphere5 pSphere6 persp side top
選択中のオブジェクトを列挙
lsでselection=Trueを渡して選択中のオブジェクトが返ってきます。
import maya.cmds as cmds objs = cmds.ls(selection=True); for obj in objs: print(obj)
シーン名
開いているシーン名=ファイル名なのでfileコマンドで取得します。
import maya.cmds as cmds import os.path as path # シーンへのパス scenePath = cmds.file(query=True,sceneName=True) print(scenePath) # ファイル名 sceneName = path.basename(scenePath).replace(".mb","") print(sceneName) # 出力例 D:/MayaTraining/Test.mb Test
コンポーネント
利用可能なコンポーネントタイプ名の取得
import maya.cmds as cmds avairableTypes = cmds.ls(nt=True) for tp in avairableTypes: print(tp) # 出力例 AISEnvFacade AlembicNode BifMeshImportNode BossBlender BossEXRInfluence BossGeoProperties BossSpectralWave BossWaveSolver ComputeGlobal ComputeLocal ...長いので略
【Maya】地面モデリング例【ジオメトリのスカルプトツールとマテリアルのフラクタル】
概要
ジオメトリのスカルプトツールとマテリアルのフラクタルを使用すれば簡単に地面が作成できたので メモします。
環境
- Maya2022.3
作業
- Planeを作成(縦と横の分割数は50くらい)します。大きさは適当にスケールし、トランスフォームのフリーズをします。
- シェルフのカーブ/サーフェスのジオメトリのスカルプトツール
- ツールの設定を開く
- 引き出しアイコンを選択します。
- 最大ディスプレイメントは0.63くらいにします。
- アトリビュートマップを読み込みで、地面の高さマップ画像を選択します。
- このような画像を今回使用しました。
- 地面に凹凸ができます。
マテリアルの設定
- pPlaneを選択して右クリック新しいマテリアルを割り当てます。
- Colorでフラクタルを選択します。
- キーボード6キーを押してテクスチャが表示されるモードに。
- カラーゲインをいじって色を調整してみます。
完成
いい感じに地面ができました。
参考動画
参考にした動画はSimple Environment modeling and texturing in Mayaになります。
【Maya】シンプルなローポリツリーを作る
概要
Mayaでシンプルなローポリツリーを作成した際の作業の備忘録になります。
木
- シリンダーを作成
- 軸の分割数(subdivisionsAxis)を 7 に
- Shift + 選択でシリンダーを全選択
- Shift 押しながら横面を選択で上の面だけ選択に
- Shift押しながらフェース移動で押し出す(extrude)
- デフォーム>ソフト修正ツールで曲げる
- B押しながら左クリックで影響範囲
葉
- キューブ作成
- 上下面をShift押しながらフェース移動でとがらせる
- モデリングツールキット>スムースボタン
- 葉を選択
- メッシュの編集>トランスフォームオプション
- ランダム値を0.5ほどにして頂点のトランスフォームを実行
- 移動ハンドルを操作することで頂点が移動する
参考
動画 を参考にさせていただきました。
【Maya】選択中のオブジェクトをまとめて特定のオブジェクト以下の子にする【Python】
Python
import maya.cmds as cmds objs = cmds.ls(sl=True) for o in objs: print(o) cmds.parent(o, "新しい親オブジェクト名" )
備考
親にしたいオブジェクトを最後に選択して p
を押しても可能。
(むしろそっちのほうが楽かも..)
【Unity】URPでRendererを切り替える
概要
URPでアウトゲームとインゲームでRendererを切り替えたい場合、
UniversalAdditionalCameraData
のSetRenderer
で切り替えられる。
using UnityEngine; using UnityEngine.Rendering.Universal; [ExecuteAlways] public class URPSetRenderer : MonoBehaviour { public UniversalAdditionalCameraData additionalCameraData; [Header("0:for OutGame 1: for InGame")] public int rendererIndex; void Awake() { ApplyRendererIndex(); } void OnValidate() { ApplyRendererIndex(); } void ApplyRendererIndex() { additionalCameraData.SetRenderer(rendererIndex); } }
【Unity】EditorWindowにWarningを表示するサンプル
概要
コード
using UnityEditor; using UnityEngine; using UnityEngine.UIElements; public class ExampleWindow : EditorWindow { [MenuItem("Window/ExampleWindow")] static void Init() { GetWindow<ExampleWindow>(); } void OnEnable() { var button1 = new Button(() => ShowWarning()); rootVisualElement.Add(button1); } void ShowWarning() { var content = new GUIContent(string.Empty, EditorGUIUtility.FindTexture("console.warnicon")); content.text = "Message"; ShowNotification(content, fadeoutWait: 5); } }