Open4

PlayCanvasでの開発時にChatGPT / 生成系AIを組み合わせる

はがはが

マテリアル

PlayCanvasやThree.jsなどのワードを入れglTFで利用できるマテリアルの出力が可能です。

例: りんご

  1. りんごのマテリアルを作成してください。
  1. PlayCanavasのマテリアルのパラメーターに変換して出力してください。
パラメーター PlayCanvasマテリアル
Stem (ヘタ)
Base Color: 暗い茶色 Diffuse: 暗い茶色
Metallic Factor: 0 Metallic: 0
Roughness Factor: 0.6 Glossiness: 1-0.6 = 0.4
Base Color Texture: ヘタのテクスチャ DiffuseMap: ヘタのテクスチャ
Normal Map: ヘタのノーマルマップ NormalMap: ヘタのノーマルマップ
StemBase (りんごとヘタの付け根)
Base Color: りんごの本体に近い色 Diffuse: りんごの本体に近い色
Metallic Factor: 0 Metallic: 0
Roughness Factor: 0.4 Glossiness: 1-0.4 = 0.6
Base Color Texture: 付け根部分のテクスチャ DiffuseMap: 付け根部分のテクスチャ
Normal Map: 付け根部分のノーマルマップ NormalMap: 付け根部分のノーマルマップ
AppleBody (りんごの本体)
Base Color: 赤または緑などのリンゴの色 Diffuse: 赤または緑などのリンゴの色
Metallic Factor: 0 Metallic: 0
Roughness Factor: 0.3 Glossiness: 1-0.3 = 0.7
Base Color Texture: りんごの表面のテクスチャ DiffuseMap: りんごの表面のテクスチャ
  1. PlayCanvasエディターで設定を適用
はがはが

コーディング

コーディングについてもある程度作り方に加えて、具体的なコードの出力までできるようです。
出力されるコードは、現在レガシーとなっているModelコンポーネントで出力がされますが、Renderコンポーネントに書き換えるなど一部変更する必要がありそうです。

はがはが

Q&Aの出力

