Walt Disney Imagineering にて開発されたPython製3Dゲームエンジン Panda3D

Python製3Dゲームエンジン開発の歴史

簡単な歴史

Panda3D プロジェクトが 20 年以上前に始まったとき、それは特別なことを意図したものではありませんでした。これは、Walt Disney Imagineering で開発された内部フレームワークにすぎません。リアルタイム 3D の実験、展示、および後にダウンロード可能なゲームを処理するためのツールキットが必要だったからです。これらのワークロードは本質的にかなり多様であったため、Panda3D は当時存在していたものとは異なり、非常に用途の広い汎用 3D エンジンに急速に進化しました。自分たちが作成したものを認識したイマジニアたちは、自分たちの技術を学術コミュニティ、さらには一般大衆と共有しようとしました。

Walt Disney Imagineering は、2,000 マイル以上離れたカーネギー メロン大学の一部門であるエンターテイメント テクノロジー センターの優秀な人々と共に、アカデミック パートナーを見つけました。距離が離れていたため、インターネットだけで実現したコラボレーションでしたが、天からの出会いでした。3D エクスペリエンスを作成していた Imagineering は、Panda3D を強力で機能的で柔軟にすることに重点を置いていましたが、CMU はテクノロジーを教育目的で使用し、ドキュメント、コミュニティ、使いやすさに重点を置いています。Panda3D は強力なだけでなく、習得も容易になりました。そしてその間ずっと、誰でもソース コードを調べ、使用し、変更し、貢献することができました。この関係は非常にうまく機能したため、ディズニーは 2008 年に自社の技術の著作権を完全に CMU に委託しました。

オープンソース化

オープンソースの世界は、2000 年代半ばには大きく異なっていました。GitHub はまだ存在していませんでした。ソース管理は依然として大部分が集中化されていました。Panda3D はまだ CVS 上にあり、「分岐」モデルがまったくありませんでした。あなたがコア プロジェクトの開発者ではなく、コードに貢献したい場合は、パッチを送信する必要がありました。

2013 年に Panda3D が CVS から Git に移行し、リポジトリ ホストが SourceForge から GitHub に変更されたときに、状況が変わりました。Git は非常に異なるコラボレーション方法を奨励しています。誰でもソース コードをコピーできるだけでなく、コミット履歴全体をダウンロードできます。ある意味では、自分の作業を自分のリポジトリに直接プッシュできるという点で、誰もが「コア開発者」になることができ、他の人と同じように、自分のリポジトリをレビューのために提出してメイン リポジトリに含めることができます。

GitHub はこのモデルで成功し、ソフトウェア開発をまるでソーシャル メディアのように扱っています。Panda3D が GitHub に移行したときも、同じ「誰でも貢献できる」という姿勢を採用しました。

同じ頃、ディズニーと CMU はプロジェクトへの関与を減らし、Panda3D の最終的な管理はコミュニティに引き継がれました。これは、コミュニティからのフィードバックがこれまで以上に重要になっていることを意味しますが、残念なことに、Panda3D はその過程で元のフルタイムの開発者を失いました。その結果、開発ははるかに散発的になり、改善は突然のスパイクで行われ、より小さな日常の改善に割く注意が少なくなりました. 

今後は、これら 2 つの両極端の間で健全なバランスの取れた注意を払いたいと考えています。彼らが言うように、時は金なりです。つまり、時間の関与のレベルを達成するには、新しい資金源を確保する必要があります。

新しいスポンサー: 私たちのコミュニティ

Panda3D がその歴史の次の時代、つまりコミュニティ主導の開発の時代に突入したことで、資金調達のためにコミュニティに頼る必要があるのは当然のことです。

この目的のために、本日、Open Collective でのクラウドファンディング キャンペーンを正式に発表します。そして、珍しいことかもしれませんが、公式発表に先立って Open Collective を約束してくれた初期のサポーターの献身を過小評価していたため、すでに最初のマイルストーンを達成したことも発表しています. 2 つ目のマイルストーンをこれほど迅速に作成する必要があるとは予想していませんでした。本当にありがとうございました!

