Appearance
太陽インキ通紙アプリ向けシート表現用アセット調査
アセットじゃなくてもIKで表現できるのでは?
https://zenn.dev/mogesystem/scraps/5ca77b2fe1be2b
SkinnedMeshRendererという機能でもできそう。
sprine変形でもできそう。というかこれが最適?少し重くなる可能性はあるらしい。 https://nekojara.city/unity-splines-mesh-deform
実装したい機能
太陽インキで通紙ルートを表すための板を実際のシートのように自由に曲げて表示したい。 イメージ→
条件 1.端点Aと端点Bをcubeで表現し、その間にベジエ曲線を作成。ベジエ曲線に沿って板が曲がるようにする。 2.端点Aと端点Bは、片方をひねるともう片方も合わせて角度を変え、ベジエ曲線を描画する面も一緒に回る。 3.ベジエ曲線の全長は不変。全長が既定値より長くなることがないように端点ABの距離は制限される。

最終的にできたもの↓
モデルにボーン(背骨のようなもの)を配置して、それぞれのボーンにくっついて動く頂点(皮膚のようなもの)を割り当てることで、曲げることができるモデルを作ることができます。
そして、そのボーンのむきを変えることで板を曲げることができます。
なので、ボーンをベジエ曲線に沿って配置することで実装する方向性で作っています。 板のボーンの位置は端点の位置に依存しておらず、端点によって作られたベジエ曲線に依存しています。
AIを活用した開発について
cursorにやりたいことをいっぺんに伝えたら全然うまく行かなかった。↓こんな感じ。

ので、一度プロジェクトを作り直して、

- cube間にベジエ曲線を引く仕組み
のみをまず作らせ、その後、
2.引いたベジエ曲線に沿って板のbornを配置する仕組み
を作らせました。
chatgptに通訳的立ち位置をしてもらうのが本当に便利でした。
ベジエ曲線を引く段階から高度な数学の知識が必要になったため、
- 要件をどうやったらうまくcursorに伝えられるか、chatgptにcursorに伝えるためのプロンプトを出力してもらい
- それをcursorにplanモードで伝え、どのようにcursorが実装しようとしているかを説明してもらった文章をchatgptに投げ
- chatgptがcursorの説明文を読んだ上で、その方法の危険な点や、わたしの思った通りに実装しているかをチェックし
- 必要であれば追加の要件(曲げる方向はどっちに固定するのか、ボーンが追従するのは曲線の接線なのか、端点同士をつなげた軸なのかなど)をchatgptに投げて追加のプロンプトを出力してもらい
- またそれをcursorにplanモードで投げて方針を聞き→3に戻って以下ループ…
というように、わたし→chatgpt→cursorの伝言ゲーム的にAIを使うことで、一度目のcursorのみで一気に実装するよりもややこしくならず&詰まることなく思いどうりのものが実装できました。
参考:chatgptとの会話記録 https://chatgpt.com/share/e/6982fa03-e3c0-8005-98d1-afae3fefa7ea
特に今回はベジエ曲線の接線に沿ってbornを配置していくときにも数学の知識が必要になり、松崎にはcursorの説明だけではよくわからなくなってしまっていたため、cursorの言いたいことをchatgptに解説してもらったりすることで、具体的な計算式までchatgptに出してもらい、思っている方向に導くことができました。
Author: 松崎 | Source:
松崎\太陽インキ通紙アプリ向けシート表現用アセット調査 2f8aba435ee7801ba876d64912659891.md