• ベストアンサー

コンピュータグラフィックス(ゲームで)はどういうプログラム?

プレステのソフトは、C++で作られているとか。 ゲームでは、CGがふんだんに使われているものもあり、そういうのはどうやって表現されているのでしょうか? すでに録画されている動画の表示やテレビのアニメなんかは、分かるのですが。 詳しい方は、具体的に説明して頂けると嬉しいです。 特に、クラスがどこで分かれているのとか、何と何が必要なのかとか。 (可能性は無限大だと思いますが。 一応、Perl、PHPはそこそこ、JAVAは初歩の初歩の知識は。  あんま、意味がないかな。ほぼ素人と思って頂いてけっこうです。

noname#15164
noname#15164

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

  • ベストアンサー
回答No.6

No.2のAEです。 あくまで判る範囲というか想像の範囲ですけども。 >キャラクターの細かい動きや、当たり判定もif文やループが使われているんですよね?大基本として。 3Dのグラフィックス一般で言えば、空間に点(x,y,z)があるとして、それを平行移動したり回転したりといった、最も基本的な処理は、sin()、cos()など数学ライブラリを使った行列計算の処理になります。一般的には「アフィン変換」と言いますが、3Dで物体を動かす場合はこれが基本になります。 ただ、これはDirectXやOpenGL等いわゆるグラフィクスライブラリ内部に持っていますので、角度を与えるだけでモデルの移動や回転は行われます。 ※DirectX対応とかOpenGL対応と言われているグラフィクスカード(=ビデオカード)では、この処理をハードウェアで行うため非常に高速な3Dの表示が可能になっています。 ゲームのキャラクタも基本的には、この処理をベースにしているはずです。 例えば、キャラクタの骨格(関節)の位置を座標値として保持しておいて、その座標値に「アフィン変換」を行えば3D空間上でキャラクタが動いていくことになります。 本当はもっともっと複雑で、キャラクタの関節同士は繋がっていて親子関係を持っているとか、水中と空中では重力の作用が変わるとか、そういったキャラクタの置かれている環境によって動く量や早さを加減しているんでしょう。 ※どして、そんなに早く動くの?といつも不思議。そういう早く、しかも「それらしく」動かすというところがノウハウ。 長くなってしまいましたが、こういった3Dのモデルを動かすにはやはり定石があって、それらの表現方法は各社のノウハウであって、やはり現場レベルにならないと判らないと思いますね。 ただ言えることは、質問者さんがおっしゃるように、当たり判定には、if分などがあるでしょうし、キャラクタを動かし続けるためにはループが必要だというの はその通りと思います。 キャラクタの細かい動きは、移動量や回転量をパターン化した情報を予め持っているんだと思います。 ドラクエでは、キャラクタの動きを2枚の画像を切り替えることによって表現していたというのは、ご指摘の通りですが、3Dではその画像(=スプライト)の変わりに座標値を沢山持っているんだと想像しています。 長くなりましたが、ご参考になれば幸いです。 PS:私もゲーム作りに挑戦したいなぁ・・。

noname#15164
質問者

お礼

>DirectXやOpenGL等いわゆるグラフィクスライブラリ内部に持っていますので、角度を与えるだけでモデルの移動や回転は行われます。 何となく、疑問がとけた気がします。 とてつもなくすごい事をしているイメージだったのですが、グラフィックライブラリを使えば、角度を与えるだけで移動や回転はできるんですねー。 それでポリゴン化して、うまく動いているようにみせると。 さらにパターン化した情報をまとめて読み込めば、処理がスムーズに行えると。 なるほど、感謝です。 でも、私は3Dゲームまでは、作りたくはないです。 どちらかというと、データーベースの方が好き。(w

その他の回答 (5)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.5

ゲームメーカーに勤めています。 >どうやって表現されているのでしょうか? 3Dデータというのはどういう形で持っているかご存知ですか? まず「ポリゴン」というのを聞いたことがあると思います。 これは3Dデータの基本となる三角形で3つの頂点座標(x,y,z)を持っています。 3Dのキャラクタというのはこのポリゴンを多数使って表現されます。 データは3次元ですが、実際のディスプレイは2次元なわけですから この座標を2Dの座標(x,y)に変換する必要があります。 その辺りの計算式については、DirectXや3D演算の入門書等に書いてあるので 興味があるなら購入してみると良いでしょう。 ただこの変換計算は膨大な量になるので、現在は専用のハードが行います。 >特に、クラスがどこで分かれているのとか、何と何が必要なのかとか。 PS2やDirectXのライブラリはC++のクラスで提供されているわけではありません。 PS2の場合はCのライブラリとして提供されています。(DirectXの場合はcom) 今でもC++は使わずCとアセンブラのみで作られる場合も結構あります。 その辺は設計や好みの問題です。

noname#15164
質問者

お礼

うわぁ、ライブラリ(の正確な意味)も分からない素人だという事に気がつきました。(w いや、私の中で、クラス、サブルーチン、ライブラリーの区別があまりなくって。 いや、何となく、違うのは分かるんですが。(w それはさておき、DirectXや3D演算、ポリゴンのキーワードで調べてみようかと思います。感謝。

  • PG_RankB
  • ベストアンサー率40% (12/30)
回答No.4

ゲームソフトの大半は、CかC++、またはその混合(ハイブリッドなんて呼ばれたりする)で作られています。 プログラム言語で、"3Dモデルなり絵が、動いているように見えるよう、プログラムしている"に過ぎないので、まずクラスがどう分かれる。等と言った事は、極端な話、関係ありません。 組む人によって、違った設計になりますから。 凄い極論を言ってしまえば、別にmainの中に全てをダラダラと書いて、変数も全てグローバルで、一切クラスや関数、構造体やポインタを使わなくても、理論上はある程度までは作れてしまう。と言う事です。 実際そんな事したら、頭が混乱&とてつもなく非効率的で、到底組めないからこそ、整然と素早く組めるように、それら言語の機能があるわけで。 言語を理解した上で、ゲームを組む時には、ゲームを組む為の考え方を理解する必要があります。 ゲームの基本は、パラパラ漫画だと思って下さい。 簡単な2D(シューティングとでもしましょう)で説明すると、自キャラがいて、弾があって、敵がいます。 これ等は、全てが、基本的にウィンドウの左上座標を(0,0)として、各々座標を保持しています。 ※ちなみに、ゲームは基本的に、y座標は下方向が正 自キャラは、(100,300)にいて、弾は(50,20)にいて・・・ と言う具合です。 これ等座標の値を保持するのは、変数でも、配列でも、構造体のメンバでも、型さえ合ってれば構わない訳です。分かり易さや微細な速度差を考慮しなければ、ですが。 この座標の値に合わせて、DirectX等の、描画系関数で、指定した絵を表示します。 この流れをループさせ、1ループ毎に画面をクリアし、座標の値を更新し、もう一度描画。と言う流れを繰り返す事で、人間の目には、キャラ等のオブジェクトが動いているように見えます。 ゲームはおよそ、1/60秒に一度、画面が更新されますので。 3Dに関しても、基本的な部分は同じですが、座標がx,yでは無く、x,y,zの3つ必要になります。 2Dの場合、1キャラに対し、1枚の長方形の絵を貼り付ければ良いので、変数は左上のx,yと、そのサイズが分かれば足りますが、3Dは違います。 立方体のモデルを表すのにも、全頂点で8個分の保持領域が必要になりますね。(実際、少ない頂点で判別出来る工夫が施されていますが、ここでは割愛します。) この頂点に対して、テクスチャなりマテリアルで面を作る事で、立方体が出来上がります。 この立方体を動かそうと思ったら、8個全ての頂点を同時に動かさなければいけません。 頂点の位置を元に、絵などを貼り付けたテクスチャを面にしているのですから、頂点が1つだけ動いてしまっては、立方体の形が崩れるだけに終わってしまいます。 これを人間をモデルにする場合、曲線を表現するために、大量の頂点情報が必要になるのは分かると思います。 実際、色んな技術で、なるべく少ない頂点量で済むようにされてはいますが、それでも、毎回数百、数千の頂点情報を更新しなければいけません。 これで、腕の場所や足の場所等を、プログラムの機能(例えばクラスや構造体等)で上手く分類分けして、必要な時に必要な箇所の頂点座標のみを適切に更新し、画面をクリアして、更新した頂点座標をもとに、もう一度描画をする訳です。 時々挿入される、物凄くキレイなCG映像等は、それこそ、動画ファイルとしてグラフィッカの方が製作した物を、再生させているだけですが、ゲーム中で3Dモデル等が動いている時には、上記の様な方法で動いています。 その上で、どうやってより美しい曲線を見せるか。ポリゴンを減らすか。効率良くレンダリングするのか。自然に近い形でスキンするのか。等を、各企業が研究し、それぞれのノウハウを持ってやっています。

noname#15164
質問者

お礼

クラスの話しはすこし的はずれでしたね。 操作、グラフィック、ポリゴン、陰、データ等のクラスを予想したのですが、それこそ作った人のかってですね。 定石のようなものがあるのかな?と思ったのですが、それが公開されている訳もなく。 また、メーカーによってノウハウがあるのですね。 昔のファミコン時代の2Dのロールプレイングやシューティングは、想像しやすいのですが、3D・ポリゴンとなると敷居が高くなってしまって。 やはり、ただ歩くだけでもすごい数のクラスが展開されてるんですねー。参考になりました。

回答No.3

2Dに関してあまり書かれていないので追加して 昔からスプライトと言う技術が使われています。

noname#15164
質問者

お礼

スプライトですかー。 グラフィックソフトのレイヤーみたいなものかなー。 ギャルゲーとかでよく使われているヤツかな。(w アニメーションの作成しやすくするソフトウェアもあるんですねー。 なるほど、感謝。

回答No.2

こんにちは、AEと申します。 CGは基本的に2Dと3Dの2種類に分かれますよね。 ファイナルファンタジーやキングダムハーツなどは3D系、Tales系は2D系でしょうか。 3Dの場合は、基本的に細かい平面板=ポリゴン(三角板)でキャラクタの形状を作成して、そこに人間からモーションキャプチャによって取り込んだ動きのデータを当てはめることによって、モデルを動かしているものと思います。 3Dのモデルの動きにおいては、数学の知識が必要になります。また、仮想現実に近い動き(重力や光など)を表現するためには結構難しい処理が必要でしょう。 2Dは、アニメのように画像を切り替えることによって、動きを見せているというのが基本でしょう。 多分メーカ各社にノウハウがあって、自分たちで作ったライブラリや専用に提供されているツールを使ってソフトウェアを開発していると想像しています。 C++やDirectXなど、ローレベルな言語&グラフィックスライブラリからゲームのレベルまでソフトを作るのは、「できる」「できない」でいえば「できます」が、それはそれはとてつもないことだと思いますね。 私は仕事がら3Dに関しては理解可能なのですが、ゲームのキャラクタの細かい動きや当たり判定など、具体的なレベルに関しては残念ながら判りません。 ただ、ゲーム終了時に流れるスタッフロールをみていただければ判りますように、現在、コンシューマ向けに販売されているゲームソフトは、見た目以上に巨大なプロジェクトとして動いているなぁ、と理解しています。 参考URLをご覧ください。 こちらで基本的な3Dグラフィックスとゲームの考え方が紹介されています。 ほんとに参考程度ですが、がんばってくださいね!

参考URL:
http://www.cam.hi-ho.ne.jp/strong_warriors/index.html
noname#15164
質問者

お礼

2Dと3Dの違いよりは、私は操作できるか、そうでないかの方が興味あります。 特に、操作できる方。 オープニングムービーはどんなにきれいなCGでも、Mpegと素人では違いが分からなくって。 ファミコンのドラクエなんかは、移動は2コマくらいしか使ってなくて、まぁ、移動のたびに画像を交互させているのは、素人でも分かるのですが、最近のCGはどういう原理で動かしているのかが気になってしまって。 キャラクターの細かい動きや、当たり判定もif文やループが使われているんですよね?大基本として。 参考になりそうなHP、感謝です。

noname#33353
noname#33353
回答No.1

3DCG作成ソフトで作ったファイルをプログラムで動かすだけではないでしょうか? 一度DirectXプログラミングしてみるとよいと思いますよ

noname#15164
質問者

お礼

ビジュアル的なソフトを作りたいと思った事はないので、そちらの知識は皆無です。 本屋か図書館でパラパラめくってみようかと思います。 欲を言えば、3Dで作ったデータをどう動かしているのかが知りたかったのですが。感謝。

関連するQ&A

  • ブラウザゲームを作る場合

    ブラウザゲームを作る場合、どんな言語で作るといいでしょうか? 作りたいのは、ポーカー、麻雀 などのテーブルゲームです。 サーバーをたてて、遠くの人と対戦できるようにしたいです。 自分の知識は、Java PHP Perl MySQL です。 それとも、何か別の言語を1から覚えたほうがいいでしょうか?

    • ベストアンサー
    • HTML
  • CGIゲームを作成するのにオススメな書籍など

    多人数参加型シミュレーションのCGIゲームを知合い(知合いは知識あり)とperlかphp言語で作ろうと考えておりますが、自分はプログラムに関しては全くのど素人です。 どなたか上記のゲーム作成の参考になるサイトか書籍を教えてくれませんか?

    • ベストアンサー
    • Perl
  • 昔のゲーム名について

    昔のゲーム名について 下記に書くことは、非常に抽象的なことですが (すべての条件が当てはまるかは保証しません) これらをヒントにゲーム名を知りたいのですが。 ・20年前以上 ・ハードは不明  携帯型(表現が古いが今ではポータブル)、据え置き型かはわからない。  ゲームボーイか、プレステ1ではないかと思う。 ・単純なゲーム名だと思う。  長くても3文字以内、  単純なアルファベット、か特殊文字(ギリシャ文字) ・カラフルではない ・当時発売された、最新のハードの初期のゲーム  多分、S○NY(ということでプレステ) ゲーム内容  無機質なもの、ボールまたは人間の形をしたものが  無限に立方体かをある条件で登り歩き続ける(つぶして行くまたは踏破して行くという表現が  近いかも)  (階段上ではない) その得点を競うゲーム  多分、1人プレイのみ  

  • ゲームを録画

    http://www.voiceblog.jp/_ch/ 上記の動画のような「ゲームのプレイを録画する」というのはどうしたらできるのでしょうか? また、この方のようにボイスも同時に入れるというのはどうしたらできるのですか? 初歩的な質問で大変お恥ずかしいのですが、詳しく教えていただけると嬉しいです。 ご回答よろしくお願いします。

  • アニメ…ゲーム…やりたいことが多すぎて追い付かない

    アニメを見るのが好きで、ネットやゲームも好きです。 最近は昔のアニメを見るのにはまっていたり、友達からかりたゲームのクリアや読書にいそしんだり、かといって毎期の新作アニメも八割方くらいはおさえておきたかったりと、、 やりたいことが多すぎて困っています… 元々時間の使い方が下手なので… 本読むのもまだまだ遅いし、ゲームクリアまで時間かかる方だし… 一応暇な時間は高1にしてはあるのですが、親の前でアニメやパソコンはやりにくいです… →録画したものがどんどんたまってゆく 私の尊敬する、アニメやゲーム等に詳しい方はだいたいの作品について知識豊富なので、その人のように時間を有効に趣味にあてられたら良いな、と思います。 何か良い工夫はありませんか…?

  • マネーゲームとは?

    よくニュースで「マネーゲームによる原油価格の上昇」という表現を聞きます。  素人で金融に関しての知識があまりありませんので質問をさせていただきたいのですが、マネーゲームとは一般的にどういうことなのでしょうか?なぜ、マネーゲームのお金はどこからくるのが多いといわれているのでしょうか?

  • 【ド素人】プレステでmpg,aviの動画再生できますか?

    プレステでmpg,aviの動画を再生できるでしょうか? またプレステで再生可能な動画はプレステ2,3でも再生可能と考えてよいのでしょうか? ゲーム機には全くド素人なのでどうかご教授願いたいです。

  • どうもはじめまして、私はアニメ、ゲーム大好きな会社員です。

    どうもはじめまして、私はアニメ、ゲーム大好きな会社員です。 最近pixivや同人誌を見て私も描いてみたいと思いましたが、何分絵など描いたことすらない全く素人です。 どうすれば良いのか全く判りませんので、専門的な学校へ行って勉強してみようかなと思いましたが。 色々有るのですが、CGコースやアニメデザインと色々あるようなので何を選べば良いのか全く判らない状況です。 私の希望としては、pixivでちょこちょこ絵を上げれいければ良いかなという感じです。 本や絵で今の職を捨ててまで食べて行きたいという考えは全く有りません。 そういった感じのお勧めのコース、学校など有りましたら教えて頂けると有り難いです。 皆様のアドバイスよろしくお願いします。

  • プレステ2オンラインゲームの録画について

    新年早々申し訳ございません。 早速ですが、ご質問させて頂きます。 プレステ2のオンラインゲームを録画して、仲間内のHPで公開をしたいのですが、録画方法がわかりません。 自分の希望内容は下記の通りです。 「プレステ2のオンラインゲームをやりながら、録画を行いたい。」 某家電量販店で http://www.iodata.jp/prod/multimedia/capture/2007/gv-mdvd3/index.htm  の商品を購入しました。(素人なので店員に欲しい商品の内容を伝えて購入しました) 家電関係に疎い自分としては PS2本体→D端子でTVへ TV出力からAVコード→ボックスへ ボックスからUSBで→PC (PCからの音はありませんでした) 一旦、試してみたのですが、PC側には何も映っておらず「認識しない」と表示が出てしまいました。 今度は PS本体から直接AVコードで→ボックスへ PCの画面で撮り込み出来るかと思いましたが、音楽しか流れていませんでした。(こちらは音のみPCのスピーカーから出ました) AVコードの配線やPCへのインストールは無事に終わっているので問題ないかと思うのですが、知識が浅く、如何に対処したら良いのかわかりません。 お願い申し上げます。

  • PS2のゲームのプレイ動画をパソコンに録画したいのですが・・・・

    PS2のゲームのプレイ動画をパソコンに録画するにはどうすればいいでしょうか? windows XP を使っています 素人質問で申し訳ございませんがご回答頂けると嬉しいです

専門家に質問してみよう