お金を寄付したくない人は、バグの修正、問題の報告、新しいユーザーへのガイダンスの提供、さらには意見の共有に費やす時間と労力を私たちが非常に高く評価していることを知っておいてください. 資金があろうとなかろうと、そのような献身がなければ、Panda3D は存在しなくなってしまうでしょう。金銭的な貢献に関心があり、資金をどのように使用するつもりなのかを知りたい方は、読み進めてください。

資金調達と将来

最初の目標は、ディズニーと CMU が深く関わっていた時代に享受していたのと同じレベルの一貫した安定した開発を再確立することです。そのために、クラウドファンディング キャンペーンの主な目標は、パートタイムのメンテナーに賃金を支払って、(自発的に与えられた努力に加えて) Panda3D の開発を着実かつ一貫性のあるものに維持するためにより多くの時間を割り当てることができるようにすることです。当分の間、私たち自身のrdbがこの役割を担うことに同意しましたが、より恒久的な後任となるために、私たちのコミュニティから資格のある候補者を選ぶことに非常に興味があります.

メンテナーの義務には、通常のタスク (タスクの優先順位付け、問題のトリアージ、ソース コードの整頓の維持) が含まれますが、それに加えて、プロジェクトの表看板としての責任を追加したいと考えています。プロジェクトのステータス、方向性の設定、および一般的にコミュニティを代表してコミュニティ外の人々にプロジェクトを代表します。これがあなたのお茶のように聞こえる場合は、お気軽にお問い合わせください!

Panda3D の将来に対する私たちの現在のビジョンは、一般的なゲーム開発スタックのすべてのレイヤーで同様のエクスペリエンスを提供するために、グラフィックスで既に提供されている既存の柔軟性と使いやすさを拡張することです。完全なアプリケーションを構築するために必要なすべての共通コンポーネント (ネットワーク、保存/読み込みのサポート、編集、プロファイリング、およびデバッグ用のツールなど) が利用できるように、「バッテリーは含まれているがインストールされていない」アプローチを採用したいと考えています。 、ただし、必須、想定、または規定されていません。この方向性は、プロジェクトがより多くの注目を集め、今日のワンストップ ショップ ゲーム オーサリング ツールの時代に関連性を維持するのに役立つと同時に、既存のコミュニティが既に持っているのと同じ柔軟性と「邪魔にならない」ワークフローを提供し続けるのに役立つと感じています。知り、愛するようになります。

Panda3D の新しいスポンサー – パンダ3D

ーーーーーーーーーーーーーーーーーーーーー

歴史

ディズニー VR スタジオは、ディズニー テーマ パークの 3D アトラクションを構築するために作成されたディズニーのブランチです。彼らは「アラジンの魔法のじゅうたん」というアトラクションを作り、そのために作ったエンジンが最終的に Panda3D になりました。現在の形のエンジンは、初期の頃とほとんど似ていません。やがて、Panda3D はディズニーのテーマ パークで追加の VR ライドに使用され、最終的には漫画の世界を舞台にしたオンライン ゲームであるトゥーンタウン オンラインの作成に使用され、その後、2 番目のMMORPGであるパイレーツ オブ カリビアン オンラインに使用されました。[2]

2002 年に、エンジンはオープン ソースとしてリリースされました。著者によると、これは「仮想現実の研究プロジェクトで大学とより簡単に協力できるようにするため」だったという。[3]ただし、Panda3D がオープンソース プロジェクトとして軌道に乗るまでには時間がかかりました。記事から:

このシステムは、それを開発したチームにとって非常に使いやすいものでしたが、「オープンソース対応」とは言えませんでした。興味を持ったユーザーは数人いましたが、システムの構築とインストールは非常に複雑で、ドキュメンテーションやサンプル コードがほとんどなかったため、重要なオープン ソース コミュニティはすぐには存在しませんでした。

しかし、エンジンのオープンソース化により、カーネギー メロン大学のエンターテイメント テクノロジー センターがエンジンの開発に参加することができました。ディズニーのエンジニアが引き続き大部分の開発を行いましたが、カーネギーメロンのチームは、一般向けにエンジンを磨き、ドキュメントを作成し、シェーダーなどの特定のハイエンド機能を追加する役割を果たしました。

