2012-05-07 38 views
4

(視覚的に魅力的な)3D物理シミュレーション/ビジュアライゼーションのためのPythonプログラムを作成するための良いライブラリは何ですか?(視覚的に魅力的な)3D物理シミュレーション/視覚化のためのPythonプログラムを作成するための良いライブラリは何ですか?

私はVpythonを見てきましたが、私が見たシミュレーションは見た目が醜いので、視覚的に魅力的にして欲しいと思っています。それはまた、古いライブラリのように見えます。 3Dプログラミングの場合、Panda3Dpython-ogreの使用を提案しましたが、正確なシミュレーションには適しているかどうかはわかりません。また、私は他のライブラリ(例えば、pygameは他のライブラリとあまりよく合いません)とうまく組み合わせたライブラリを好むでしょう。

+0

(視覚的に魅力的な)3D物理シミュレーション/ビジュアライゼーションのためのPythonプログラムを作成するための良いライブラリは何ですか? (例えば、3Dデカルト格子上の発射体をシミュレートする、または動いている荷電粒子の電場を視覚化するため) – Bentley4

+0

http://pyopengl.sourceforge.net/ –

答えて

4

Pythonの3Dサポートは、他の言語に比べてかなり弱いですが、ほとんどがビルドされているので、プログラムの外観はあなたが考えるよりもはるかに変更可能です。たとえば、あなたはVpythonについて話しましたが、多くの例が視覚的に魅力的ではなく、ほとんどが以前のリリースのものでしたが、最近のリリースでは押し出し、マテリアル、スキンの両方が含まれています。前。

レンダリング品質の画像をリアルタイムで作成することは簡単ではないことに注意してください(サイクルはその方向で大きな進歩ですが、まだそれほどありません)。私はここであなたの問題のほとんどは、技術は今のところできていないものを探していると思っていますが、あなたのシミュレーションを視覚的に魅力的に見せるための負担を抱えていれば、Vpython PyOpenGL)がおそらくあなたの最善の策です。

Blender:非常に複雑なものの、グラフィックデザインと特殊効果のために作られた最も強力なPythonグラフィックスプログラムですが、これは非常に複雑ですその下で実行されている物理、Blenderは物理シミュレーション用に作られていません。自己完結型。

Panda3D:プログラムはBlenderと非常によく似ていますが、ほとんどの場合ゲームに便利です。ゲームエンジンはBlenderよりも使い勝手が良いですが、レンダリングの質ははるかに低く、機能が豊富です。自己完結型

鬼:ゲーム環境を作成するために、多くの強力な機能を備えた、ゲーム開発にとって非常に人気のあるライブラリです。イベント処理も非常にうまく実装されています。他のライブラリと統合することはできますが、難しくあります。

VPython:テクスチャマッピングとレンダリングのパワーを他のメソッドに比べて多くする物理シミュレーション用のライブラリですが、VPythonは主にOpenGLから構築されているため、この機能はまだあります周辺の多彩なグラフィックスライブラリ。そのため、VPythonは他のライブラリとの統合も非常に簡単です。

PyOpenGL:OpenGL for Python。 OpenGLは最も広く使用されているグラフィックスライブラリの1つであり、このリスト(Blenderは独自のクラスではありません)を除いて最も素晴らしいビジュアルを生成することは間違いありませんが、そうするのは簡単ではありません。 PyOpenGLは非常に裸の骨であり、機能はそこにありますが、他のものよりも実装するのが難しくなります。あなたが何をしているのか分かっている場合に限り、他の図書館との間で非常に意志を演出します。

+0

Thnx!あなたが書いたことを読んで私が今始めたいのであれば、VPythonから始めて、できる限りプログラムを開発し、必要に応じてPyOpenGlでプログラムを修正するのが最善の方法です。 Pythonがランタイム物理シミュレーションをスムーズに(概算)作成するには、いつ平均的なコンピュータが速くなると思いますか? – Bentley4

+1

あなたのコンピュータは現在、完全に滑らかなランタイム物理シミュレーションを実行することができますが、滑らかな定義をわずかに変更する必要があります。単純なwhileループでシミュレーションを実行すると、Pythonはできるだけ早く更新を試みますが、いくつかの問題が発生しますが、単純に のようにwhileループのレートを制限できます。True: rate (100) ここで、括弧内の数字は毎秒のリフレッシュ数ですが、私は20回のリフレッシュがレートが品質上損失なしで行えるほど低く、プロセッサーは軽いことがわかりました。 –

+0

どのようにそのレート関数を実装しますか? time.sleep(n)を使用していますか? 素晴らしいヒントありがとう! – Bentley4

2

Try PyOpenGLこれは、Pythonのctypesライブラリを使用してOpenGLにPythonバインディングを提供するライブラリです。このの相続人デモ

:あなたの質問から

PyOpenGL baseball demo

+0

デモを行ったか? –

+0

いいえ、クイック検索で見つかりました。画像srcを見てください。 – C0deH4cker

+1

このスクリーンショットは奨励的ではありません:) – Bentley4

0

は、あなたが達成したいのか明確ではありません。実行時にシミュレーションを制御するためのスタンドアロンアプリケーションを作成するか、オフラインで表示できるPythonを使用してシミュレーションを作成しますか?

後者の場合、アプリケーションの内部のほとんど(すべてではないが)にアクセスできるようにするPythonスクリプトインターフェースを含むオープンソースの3Dコンテンツ作成スイートであるBlenderを見ることができます。 Blenderにはいくつかのphysics and particle librariesが付属しており、アプリケーションが映画などの視覚効果を作り出すために使用されるソフトウェアのタイプを示しています。

実行時にシミュレーションを制御するスタンドアロンアプリケーションを作成する場合は、おそらく適切な選択肢ではないでしょう。しかし、一連の表示可能な画像を作成したい場合は、一見価値があるかもしれません。私はPythonのための可視化パッケージを必要に応じて

+0

実行時にシミュレーションを制御するために使用できるスタンドアロンアプリケーションを作りたいと思います。それがうまくいくようにするために必要なものなら、グラフィックは最小限に抑えることができます。例えば。参照フレームと数学的ポイントを再現するために、線、矢印、および点を使用するだけです。可能であれば、剛体のシンプルでクリーンなモデルも可能です。 – Bentley4

2

、私はProcessing.pyで始まります: https://github.com/jdf/processing.py

は、これは、JavaベースのProcessing.orgコードのPythonバインディングです。迅速な比較はここで見つけることができます:もちろん http://wiki.processing.org/w/Python_Comparison

、あなたのpythonに拘束されていない場合は、その後も、良い出発点になり、それ自体の処理: そこにもPythonバインディングがありますhttp://processing.org

Visualization Toolkit(VTK)ですが、そのほとんどの例はC++またはTkです。 http://code.google.com/p/osgswig/

幸運:あなたが探しているすべての周りのジオメトリを移動するシーングラフの場合

は、VISネイティブではないが、その後、私はそこに開かれているシーングラフの結合いくつかのpython、例えばを見てきました!

関連する問題