こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

宇宙シュミレーター・MITAKAのような、空間内を自由に場所移動・視点移動できるプログラムを作りたい

いつもおせわになっています。

宇宙シュミレーター・MITAKAのような、空間内を自由に場所移動・視点移動できるプログラムを作りたい
http://www.gekkou.or.jp/g-3/ht3-08/event-p-mitaka.html

ので、自分なりにC/C++でGUI表示を調べてみました。
1.graphics.hを使う方法 ←標準Cのライブラリ?Borland社のライブラリ?
2.openGLを使う方法 ←無料ライセンスらしい。
3.Qtを使う方法 ←無料ライセンスらしい。
4.DirectXを使う方法

他にもあると思いますが、調べられませんでした。
開発環境は、Windows or Linux, gccを予定しています。
まず、Windowsでしか動かない4の選択肢が消えます(Linux環境でも動かしたいのです)。
次に、どうやらボタンとかリストとかしかできないようなので3が消えます。
残ったのは、1と2なのですが、2のライブラリで三次元空間内を自由に移動・視点移動させることはできるのでしょうか。
1で地道にオリジナルのライブラリを作成していくしかないのでしょうか。(といっても、C言語で「画面に線を引くこと」(BASICのLINE命令のようなもの)すらやり方がわからないのですが・・・)
イメージ的にはBASICのようなものをイメージしています。

書籍もいろいろ調べてみましたが、なかなかコレ!といったものに出会えず、どこから手をつけたらよいのか困っています。。

3D数学については覚悟が出来ているので、開発するための有効なライブラリや開発方法、オススメの書籍などお教えしていただけると幸いです。


また、カテゴリ違いなのですが、もしWebブラウザで同様の機能を持たせたアプリケーションをつくるとしたら、Javaのアプレットになるのでしょうか。Javaのアプレットで、ポリゴン?で出来た門の周りを視点移動するプログラムがありました。それともJavaScriptでLine関数のようなものを自作すれば、JavaScriptでも可能なのでしょうか?

以上、ご不明点ありましたら補足いたします。
よろしくご回答お願いいたします。

投稿日時 - 2008-11-12 07:56:02

QNo.4472068

困ってます

質問者が選んだベストアンサー

★アドバイス
>OpenGLで私の希望するようなプログラムは書けますでしょうか。
>私の能力的に・・・ではなく、技術的にできるのかどうか。。。
 ↑
 次のリンクを参考にして下さい。
 http://wisdom.sakura.ne.jp/system/opengl/index.html→『OpenGL入門』
 http://wisdom.sakura.ne.jp/system/opengl/gl1.html→『OpenGLとは?』
・その他いろいろ
 http://verygood.aid.design.kyushu-u.ac.jp/opengl/index.html→『高速OpenGL講座』
 http://www.komoto.org/opengl/→『OpenGL Programing』
 http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html→『GLUTによる「手抜き」OpenGL入門』
>開発環境は、Windows or Linux, gccを予定しています。
 ↑
 開発方法としては『マルチプラットホーム』で調べてみましょう。
 『Qt』とか、『Java』などで開発をすれば良いでしょう。
 『gcc』と『OpenGL』を組み合わせるならC/C++でも開発できそうですね。
>もしWebブラウザで同様の機能を持たせたアプリケーションをつくるとしたら、
>Javaのアプレットになるのでしょうか。
 ↑
 Javaアプレットも良いが Flash プログラミングもお勧めします。
>それともJavaScriptでLine関数のようなものを自作すれば、JavaScriptでも可能なのでしょうか?
 ↑
 可能であっても 3D までは難しいです。
 速度が遅すぎます。
 Webブラウザで動かすなら Flash または、Javaアプレットを使いましょう。
>アマゾンで書籍をみてみたところ、赤本、青本とあり、いずれもけっこう値段が高いのが難点ですね。。
 ↑
 高価でも1冊は手元に置いておくべきです。
 ネット情報よりも書籍の方がしっかりと解説されていますから。
 書籍を中心にネット情報(掲示板、Q&Aでの質問)などを参考にしていけば良い。

参考URL:http://wisdom.sakura.ne.jp/system/opengl/index.html

投稿日時 - 2008-11-12 15:01:26

お礼

ご回答ありがとうございます。

質問があったので数点。
もしよろしければご回答ください。
>『Qt』とか、『Java』などで開発をすれば良いでしょう。
OpenGLのwikipediaで調べてみたのですが、OpenGLは独立したフレームバッファに書き出すため、OSに依存しない、というような趣旨のことが書いてありました(XWindowアプリとして開発する必要もない)。