ある程度の概要を掴むためのQ&Aの出力などで利用ができそうです。下記は、ChatGPTでの出力を行ったものですが、内容は8割くらいは正しい物が表示されているかと思います。

  1. Q: PlayCanvas は無料で使えますか?
    A: はい、PlayCanvas には無料プランがありますが、一部機能に制限があります。有料プランで追加機能やストレージを利用できます。
  2. Q: PlayCanvas でどのようなゲームやアプリケーションを開発できますか?
    A: PlayCanvas は、ブラウザベースの 3D ゲームやインタラクティブコンテンツ、VR/AR アプリケーションなど幅広い分野の開発に対応しています。
  3. Q: PlayCanvas はどのブラウザで動作しますか?
    A: PlayCanvas は、最新の WebGL 対応ブラウザ(Google Chrome、Mozilla Firefox、Microsoft Edge、Apple Safari など)で動作します。
  4. Q: 自作の 3D モデルを PlayCanvas にインポートする方法は?
    A: FBX や OBJ 形式の 3D モデルを、アセットパネルにドラッグ&ドロップしてインポートできます。
  5. Q: PlayCanvas で作成したプロジェクトをデプロイする方法は?
    A: プロジェクトのビルド設定で、ビルドを作成し、生成された ZIP ファイルを Web サーバにアップロードすることでデプロイできます。
  6. Q: PlayCanvas でアニメーションを作成する方法は?
    A: PlayCanvas は、外部 3D モデリングソフトウェアで作成したスキンメッシュアニメーションや、エンジン内で作成できるキーフレームアニメーションに対応しています。
  7. Q: PlayCanvas で音声を再生する方法は?
    A: Sound コンポーネントとオーディオリスナーコンポーネントを使用して、プロジェクト内で音声を再生できます。
  8. Q: PlayCanvas でテキストを表示する方法は?
    A: Element コンポーネントの Text タイプを使用して、画面にテキストを表示できます。
  9. Q: モバイルデバイスでのパフォーマンスを向上させる方法は?
    A: 効率的なシェーダーの記述、パーティクルシステムの最適化、モバイル向け UI/UX の設計などが挙げられます。
  10. Q: レンダリングパフォーマンスを向上させる方法は?
    A: シャドウマップの最適化、バッチングによるドローコールの削減
  11. Q: PlayCanvas で VR/AR アプリケーションを開発できますか?
    A: はい、PlayCanvas は WebXR API をサポートしており、VR/AR アプリケーションの開発が可能です。
  12. Q: PlayCanvas でマルチプレイヤーゲームを開発する方法は?
    A: WebSockets や WebRTC を用いて、マルチプレイヤーゲームを開発できます。サーバー側の実装も必要になります。
  13. Q: プロジェクトで複数のシーンを作成する方法は?
    A: プロジェクト内で複数のシーンを作成し、プログラムでシーンの切り替えを行うことができます。
  14. Q: PlayCanvas での衝突判定の方法は?
    A: RigidBody コンポーネントと Collision コンポーネントを使用して、衝突判定や物理シミュレーションを行うことができます。
  15. Q: PlayCanvas でのカメラ制御の方法は?
    A: カメラエンティティにスクリプトコンポーネントを追加し、カスタムスクリプトでカメラの動作を制御できます。
  16. Q: PlayCanvas でリアルタイムシャドウを実装する方法は?
    A: ライトエンティティに Shadow コンポーネントを追加し、シャドウマップの設定を調整することでリアルタイムシャドウを実装できます。
  17. Q: テクスチャの解像度や圧縮設定を変更する方法は?
    A: アセットパネルでテクスチャを選択し、インスペクターパネルで解像度や圧縮設定を変更できます。
  18. Q: エディタ内でプレビューが遅い場合の対処方法は?
    A: プレビューウィンドウの設定で、解像度を下げることでパフォーマンスを向上させることができます。
  19. Q: PlayCanvas で使用できるプログラミング言語は何ですか?
    A: PlayCanvas では主に JavaScript を使用しますが、TypeScript もサポートされています。
  20. Q: PlayCanvas エディタでの協同作業は可能ですか?
    A: はい、PlayCanvas エディタではリアルタイムの協同作業が可能です。
  21. Q: オフライン環境で PlayCanvas を使う
    A: PlayCanvas エディタ自体はオンライン専用ですが、ダウンロードしたプロジェクトはローカルで動作させることができます。
  22. Q: PlayCanvas プロジェクトのバージョン管理はどのように行えますか?
    A: エディタ内にチェックポイント機能があり、特定の時点でのスナップショットを保存できます。また、プロジェクトのフォークも可能です。
  23. Q: プロジェクトで使用する外部ライブラリの導入方法は?
    A: アセットパネルに外部ライブラリの JavaScript ファイルをドラッグ&ドロップして追加し、設定を調整して利用できます。
  24. Q: ライティングを最適化する方法は?
    A: ライトの影響範囲を制限したり、Baked Lightmaps を使用して静的オブジェクトのライティングを最適化できます。
  25. Q: メモリ使用量を削減する方法は?
    A: テクスチャやメッシュの解像度を適切に設定し、アセットのインポート時に不要なデータを削除することでメモリ使用量を削減できます。
  26. Q: PlayCanvas でのデバッグ方法は?
    A: ブラウザの開発者ツールを使用して、コンソールにエラーや警告を表示させ、問題箇所を特定できます。
  27. Q: プロジェクトで使用するフォントを変更する方法は?
    A: アセットパネルにフォントファイルをアップロードし、Text エレメントでフォントアセットを設定することで、フォントを変更できます。
  28. Q: PlayCanvas でビデオテクスチャを使用する方法は?
    A: Video テクスチャを使用して、動画ファイルをテクスチャとしてマテリアルに適用できます。
  29. Q: プロジェクトで使用する画像フォーマットは何が適していますか?
    A: 一般的には PNG や JPEG が使用されますが、特定の用途やデバイスに応じて、WebP や KTX などの画像フォーマットも利用できます。
  30. Q: プロジェクトのアセットを外部サーバから読み込む方法は?
    A: アセットの URL を外部サーバの URL に設定し、CORS 設定を適切に行うことで、外部サーバからアセットを読み込むことができます。
  31. Q: PlayCanvas でのシェーダーの書き方は?
    A: GLSL を使用してシェーダーを書くことができます。シェーダーはカスタムマテリアルやエフェクトの作成に利用できます。
  32. Q: プロジェクトで 2D 要素を作成する方法は?
    A: Screen コンポーネントを使用して 2D 要素を作成し、その子に Element コンポーネントを持つエンティティを追加することで 2D 要素を作成できます。
  33. Q: ゲーム内での画面遷移を行う方法は?
    A: スクリプトを使用して、シーンのロードや Screen コンポーネントを持つエンティティの切り替えを行うことで、画面遷移を実現できます。
  34. Q: ゲーム内での保存データの管理方法は?
    A: localStorage や IndexedDB を使用して、ゲーム内の保存データを管理できます。
  35. Q: PlayCanvas でプロジェクトをプライベートにする方法は?
    A: 有料プランにアップグレードすることで、プロジェクトをプライベートに設定できます。
  36. Q: タッチ操作に対応したインタラクションを実装する方法は?
    A: スクリプトでタッチイベントを検出し、対応する処理を行うことでタッチ操作に対応したインタラクションを実装できます。
  37. Q: プロジェクトのクレジット表示やライセンス表記を行う方法は?
    A: テキスト要素を使用して画面上に表示させるか、外部 URL をリンクしてクレジット表示やライセンス表記を行うことができます。
  38. Q: PlayCanvas でのテストプレイヤーを作成する方法は?
    A: プロジェクトの公開設定で、テストプレイヤーを作成し、指定したメールアドレスに招待リンクを送信することができます。
  39. Q: PlayCanvas で生成される HTML や CSS をカスタマイズする方法は?
    A: プロジェクトの設定で HTML や CSS を編集し、ビルド時に反映させることができます。
  40. Q: モデルの LOD(Level of Detail)設定を行う方法は?
    A: スクリプトを使用して、カメラとモデルの距離に応じて表示するモデルを切り替えることで LOD 設続きを教えて下さい
  41. Q: PlayCanvas でのユーザー認証を実装する方法は?
    A: Firebase や Auth0 などの外部サービスを利用して、ユーザー認証を実装できます。
  42. Q: PlayCanvas でのリーダーボードの実装方法は?
    A: Firebase や PlayFab などの外部サービスを利用して、リーダーボードを実装できます。
  43. Q: パーティクルシステムのカスタマイズ方法は?
    A: パーティクルシステムコンポーネントの設定を変更し、さらにスクリプトで制御することで、カスタマイズが可能です。
  44. Q: ゲーム内での IAP(インアプリ課金)を実装する方法は?
    A: PlayCanvas で作成した Web アプリをネイティブアプリにラップし、各プラットフォームの IAP 機能を利用して実装が可能です。
  45. Q: PlayCanvas での広告表示を実装する方法は?
    A: AdSense や AdMob などの広告プラットフォームを利用して、広告表示を実装できます。
  46. Q: PlayCanvas でのスプライトシートアニメーションを実装する方法は?
    A: スプライトシートを用いたアニメーションは、スクリプトで制御し、テクスチャオフセットを変更することで実装できます。
  47. Q: ゲームパッドでの操作を実装する方法は?
    A: ゲームパッド API を使用して、ゲームパッドでの操作を実装できます。
  48. Q: PlayCanvas での言語切り替え機能の実装方法は?
    A: テキストリソースの管理と言語設定に基づいて、テキスト要素を動的に変更することで言語切り替え機能を実装できます。
  49. Q: PlayCanvas で作成したゲームをアプリストアに公開する方法は?
    A: PlayCanvas で作成した Web アプリをネイティブアプリにラップし(Cordova や Capacitor などを使用)、各アプリストアに公開することができます。
  50. Q: PlayCanvas での UI アニメーションを実装する方法は?
    A: スクリプトで UI エンティティのプロパティを変更することで、UI アニメーションを実装できます。
  51. Q: PlayCanvas での AR(拡張現実)機能の実装方法は?
    A: AR.js や 8th Wall などの外部ライブラリを利用して、AR 機能を実装できます。
  52. Q: PlayCanvas での VR(仮想現実)機能の実装方法は?
    A: WebXR API を使用して、VR 機能を実装できます。
  53. Q: PlayCanvas でのマルチプレイヤー機能の実装方法は?
    A: WebRTC や WebSocket を使用し、外部サーバー(例: Node.js)と連携することでマルチプレイヤー機能を実装できます。
  54. Q: PlayCanvas でのイベントシステムの利用方法は?
    A: PlayCanvas には内蔵されたイベントシステムがあり、スクリプト間でイベントを発行・購読することでコミュニケーションが可能です。
  55. Q: ゲーム内で音楽や効果音を再生する方法は?
    A: サウンドコンポーネントを使用して、音楽や効果音を再生できます。
  56. Q: PlayCanvas で作成したプロジェクトを他の開発者と共同で編集する方法は?
    A: プロジェクトの共同編集者として他の開発者を招待し、リアルタイムで協力して編集することができます。
  57. Q: ゲーム内でのチャット機能の実装方法は?
    A: WebSocket や外部サービス(例: Firebase)を使用して、チャット機能を実装できます。
  58. Q: PlayCanvas プロジェクトでのアニメーションブレンドの実装方法は?
    A: アニメーションコンポーネントを使用して、複数のアニメーションをブレンドすることができます。
  59. Q: ゲーム内でのカメラ操作(ズーム、回転)を実装する方法は?
    A: スクリプトでカメラエンティティのプロパティを変更し、カメラ操作を実装できます。
  60. Q: モバイルデバイス向けにパフォーマンスを最適化する方法は?
    A: モデルやテクスチャの解像度を調整し、不要なエフェクトを削除することで、モバイルデバイス向けにパフォーマンスを最適化できます。
  61. Q: PlayCanvas でのスクリーンシェイクの実装方法は?
    A: スクリプトでカメラエンティティの位置をランダムに動かすことで、スクリーンシェイクを実装できます。
  62. Q: PlayCanvas での物理演算の実装方法は?
    A: ammo.js などの外部物理エンジンを使用して、物理演算を実装できます。
  63. Q: モデルにカスタムシェーダーを適用する方法は?
    A: カスタムマテリアルを作成し、GLSL で記述されたシェーダーを適用することでモデルにカスタムシェーダーを適用できます。
  64. Q: ラグドールアニメーションの実装方法は?
    A: 物理エンジンとスケルタルアニメーションを組み合わせることで、ラグドールアニメーションを実装できます。
  65. Q: PlayCanvas でのダメージインジケーターの実装方法は?
    A: UI エレメントや 3D テキストを使用してダメージインジケーターを表示し、スクリプトで制御することで実装が可能です。
  66. Q: PlayCanvas でのビデオ再生を実装する方法は?
    A: Video テクスチャを使用して、ビデオ再生を実装できます。
  67. Q: PlayCanvas でのシャドウの設定方法は?
    A: ライトコンポーネントのシャドウ設定を調整することで、シャドウの品質や範囲を設定できます。
  68. Q: PlayCanvas でのテキスト入力欄の実装方法は?
    A: DOM 要素を使用してテキスト入力欄を実装し、スクリプトで入力内容を取得・制御することができます。
  69. Q: カスタムフォントを使用する方法は?
    A: .TTF 形式のフォントをアップロードし、テキストエレメントで使用することができます。
  70. Q: PlayCanvas でのレベルデザインのベストプラクティスは?
    A: シーンの規模を適切に保ち、バッチングや LOD などのパフォーマンス向上手法を活用することがレベルデザインのベストプラクティスです。
  71. Q: PlayCanvas でのリアルタイムリフレクションの実装方法は?
    A: プローブを使用してリアルタイムリフレクションを実装することができます。
  72. Q: PlayCanvas でのタッチ操作の実装方法は?
    A: タッチイベントを使用し、スクリプトで制御することでタッチ操作を実装できます。
  73. Q: PlayCanvas でのプログレッシブウェブアプリ(PWA)の実装方法は?
    A: マニフェストファイルとサービスワーカーを設定することで、プログレッシブウェブアプリを実装できます。
  74. Q: レイトレーシングの実装方法は?
    A: WebGL 2.0 や WebGPU を利用したレイトレーシング技術を使用し、カスタムシェーダーで実装できます。
  75. Q: ゲーム内でのマップの表示方法は?
    A: UI エレメントや 3D オブジェクトを使用してマップを表示し、スクリプトで制御することができます。
  76. Q: プロジェクトでのグローバル変数の管理方法は?
    A: スクリプト内でグローバル変数を定義し、必要な場所で参照・更新することができます。
  77. Q: PlayCanvas での AI(人工知能)の実装方法は?
    A: スクリプトで行動や状態を制御し、適切なライブラリ(例: TensorFlow.js)を使用することで、AI を実装できます。
  78. Q: モーフターゲットの実装方法は?
    A: モーフターゲットコンポーネントを使用して、モデルの形状を制御することができます。
  79. Q: PlayCanvas での自動保存機能の有効・無効の切り替え方法は?
    A: エディターの設定画面から自動保存機能を有効・無効に切り替えることができます。
  80. Q: PlayCanvas でのウェブカメラの使用方法は?
    A: WebRTC API を使用して、ウェブカメラ映像を取得・表示することができます。
  81. Q: PlayCanvas でのボイスチャット機能の実装方法は?
    A: WebRTC API を使用し、外部サーバー(例: Node.js)と連携することでボイスチャット機能を実装できます。
  82. Q: ゲーム内でのキャラクターカスタマイゼーションの実装方法は?
    A: スクリプトでモデルやテクスチャを変更し、キャラクターカスタマイゼーションを実装できます。
はがはが

テクスチャ生成

テクスチャ生成などはいくつかありますが、Polycamの「Generate 3D Textures for Free | Polycam」などを利用することでテキストからテクスチャの生成が可能
https://poly.cam/material-generator

生成された画像とPlayCanvasでのインポート結果

PlayCanvasでは下記のテクスチャを利用できます。

  • diffuse
  • roughness
  • normal