No.5ベストアンサー
- 回答日時:
>球の方程式を使った方が、三角形パッチで表現するより高速で綺麗だと思うのですが・・・
DirectXやOpenGLを使わずに描画する事を考えてください。
そうすれば何故三角形なのかわかるでしょう。
球の方程式自体は単純かもしれませんが、ポリゴンを含めラスタライズすることまで考えれば
ものすごい計算量になることがわかると思います。
3D表示をする場合奥にあるものは表示せず、手前にあるものを表示するようにしなければなりませんが
球だとどこで切ればいいのか等、難しい問題が多いですよね?
その辺の計算はゲーム等ではすべてハードウェアがやってくれるわけですが、
一般的にハードウェアは単純化した方がコストパフォーマンスがあがります。
わざわざ球専用のオブジェクト処理をするチップを載せるより
ポリゴンをグーローシェーディングして球に見せる処理をする方が現実的なのです。
No.8
- 回答日時:
余談ですが、単色の球体なら一番高速な描画方法はビルボードを使うことです。
単色の球体はどこから見ても同じ形なので、常にカメラ方向を向いているビルボードでも十分表現できます。ニンテンドー64用のマリオではビルボードの球が頻繁に使われています。No.7
- 回答日時:
> 球の方程式を使った方が、三角形パッチで表現するより高速で綺麗だと思うのですが・・・どうして三角形パッチを使うのでしょうか?
画面に球が1コしか出現しない映像やゲームは面白くないから。
三角形パッチの球面や平面が立体が交差したり重なり合ったりって表現が必要だから。
No.6
- 回答日時:
学生時代は OpenGL を使っていました。
(3DCGの)3次元空間において、「面」をどのように定義するかご存知ですか?
「面」は3個以上の「頂点(vertex)」から出てきています。そして、各頂点には「法線ベクトル(normal vector)」が与えられます。数学では法線ベクトルは「面」そのものに与えますが、3DCGの世界では頂点に法線ベクトルを与えます。(少なくともOpenGLでは、頂点以外に法線ベクトルを与えることができません。)
法線ベクトルは、光の反射方向を支配します。ですから、頂点3個で三角形を作り、各頂点に与えた法線方向をずらしてやると、光の反射具合により3角形が曲面に見えます。
球に限らず、あらゆる曲面が同じ方法で定義できます。
OpenGLにもベジェ曲面やNURBS曲面を定義する関数がありますが、最終的にできるのは頂点と法線ベクトルでできた三角形の集まりです。
> 球の方程式を使った方が(以下略)
球の方程式を使ってどのように立体を記述して、最終的に画面のピクセルを埋めるところまでもっていくのか、そこまで具体的に書いていただけると三角形を使う場合とどちらが速いか比較できます。
No.4
- 回答日時:
他の回答者の方の補足的な回答ですが、
物体を4頂点以上の多角形の組み合わせで表示すると、
物体を変形させた時(ねじったり)すると歪みや抜けが
生じてしまいますし、ハード(ゲーム機)によっては
4頂点にしても内部で3頂点の組み合わせで計算してますからね

No.3
- 回答日時:
3Dハードウェアアクセラレーター付きの(最近では普通の)
ビデオカードで描画できるのが、基本的に3角形だけだからです。
方程式を用いる方法は、なめらかできれいな図形が描ける反面、
各形状ごとに方程式を定義しなくてはいけなくて、
方程式の複雑さのわりに単純な図形しか描けず、
最適化しやすい3角形ポリゴンに比べると、演算負荷も高いので、
まず、ゲームなんかでの利用価値はないですね。
ゲームのようなリアルタイム性が要求されない3D CGの世界では、
物体を単純なポリゴンではなくて、球などの形状を方程式的に表現する場合もありますが・・・
これも、形状が非常に限られるなどの理由で、めったに使われません。
これがよく登場するのは、3D CGプログラミングの例題くらい、ですね。。
No.2
- 回答日時:
回答ではなく、余談です。
PSPではNURBSがサポートされていますが、NURBSで曲面を描画している
ゲームを見たことがありません。
#どうして使わないんでしょうね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 球の中心が正三角形の3辺をたどって1周したとき、球が通過してできた立体の体積を求めなさい。 1 2022/06/23 20:35
- 数学 問題文 正n角形がある(nは3以上の整数)。この正n角形のn個の頂点のうちの3個を頂点とする三角形に 4 2023/03/22 14:57
- 数学 半径6の円Kを底面とする半球がある。半球の底面に平行な平面が半球と交わっており、交わりの円Lの半径は 6 2022/06/24 06:34
- 数学 三角比の相互関係「sinA^2+cosA^2=1」が直角でなくても成り立つ理由について。 これは、三 8 2022/03/31 09:22
- 物理学 微分方程式の物理現象への適用について 3 2023/05/14 12:22
- 数学 下の三角形の表面積の求め方を教えて下さい。 円と扇形に分けて考える時、扇形の角度を求めてから解きたい 9 2022/04/14 15:26
- 哲学 形式学 1 2023/06/23 17:19
- 物理学 量子力学 球面調和関数 導出 方位角成分 微分方程式の解 2 2022/07/02 13:40
- 数学 余弦定理を使う問題です。 3 2022/06/25 16:25
- 数学 「θ=0°以上180°以下のとき、tanθ=(ルート3)-2であるときのcosθ、sinθを求めよ」 2 2022/07/24 20:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PowerPoint の VBA
-
.net chartでの積層棒グラフの...
-
VB2010のChartで、何本もの線を...
-
Excel VBA:コントロールボタン...
-
C# DrawImage 物理サイズでな...
-
C#(.net) ドロー系ソフト作成 ...
-
win32api複数のタイマーを同時...
-
円の頂点の求め方を知りたいです。
-
ListBoxで改行したい
-
給紙トレイをダイアログを使わ...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
ユーザーフォームを表示中にシ...
-
カメラスクロールするのを動画...
-
「Columns("A:C")」の列文字を...
-
ExcelVBAのユーザーフォームの...
-
eclipseのデバッグ中に変数の値...
-
マクロで、次のコードへ行く前...
-
ラベルの文字列の長さが変わっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
給紙トレイをダイアログを使わ...
-
C#を用いて描画する四角形の角...
-
vb6のTEXTBOX
-
PowerPoint の VBA
-
for文の実行速度を遅くしたいの...
-
win32api複数のタイマーを同時...
-
MFCでのコンボボックスについて
-
VB.netで図形描画ができません^^;
-
花火のアルゴリズム
-
図の削除直後の再描画
-
円の頂点の求め方を知りたいです。
-
C# DrawImage 物理サイズでな...
-
VB.NETでグラフィックを描くと...
-
PictureBoxのダブルバッファリ...
-
色を合成するには
-
C++/CLIを用いて画像をクリップ...
-
【Delphi】 Canvasへの描画につ...
-
エクセルのレーダーチャート 0...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報