pythonを用いてGUIを作成したいと考えています。
これまでにGUI作成の経験がなくpytyhonには様々なGUIライブラリがあることは調べたのですが、どのライブラリが適しているのかご教授いただきたいです。
以下のイメージ図のようなGUIを作成したいと考えています。
(1)3次元モデルはドラッグすることで回転させ好きな部分を見られるようにしたい
(2)画像切り替えボタンで上に表示される画像を変更したい。
・・・・フォルダを事前に選択しその中から順に切り替え
もしくは
・・・・ボタンを押すことでファイル選択画面を表示
(3)モデルに対応した題名に表示
(4)題名ごとの説明文
このような構成のGUIを作成したい場合どのようなGUIライブラリが適しているのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
VTK は如何でしょう。
3次元モデルはドラッグすることで回転させ好きな部分を見られるようにしたい
の部分を担当するコンポーネントで、他のGUIライブラリに組み込んで使えます。GUI は qt か wx が候補
- tkinter 組込はサポートを外れましたが、ダウングレードすれば利用自体は可能です。
- kivy への組込は3rd party 製のライブラリが必要になりますが、あまり保守されてない様子。
(2)~(4) については、殆どのGUIライブラリで実現可能なので、
GUIライブラリ選択の判断材料とするのは適切ではありません。
ライセンスや、サポートするプラットフォーム等を確認された方が良いです。
Qt Quick 3D / Qt3D
- Qt3D では Mesh
- Qt Quick 3D では Model に読み込みます
※ 制限: 但し、直接ファイルを選択しての読み込みはサポートされてません。
Balsam Asset Import Tool という付属ツールでの事前変換が必要になります。
Qt で 3D系モジュールを選択する場合、Qt Quick 3D をまず検討してみてください。
Qt Quick3D の方が後発ですが、後継というわけではなく、双方それぞれに適した用途があります。
ライブラリを選択する上でもう一つの重要な点は、PLY/OBJ ファイルの読み込みを自分で行うか、
ライブラリ側に任せるか。ファイルを与えるだけでモデルが切替わるのが理想ですが、
どこまで自分で実装するか次第で、手間や必要とされる知識が変わってきます。
VTK や Qt3Dであれば PLY ファイルの読み込みまでサポートしてますが、
Kivy や Qt Quick 3D であれば、読込~適切なデータ変換が必要になるかもしれません。
※ ここは詳しく調べてないので、動くサンプルコードを見つけられなかった程度の調査です。
また、PythonからQtを利用する場合は、PyQt5, PySide2 という2系統のライブラリがある点も注意です。
投稿2020/10/03 04:32
総合スコア8760
0
問題になるのは「3Dモデルの表示」でしょう。
あまり通常のアプリケーションで3Dモデルの表示をする事はないので、情報も少ないと思います。
まず、tkinterは無しです。
tkinterは、あまり高度なグラフィック機能は持ち合わせていません。
PyQt5であれば、OpenGLが使えますので、かなり自由度があると思います。
ただ、OpenGLを使いこなすのはそれなりに時間がかかるでしょう。しかし、情報量はそれなりにあります。
一応Qt3Dなるものがあるようですが、ちょっと試そうと思いましたが簡単に動かせそうもないですね。
残るはkivyですね。
といっても、自分はkivyは使った事がないので、あまり助言はできませんが、ざっと検索してみました。
これらを見る限り、OpenGLを一から勉強するよりかは簡単そうです。
また、OpenGLも使えそうです。
ただ、情報量は少ないですね。
まとめると、一から始めるのであればkivyかなぁ、と思いますが、あとはご自身の判断におまかせします。
できれば上図にように1つの画面内で表示するシステムを構築したいと考えているのですが、3DCGソフトウェアとしてBlenderのようなpythonAPIの機能が備わっているものを想定しておりました。
Blenderは3Dモデリングソフトですから、モデルファイルの読み込みも3Dモデルの表示も機能として備わっていますから。
いうなれば、あなたがやろうとしている事は「Blenderを作る」と同じだと言えば、どれだけ大変かわかるのではないでしょうか。(まぁそれは言いすぎですけど)
もう一度いいますが、3Dモデルの表示が一番の問題になると思います。
ですので、GUI云々はおいといて、まずその事を重点的に考えた方がいいでしょう。
とりあえず、OpenGLで簡単な三角形を表示してみる、それができたらobjファイルをOpenGLで表示してみる、といったことを目標に勉強してみたはいかがですか。
前にも言ったとおり、KivyもPyQt5もOpenGLが使えますので、そこまでできればGUIに組み込むのも見えてくるのではないでしょうか。
まぁ本当は書こうか迷って結局書かなかったのですが、C#を一から覚えてでもUnityで作ったほうが早いかもしれません。
3Dモデルの表示はUnityの方が楽なのは、言わずもがな。
問題はランタイムでobjファイルやplyファイルを読む機能はUnityでも持ち合わせていないので、結局苦労するかな、と思いましたが、ちょっと調べてみると(有料ですが)以下のようなライブラリがあるそうです。
- Unity:3Dモデルfbx/3ds/glTFを動的(ランタイム)ロード、Trilibの使い方(人気アセット))
- Unity Asset Store - TriLib - Model loader package
他にも探せばあるかもしれません。
GUI(ユーザインターフェイス)に関してはKivyやPyQt5の方が作りやすいと思いますが、3Dモデルの事を考えると、ねぇ…。
投稿2020/10/01 11:34
編集2020/10/02 11:37総合スコア3538
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/01 13:49
2020/10/01 14:30
2020/10/01 23:39
2020/10/02 07:17
2020/10/02 11:36
2020/10/02 14:19
0
おそらくはどのライブラリを使用しても希望のGUIを作成する事は出来ると思いますが
参考に出来る記事や文献の量で言えばtkinterが非常に多くコード作成時にも役に立ちやすいかとおもいます。
投稿2020/10/01 05:23
総合スコア1438
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/04 03:22
2020/10/04 07:36
2020/10/06 09:06