見出し画像

【GPT4】【MAYA】AIでツール開発をしよう。アーティストのためのノーコードプログラミング

ここでは
・非エンジニアのプログラミング超初心者
・欲しい物があるけど作れないというアーティスト
に向けたツールの開発ノウハウです。
残念ながら完全にプログラミング知識なしでは現在のAIの性能では難しいです。
AIとのツール開発を繰り返し、プログラミングに付いての知見も深めながら進めると良いでしょう。

■とりあえずお願いしてみる

欲しい物を会話形式で教えるのはやめましょう。
カテゴリに分け、箇条書きにします。
・仕様

何のアプリで使うのかとそのバージョン、どういった言語や環境で使うのかを具体的に指定します。
特にバージョンは重要です。バージョンによって使うコマンドが変わったりします。
・概要
ツールの概要を簡潔に伝えます。
・要件
必要な手順や使うコマンドなどわかっていれば書きます。今回は初心者向けなのであえて書きませんでした。

中略

■生成されたコードを動かしてみる

全選択しCtrl+Enterで実行します。こうすると書いたコードが消えません。
実行するとエラーで使えませんでした。
# Error: TypeError: file <maya console> line 6: Invalid flag 'softSelectionType'

とありますね。6行目のcmds.softSelectにはsoftSelectEnabledフラグが使えないようです。
どれだけAIに確認しろお前はプロだとプロンプトを組もうと1回ではなかなか正しく生成してくれません。

■うまく行かないときの返し方

作ってくれないんかい!

長々と出力した結果「わからない」と言われました。
本当に実現できないのかこの段階では不明なので、もう少し圧力をかけてみます。
確認と修正するように伝えた上で、「できなければ教えて」という旨を付け加え、AIに判断の幅をもたせます。
こうしないと無理やりコードを生成して、使えないものを生成してしまいます。

やっぱりできないと言われました。

■自分で調べることも重要

勘になりますが、できないことはない気がしていました。標準でショートカットにタイプを変えるものは用意されているので、現在のモードの状態さえツールで取得できればできるのではないかと思います。

・公式のドキュメントで確認をする

一番頼りになるのは公式のドキュメントです。より複雑なツールを作りたい場合は必須になるので、読み慣れる必要があります。

・新規セッションを立ち上げAIに聞く

こちらも有効です。AIにはセッションによって出す答えが変わるので、改めて聞くと新しい知見が手に入ります。

今回はドキュメント確認で済ませます。
「Python コマンド リファレンス

え、、、これじゃないの・・・?

使えそうなフラグがありました。
”softSelectFalloff”の解釈がちょっと違ったようですね。元の英単語の意味と実機能の乖離が原因のように思います。
AIの正確性を問われるのはこういったところです。
現在のAIの性能ではこのような「勘違い」がたくさんあるので、人間側で調べたりしながら正解を導き出す必要があります。

”照会すると~”とあるので、ボリュームモードなら0、サーフェスモードなら1を返すのでそれで現在の状況を確認できそうです。
非エンジニア的に「返す」とか言われてもわかりずらいですよね。
つまり、今のソフト選択のモードは何?って聞くと「1」って答えたり「0」って答えたりしてくれるので、それで状況を判断できます。

■わかったことをAIと一緒に確認する

非エンジニアなので基本自分の見解に自信がありません。
なので、調べたことが正しいかAIで再度確認をします。

モードの取得が可能と言っています。さっきできないって行ってませんでした?
あと後半の言い分が怪しいですが、、、それは”softSelectCurve”フラグのことじゃないかな…

続けて下記のような取得するコードを生成してくれました。

import maya.cmds as cmds

# Soft Selectのファローオフモードを取得
currentFalloff = cmds.softSelect(query=True, softSelectFalloff=True)
print("Current Soft Select Falloff Mode:", currentFalloff)
無事取得できました。これで現在の状況によってモードを切り替える事ができそうです。

■実現可能な方法がわかったら開発を再開する

ここで選択肢は2通りあります。
・このまま対話を続けて開発する
・一旦新規でセッションを作り直す。

・このまま対話を続けて開発する。

過去の対話の履歴があるので意思疎通はしやすいです。
ただ、対話が複雑になったり、トライアンドエラーが多い場合は、失敗経験がノイズになりうまく生成してくれないことがあります。

・一旦新規でセッションを作り直す。

思い切って仕切り直す選択も重要です。
過去の対話のノイズがなくなり、指示が通りやすいです。
前回のセッションでわかったことなどをまとめて教える必要があります。

今回は対話が短いので前者で進めます。
仕切り直す場合も仕様、概要を伝え、
要件にわかったことを条件として書き加えます。

”cmds.softSelectのsoftSelectFalloff(ssf)を使用し、現在のモードを取得してください。”
だけでも作ってくれる気がしましたが、あえて細かく指定しました。
この方が正確に作ってくれます。ただ、こちらも正確に指定する必要があるので注意が必要です。

■非エンジニアがどのようにAIと対話をし、開発するか

今回は難しい内容でないので上記のやり取りで正解コードを生成してくれました。

・AIと二人三脚で作る

残念ながら今のAIの性能では全部AI任せと言う認識では開発は難しいです。良きパートナーとして二人三脚で作る意識を持ち
・作らせる
・問題を洗い出す
を繰り返しながら問題を解決していきます。

・うまく行かない時は原因を探る

何度か繰り返し、うまくできなかった場合、どこがうまく行かない原因か探るのが重要です。
・自分で調べる。
・AIに調べさせる。
・本当に実現可能かAIに再確認する。
・生成したコードを新規セッションを立ち上げAIに読ませて問題点を探らせる。
多数のアプローチで問題を解決します。

・AIとの対話は短い方がいい

あまり長くAIと対話していると過去の会話履歴がノイズになり、指示以外のことを混ぜてきたり、コードが冗長し始め、無駄に長くなったり、対話がループし始めます。
なんかうまく行かないなと思ったら、うまく行った部分だけを抽出し、得た知見を新しいセッションでAIに共有して再出発することも重要です。

■今回の成果物

最後に生成したコードはこちら。

import maya.cmds as cmds

def toggle_soft_select_type():
    # Soft Selectが有効かどうかを確認
    soft_select_enabled = cmds.softSelect(q=True, softSelectEnabled=True)
    
    if not soft_select_enabled:
        # Soft Selectがオフならオンにする
        cmds.softSelect(softSelectEnabled=True)
    
    # 現在のファローオフモードを取得
    current_falloff = cmds.softSelect(q=True, softSelectFalloff=True)
    
    # TypeSurface (0) と TypeVolume (1) をトグル
    # 注意: これらの値はMayaのバージョンによって異なる場合があるため、確認が必要
    if current_falloff == 0:  # 現在がTypeSurfaceなら
        cmds.softSelect(softSelectFalloff=1)  # TypeVolumeに切り替え
    else:  # それ以外の場合、TypeSurfaceに切り替え
        cmds.softSelect(softSelectFalloff=0)

# ツールを実行
toggle_soft_select_type()

使ってみます。

できたー

雑文になってしまったのでもう少し記事のブラッシュアップしたいと思いつつ、とりあえず公開します。

この記事が参加している募集

#AIとやってみた

27,676件

この記事が気に入ったらサポートをしてみませんか?