トピック
りょうま R-S1437

ポリゴン等の立体を描画する (回転できる)にはどうすれば良いのでしょうか?又、どの様な知識が必要なのでしょうか?出来るだけ詳しく教えて下さると嬉しいです。一応三角関数はだいたい理解しています。

2そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
ポリゴンの前に線だけで3次元を表現するワイヤーフレームに挑戦してみては? 必要な知識は ・透視変換 X=x/z Y=y/z ・sin・cosを使った回転計算 X=xcosθ-ysinθ Y=xsinθ+ycosθ あとは3次元座標上での頂点を定義、どの頂点を繋ぐかの定義の作成。 上の式を使って回転、移動、透視変換を行ってからラインを引けばワイヤーフレームは表示できる。
1そうだね
プレイ済み
返信[2]
親投稿
りょうま R-S1437
暫く考えていたら、だいたいのイメージは湧いてきましたが、イマイチやり方が分からないので、簡単なプログラムを作っていただけないでしょうか?
0そうだね
プレイ済み
返信[3]
親投稿
あきと SideBurnsM
そこまで組めているんだったらあともうひと踏ん張りで作れそうですよ。 頂点を8つ定義していますが、多分立方体が描きたいんですよね。 もう一種類6つの結線情報を追加すれば線が引けます。 あとはDATA,READ文か直接代入でもいいので初期座標情報が必要ですね。
2そうだね
プレイ済み
返信[4]
親投稿
あきと SideBurnsM
結線情報は12本ですね。 面が6面だから6と書いてしまいました。ごめんなさい。
1そうだね
プレイ済み
返信[5]
親投稿
InDoor TheInDoor12
ざっと流れを書いてみます。 頂点と結線情報を定義 ループ開始  VSYNC  各頂点をカメラに応じて平行移動、回転移動、透視変換  各結線情報に応じて線描画 ループ終了 以上。
1そうだね
プレイ済み
返信[6]
親投稿
りょうま R-S1437
うえこうさんのプログラムを基に、DATAで頂点情報を書きましたか、X'=COSθ*X-SINθ*Y:Y'=SINθ*X+COSθ*Yの使い方がイマイチよく分かっていないので、上手く動作しません。どの様にすれば良いのでしょうか?
0そうだね
プレイ済み
返信[7]
親投稿
りょうま R-S1437
幾らやっても中々上手く動きません。ワイヤーフレームを回転させるにはどの様にすれば良いのでしょうか?
0そうだね
プレイ済み
返信[8]
親投稿
あきと SideBurnsM
概念が理解できてないのだと、ソースコードだけでは理解できないかも…? XYZの3次元座標を定義してもプチコンには本当の3Dを描画する機能はありません。 その3次元座標をXYの2次元座標に投影したらどこを指しているか計算するのが透視変換です。 なので3次元座標で定義するデータは本当の立体物を考えないといけません。 立方体ならルービックキューブみたいな形状を本当に意識したデータにしておく必要があります。
2そうだね
プレイ済み
返信[9]
親投稿
MIKI ifconfig
今はネットでほとんど説明されてるのでありがたい。 一つは 「レンダリングパイプライン」 もう一つは 「同次座標」 で検索してみてください。
1そうだね
プレイ済み
返信[10]
親投稿
あきと SideBurnsM
私も作成してみました。【434335ZY】 できるだけコメントも書きました。
1そうだね
プレイ済み
返信[11]
親投稿
あきと SideBurnsM
色々補足です。 立方体の3次元データは中央が(0,0,0)になるように定義しています。こうすると回転計算をいきなり行えるので計算が楽になります。 回転計算を行うと頂点データは計算誤差が発生するので元の3次元データには再代入は行わず別の配列に計算後データは格納します。 回転のあとで移動を行っていますが、これは順番を逆にすると公転のように遠いところで回転してしまうのを避けるためにこの順序で行っています。 移動値はZだけ数値が大きいですが、これは一番最初の3次元データはカメラと同じ場所にあって見えないので離してやるためのデータです。原点に近づくと0除算でエラーが出ます。 ここまでやってもまだポリゴンには計算が足りません。次は陰面消去というのが待っています。が、まずはここまでをじっくり理解した方が良いと思います。
1そうだね
プレイ済み
返信[12]
親投稿
りょうま R-S1437
完全オリジナルで作るのはまだ難しいですが、皆様のお陰で色々と分かりました。有り難うございました。
0そうだね
プレイ済み