Panda3D の名前は、かつては「プラットフォームに依存しないネットワーク ディスプレイ アーキテクチャ」という頭字語でした。[4]しかし、そのフレーズはその意味をほとんど失ってしまったため、「Panda3D」という言葉が頭字語として考えられることはほとんどなくなりました。

設計

Panda3D はシーン グラフエンジンです。[5]これは、仮想世界が最初はゲーム プログラマーが 3D モデルを挿入する空のデカルト空間であることを意味します。Panda3D は、ダンジョンや島全体のモデルなどの「大きな」3D モデルと、テーブルや剣のモデルなどの「小さな」3D モデルを区別しません。大きなモデルも小さなモデルも、 Blender3ds MaxMayaなどの標準的なモデリング プログラムを使用して作成されます。モデルは Panda3D に読み込まれ、デカルト空間に挿入されます。

Panda3D シーン グラフは、OpenGL と DirectX の機能をかなり文字通りの形式で公開します。たとえば、OpenGL と DirectX の両方にフォグ機能があります。Panda3D でフォグを有効にするには、フォグ パラメータをシーン グラフのノードに格納するだけです。フォグ パラメーターは、基礎となる API の同等の呼び出しのパラメーターと正確に一致します。このように、Panda3D は下位レベル API の薄いラッパーと見なすことができます。それらとの違いは、OpenGL と DirectX は保存しないのに対し、シーンを保存することです。もちろん、モデルのロード、アニメーションの実行、衝突の検出など、より高度なオペレーターも提供します。

Panda3D は、頂点シェーダーとピクセル シェーダーが存在する前に最初に設計されました。2005 年に手動で作成されたシェーダーのサポートを取得しました。しかし、ユーザーはゲームで最新のピクセルごとの照明技術を活用するのに時間がかかりました。開発者は、これはシェーダー プログラミングが非常に難しいためであり、多くのゲーム開発者はエンジンがそれを自動的に処理することを望んでいると理論付けています。

この状況を改善するために、Panda3D 開発者は最近、シェーダーを自動的に合成する機能を Panda3D に提供しました。この合成は、3D モデラーがピクセル単位の照明用にモデルをマークした場合、またはモデラーが法線マップ、光沢マップ、自己照明マップ、または固定機能パイプラインの機能を超えるその他の機能を適用した場合に発生します。[6] 合成の目的は、プログラマーの介入なしに、モデラーが意図したとおりにモデルをレンダリングすることです。

Panda3D – ウィキペディア、フリー百科事典

ーーーーーーーーーーーーーーーーーーーーー

SDK 1.10.13 リリース

PStats

パフォーマンス監視ツール PStats がいくつか改善されました。Python プロファイラーと統合し、Python コードによって呼び出されるすべての関数のパフォーマンス コストを測定する機能です。モジュールごとのレベルでコードのパフォーマンスを確認し、個々のクラスや関数まで掘り下げることができます。

カプセルとポリゴンの衝突テスト

ユーザーのリクエストにより、ポリゴン オブジェクトとの衝突をテストするときにカプセル シェイプを「from」オブジェクトとして使用できるようになりました。これで、CollisionPolygon の一連の交差テストが完了しました。これは、すべての有効な「元の」ソリッドに、CollisionPolygon に定義された交差テストがあることを意味します。

ーーーーーーーーーーーーーーーーーーーーーー

Walt Disney Imagineering の David Rose は、Panda3D の基礎と作業に基づいたクラスを定期的に開催しています。以下はその講義の一部です。現在、各レクチャーは 700MB の CD に収まるように作成されています。

* キャラクター パート I (683 mb)。2003 年 10 月 8 日記録。これには、卵、pandaNodes、およびアクターに関する情報が含まれます。

* キャラクター パート II (669 mb)。2003 年 10 月 22 日収録。Panda3D のキャラクター情報の要約です。

Panda3D マニュアル

Next Post

Godotがコンポーネントシステム(ECS)を採用しない理由

日 3月 5 , 2023
Godotがコンポーネントシステムを採用しない理由