見出し画像

ChatGPTを活用してClusterScriptを作成してみよう!

こんにちは!高千穂マサキです。最近、ChatGPTを使って簡単にClusterScriptを書く方法を試しています。今回は、どのように指示を出しているのか、その手順とポイントを解説します!ぜひ参考にしてくださいね。


ChatGPTへの指示方法

まずは、cluster公式の記事にある「Z軸方向に反復移動する」のスクリプトをコピーして、ChatGPTに指示を出します。たとえば、以下のように質問をします。

私:
こちらのClusterScriptを参考に、Z軸で30度~-30度の回転を繰り返すscriptはできますか?

以下は、公式スクリプト「Z軸方向に反復移動する」の例です。


const speed = 1.0;
const range = 2.0;
const direction = new Vector3(0.0, 0.0, 1.0).normalize();

$.onUpdate(deltaTime => {
  if (!$.state.initialized) {
    $.state.initialized = true;
    $.state.pivot = $.getPosition();
    $.state.time = 0.0;
  }

  $.state.time += deltaTime;

  $.setPosition($.state.pivot.clone().add(direction.clone().multiplyScalar(Math.sin($.state.time * speed) * range).applyQuaternion($.getRotation())));
});

このスクリプトを元にして、「30度から-30度の回転を繰り返すスクリプトを作成してください」と指示を出しました。


ChatGPTが生成したスクリプト例

ChatGPTは、以下のように改変されたスクリプトを提示してくれました。

Z軸振り子回転のスクリプト

const speed = 1.0; // 回転速度
const maxAngle = 30.0; // 最大回転角度(度)

$.onUpdate((deltaTime) => {
  if (!$.state.initialized) {
    $.state.initialized = true;
    $.state.time = 0.0;
    $.state.initialRotation = $.getRotation(); // 初期回転を保存
  }

  // 時間を加算
  $.state.time += deltaTime * speed;

  // サイン波に基づいて角度を計算(-maxAngle ~ maxAngle の範囲で変化)
  const angle = Math.sin($.state.time) * maxAngle;

  // 新しい回転を設定
  const newRotation = new Quaternion().setFromEulerAngles(new Vector3(0.0, 0.0, angle));
  $.setRotation($.state.initialRotation.clone().multiply(newRotation));
});

スクリプトのポイント解説

  1. 回転範囲の設定

    • maxAngle を 30.0 に設定することで、回転範囲を +30度から -30度に制限しています。

    • サイン波 Math.sin を利用して、スムーズな回転を実現しています。

  2. 時間の加算 (time)

    • $.state.time に deltaTime を加算することで、経過時間に応じた回転を実現します。

    • speed を変更すると、回転速度を調整できます。

  3. 回転の設定

    • 初期回転 (initialRotation) を基準に、Z軸の回転を加えています。

    • Quaternion を使用して新しい回転を計算し、適用しています。

  4. 初期化処理

    • 初回フレームで $.state.initialRotation を取得し、基準となる回転を保持しています。

    • これにより、スクリプトを適用するオブジェクトが既に回転していても正しく動作します。


パラメータ調整

  • 回転速度 (speed):

    • 値を増やすと回転が速くなり、減らすと遅くなります。

  • 最大回転角度 (maxAngle):

    • 値を増やすと回転範囲が広がり、減らすと狭くなります。


動作確認と結果

このスクリプトをScriptable Itemに組み込んだところ、期待どおりに動作しました!ChatGPTの助けを借りれば、スクリプト初心者でも簡単にカスタマイズできます。


まとめ

今回は、ChatGPTを活用してClusterScriptを改変する方法を紹介しました。このように、改変のベースとなるスクリプトを用意し、ChatGPTに適切な指示を与えることで、プログラミング初心者でもScriptable Itemを作成できます。

ぜひ皆さんも、ChatGPTと一緒にClusterScript作成に挑戦してみてください!



いいなと思ったら応援しよう!