mcpField
A
apply-conventions

apply-conventions

github.com/playcanvas開発31312 回インストール1 週間前に更新
リポジトリ

apply-conventions について

PlayCanvas エンジン開発向けの規約スキルです。座標、API、カメラ、マテリアル、境界の指針をまとめ、実行中のアプリでの検証を重視します。

主な機能

  1. 01座標と向きの規約
  2. 02現行 PlayCanvas API の利用指針
  3. 03カメラ操作と視野角の注意点
  4. 04マテリアル編集と境界の指針
  5. 05実行時の検証方法

活用シーン

  1. 01実装前のエンジン規約確認
  2. 02現行 PlayCanvas API の選定
  3. 03モデルの向きや照明の問題調査
  4. 04実行中アプリでの配置確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/playcanvas/skills --skill apply-conventions

インストール後、Claude Code で/apply-conventionsを入力して読み込まれたか確認します。

詳細

エンジンの規約

バージョンによって異なる API は、インストール済みの playcanvas の宣言で確認してください。

座標

  • 右手系、+Y が上、単位はメートルです。entity.forward、カメラ、lookAt は -Z を使用します。
  • ディレクショナルライトとスポットライトは、ローカルの -Y 方向(デフォルトでは真下)を照らします。lookAt ではなく、setEulerAngles で向きを調整してください。
  • glTF モデルは通常 +Z を向いています。モデルごとのヨー角を calibrate-model で記録してください。
  • 角度 API は XYZ 順の度数を受け取ります。ピッチ、ヨー、ロールはアプリの状態として保持し、getEulerAngles() の結果を setEulerAngles() に渡し直さないでください。補間には math.lerpAngle または Quat.slerp を使用してください。
  • 意味的なルートにはワールド座標のセッターを使い、親の下では setLocal* を使ってください。剛体ルートやスキン付きボーンをスケーリングしないでください。

現在の API

  • model と animation ではなく、render と anim コンポーネントを使用します。
  • createScript ではなく、ESM の class X extends Script と static scriptName を使用します。
  • createBox などの create* ヘルパーではなく、Mesh.fromGeometry(device, new BoxGeometry()) を使用します。
  • playcanvas から名前付きインポートを使用し、同梱スクリプトは playcanvas/scripts/esm/** からのみ使用します。

カメラ

  • FOV はデフォルトで 45° の垂直視野角です。操作を作成する前に、同梱のカメラスクリプトを確認してください(reuse-scripts)。

マテリアルと境界

  • StandardMaterial.useMetalness のデフォルトは false です。metalness を使用する前に有効にしてください。
  • プロパティを変更した後は material.update() を呼び出してください。メッシュごとの値には、更新やクローンを行わずに meshInstance.setParameter() を使用します。
  • 一部のメッシュ用に共有マテリアルを編集する前に、インポート済みのものも含めてクローンしてください。
  • setParameter は生の値をアップロードします。sRGB カラーは Color#linear() で変換してください。
  • デフォルトでは裏面がカリングされ、反時計回りのワインディングが表面です。
  • エンティティに aabb はありません。子孫の meshInstance.aabb を結合してください。mesh.update() で境界が更新されない場合は、mesh.aabb を自分で設定し、頂点シェーダーによる変位分も拡張してください。

実行中のアプリで検証する

オフラインの値だけでは、向き、ポーズ、配置を証明できません。inspect-runtime を使って実行中のアプリから値を読み取り、実際に確認したスクリーンショットだけを根拠に見た目を判断してください。ファイルパスが保存されているだけでは証拠になりません。

コメント