Qt(「キューティー」かと思っていたら「キュート」と読むんですね)は、C/C++で使えるGUIアプリライブラリ群、JavaもSwingなどを使えばマルチプラットフォームでGUIアプリが作成できるようですが、これらとOpenGLは連携できるのでしょうか?
つまり・・・JavaやQtでつくったウィンドウ内でOpenGLで描画する、など。

>Webブラウザで動かすなら Flash または、Javaアプレットを使いましょう。
こちらについては、いろいろ調べてみたところ、JavaScript自体に描画する関数や機能はなく、<div>タグで囲ったオブジェクトをDOMで操作して、ドット絵のようにして描画することは可能、とのことでした。
ブラウザ上に線を引いたりグラフを書いたり・・・というようなことは、RIAの代表であるFlexやFlash、adobe AIRでやるのがよいみたいですね。ここらへんは最近の技術なのであまり理解していませんが、面白そうです。

>>アマゾンで書籍をみてみたところ、赤本、青本とあり、いずれもけっこう値段が高いのが難点ですね。。
赤本だと定価で13000円以上するので、私にはそうとうの覚悟か必要です。OpenGLをどの程度やりこむかまだ決めていないので、OpenGLの入門書で勉強してみて、つっこんで勉強する気になったら購入したいと思います。

Webアプリなどについてのご解答もいただきまことにありがとうございます。感謝です。

投稿日時 - 2008-11-13 06:43:48

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

★アドバイス
>つまり・・・JavaやQtでつくったウィンドウ内でOpenGLで描画する、など。
 ↑
 『Qt』の方は『OpenGL』に対応しています。
 『Java』の方は私には分かりません。
 ご自身で調べてみて下さい。
・まずはグラフィック(3D)の基礎の本を1冊くらい用意した方が良いでしょうね。
 その後に『Qt』なり『C/C++』と『OpenGL』を組み合わせたプログラミングに
 入ると良いでしょう。
 (最初は Windows OS 限定とか、Unix系限定とかで作ってみた方良いと思う)

投稿日時 - 2008-11-13 15:35:59

お礼

ご回答ありがとうございます。

>『Qt』の方は『OpenGL』に対応しています。
貴重な情報をありがとうございます。Javaについては自分で調べてみたいと思います。

C/C++にするか、Javaにするかはまだ決めかねていますが、まだアイデアレベルですので、まずはおっしゃるとおりCなどでグラフィックの基礎を勉強してから選んで生きたいと思います。

※締め切りは土曜夜か日曜を予定しています。

投稿日時 - 2008-11-14 06:47:51

ANo.3

>Linux環境でも動かしたいのです。
すいません。この行見てませんでした。

OpenGL しか思いつきません。
(DirectX用ソフトをLinuxで動かす方法があったような)

投稿日時 - 2008-11-12 09:07:10

お礼

ご回答ありがとうございます。

No2さんと同じ、OpenGLですか。
個人利用は無料だったと思うので、調べてみたいと思います。
ただ、アマゾンで書籍をみてみたところ、赤本、青本とあり、いずれもけっこう値段が高いのが難点ですね。。

OpenGLについて、描画イメージなど、動作したときこのように見える、というようなものをまだ見つけていないので、調べてみたいと思います。

投稿日時 - 2008-11-12 09:15:14

ANo.2

マルチプラットフォームの3DプログラムならOpenGLしかないでしょう

投稿日時 - 2008-11-12 08:43:45

お礼

ご回答ありがとうございます。

OpenGLで私の希望するようなプログラムは書けますでしょうか。
私の能力的に・・・ではなく、技術的にできるのかどうか。。。

でも、はっきりとおっしゃっていただいて、もっとつっこんで調べてみたくなりました。

投稿日時 - 2008-11-12 09:12:29

ANo.1

選択肢はまず Windows & DirectX でしょう。
次に OpenGL でしょうか。

ある程度数学知識も必要です。
しかし、DirectX を簡単に扱うライブラリは無料のものが多くあります。
それらを見つければ比較的簡単に組めますよ。

単に3Dを扱いたければ HSP というスクリプト言語もあります。

投稿日時 - 2008-11-12 08:13:49

お礼

ご回答ありがとうございます。
簡単に、となるとやはりDirectXなのですね。

Linuxでも動かしたく、調べてみたのですが、X86アプリケーションとしての3D開発、というものしか見つけられず、それだと当初の目的とは違ってしまいます(今度はWindowsで動かない)ので、困っています。

HSPについてはまったくの無知なので調べてみます。

投稿日時 - 2008-11-12 09:10:16

あなたにオススメの質問