3Dアルゴリズム全般
■ このスレッドは過去ログ倉庫に格納されています
物理座標と論理座標・・・
理解できていないかもしれません。
下記のサイトを参考にプロジェクション座標変換の前後で、
実データと画面表示用のデータで違いが有ると言うのは認識できたんですが、
それとは別の話ですよね??
ttp://www.c3.club.kyutech.ac.jp/gamewiki/index.php?3D%BA%C2%C9%B8%CA%D1%B4%B9
ttp://hakuhin.jp/as3/projection.html >>510読みなおした。
直交座標はある。
INTで計算したら最大値は一般的に32ビットだが、少数で計算したら一般的にどの状態でも-1.0〜1.0だ。
どういうことかというと、数学は論理座標で計算した後、相似形を当てはめてスケールするんだよ。
綺麗に計算するコツは、最後の最後まで単位変換しないこと。 >>515
コンピュータの少数は誤差が出るので表現幅だけがあっても嬉しいとは限らない。
銀行とかでは誤差が出たら業務が止まる。
まぁ、振り幅が大きいだけで保持できる数字自体は小さい。
>>516
それの話。プロジェクションってどういう意味だと思う?
投影だけど、何に投影するかって言うと、目の前のディスプレイに投影してマップするんだよ。
それは物理的制約であってソフトウエア的な制約ではないんだよ。ソフトウエアはもっと自由だ。
だから、ソフトウエアの領域で考えたものをどうやってリアライズするかっていうのが、プロジェクション。 0.0〜1.0の範囲はスケールが百回以上変化するので、
1.0〜2.0の同一スケールに納めるという割り切りもある >>519
その話はすごく面白い。
不動小数点数についてシッカリ理解してないので俺今は何一つ分からないが…。 >>519
俺が一般的に扱ってる座標と違うので何を言ってるのかわからないが興味アルな。 ボクセル群を回転させて新たなボクセル群を切り直したいという話なのでわ・・・ >>518
三次元の元データを1280+768なりの二次元の領域に落とし込むからまるで別の物って感じの理解です。
最終的には画素の数に対応した物まで変わりますが本当に全然別概念。
FFタクティクスのマスみたいな概念でint型の直交座標を考えていて、
精度をテレビの画素とインチの関係の様に考えて、
x、y、z軸をそれぞれどのぐらいのマス目で取れば良いのか疑問になりまして。
実際に32bitを計算して4294967296^3の直交座標ならとんでもない精度だなと思いましたが。
ノートに一次方程式書いてる感覚で居たのが悪かったような気もしています。
Final Fantasy Tactics 30 リオファネス城城内
ttp://www.youtube.com/watch?v=Do4FozWJXEk ワールド座標系(範囲は自分で決める)
↓
正規化デバイス座標系(-1.0〜1.0)
↓
ウィンドウ座標系(640*480など) >>525
正規化デバイス座標系
この名前初めて見たかもしれません、微妙に意思の疎通が出来てない気がしたのは、
これを明確に認識できていなかったからかもしれません。 自分は、変換後の変化考えるのが面倒なので最初から正規化して考えるなー。 >>519
0.0〜1.0だと、指数部がいろいろの値を取るけど
1.0〜2.0だと、指数部は固定って事かな?
テーブル参照とか整数化の時便利そうだね。 >>528
指数部が固定ということは上位9ビットが固定ということなので、
数値の大小比較を整数値としても行なえるということ。
また、下位23ビットを取り出してそのまま整数値とすれば、
0-8388607の値となるので整数変換も楽。 >>529
浮動小数点って、符号さえ同じなら整数で大小比較できるんじゃ無かったっけ?
裏オーボエすまんこ 浮動小数点について一度最初から学びなおしたい、
それは自分の力になるから、と毎年一度以上思うが何もしないという伝統。 http://ja.wikipedia.org/wiki/%E5%9F%BA%E6%95%B0%E3%82%BD%E3%83%BC%E3%83%88
> IEEEフォーマット の場合は、float a, b が与えられたとき、a>b>0なら*(int*)&a>*(int*)&bとなるため、指数部と仮数部に分ける必要も、整数に近似する必要もない。 切頂六面体、切頂八面体をプログラムを用いて、
各頂点の位置を求めて描く方法を教えてください。 >>533
その過程のどこが分からないの?
全て分からないと言うのなら、そもそも教わるのが無理な話。 >>530
言葉が足りてなかった。>532の通り、問題ないね。
差分同士の比較も整数値として行なえることを言いたかった。
例えば、1.25 - 1.125 も 1.125 - 1.0 も 0x100000になる。
一方、1.0 - 0.875 は 0x200000になってしまう。 >>533
頂点は頑張って求めろー。
正四面体、正六面体、正八面体に特化した
簡素な隠面消去アルゴリズムはたぶんあるはずなのでこれを流用しよう。 凸な多面体なら、視点の方に向いている(法線ベクトルと視線ベクトルの内積で...)ポリゴンは
描画する、反対を向いてるのは描画しない、だけでok >>538
よくない。
凹なら下北半島と津軽半島のどっちを先に描画すべきか判断する必要が出てくる。
凸多面体ならそういうのも気にせず>>537の通りでいい。 あっ、「先に」という表現はちょっと考え方が古い(80年か90年代くらい?)かもしれないけどまあいいや。 >>543-544
そうそう、そんな感じです。
ペインターズアルゴリズムって言葉を初めて知ったor完全に忘れてた…。 最低でも高校理系数学程度の知識がないと3Dは無理。 その高校理数系数学というのが,最近のゆとり教育では幻滅されているようで‥ 今年の春の大学入試試験が行列の出る最後の試験だったらしい
もう高校では基本教えないだろう 嘘だと言ってくれ。日本を壊滅させる気か、自民党は。 行列って高校数学よりは大学のほうがやりやすいとは思うけどね。
コンピュータ前提でガリガリ計算させるにしても、理論寄りで数式で完結するにしても。
高校数学や大学入試の枠で「生徒の力を評価する」のがやりにくいと思う、行列って。
いやもちろん中身はすごく重要だと思うんだけどさ。
だから行列削って別のもの教えますっていうならいいと思うんだけど単に削っただけなんかね。 まあ必要なら大学一年に線形代数学でジョルダンの標準形まで習うでしょ そうか‥二次正方行列の範囲で固有値固有ベクトルまでやっていたのも夢となったのか‥ 積に順序があることを教えるのも行列やベクトルが良い例だけど
最近の教育ではなんかスカラー積にまで順序を強制してるんだよな 「算数の掛け算で順序逆にしたら×もらった」って話は
そういう気違い教師がたまにいるってだけだろ そんな議論あったんだ
70年代からあるようだが聞いたことなかった 昔のCG資格の教科書資料とかプログラミング専門雑誌の3D解説記事でも行列関係は間違い多くて怪しかったけどな。
95-2003年頃のはなし。
数学の教え方が駄目なのは判ってない人が教えるからだ。昔から受験数学と本当の数学は違うと言われてる。
ゆとりも文部省や現場の先生は反対なのに、内閣直属の自称識者なんとか教育国民会議の圧力で教育が駄目になったと聞いた。
官僚は悪くないよ。
有名企業で第一線で活躍したエンジニアが子供の数学力低下に驚いて塾やってるくらいだから。 官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。 Visual Studio X ver. for Desktop用と(非XNA)
Visual Studio X ver. for Windows Phone用(XNA)
ttp://nas6.main.jp/secret/Test.zip
VBXNA自作3Dエンジンライブラリサンプルソース
ttp://nas6.main.jp/secret/SolarSystem3DXNA.zip
太陽系シミュレータ3DXNAvbサンプルソース
ttp://nas6.main.jp/secret/Polygon.htm
解説HP
無限対数軸を用いた透視射影の自作3Dエンジンライブラリ
無限対数軸とは0〜MAX_Nの範囲に0〜∞をぶち込むものです
だから視垂台ではなく無限遠までの視円錐の透視射影
サンプルはXNAを用いないPhone用じゃないのも混ざってる
テクスチャマッピングはバグったから未実装
むう ttp://nas6.main.jp/secret/Polygon.htm
参考HP
球面線形補間いろいろ
数学的においしいサンプル
ttp://nas6.main.jp/secret/Render3DSphere.zip
球面線形補間vbサンプルソースはVSforDeskTop用
クォータニオン、対数クォータニオンの球面線形補間
ttp://nas6.main.jp/secret/Sphere4D.zip
カメラスプライン補間vbサンプルソース はVSforWindowsPone用
四次元球のスプライン補間
球面線形補間vbサンプルソースの簡単な使い方は
Srcθ、Destθを適当に変えてSTARTボタンで計算
カメラスプライン補間vbサンプルソースは
spaceキーで視点切り替え
enterキーでその場で回転と飛行パスの切り替え
数学的においしいよ
ttp://momose-d.cocolog-nifty.com/blog/2011/03/exponentialmap-.html
このリンクのスクリプトと球面線形補間vbサンプルソースの各軸を
Base(-1,0,0),Src(0,1,0),Dest(0,0,-1)
に設定すればほぼ同じと確認 参考リンクのスクリプトとどうも同じにならないと思ったら
単位ベクトルをよく見てみたら
右手系と左手系の違いだったorz Quaternion::Slerp()のバグを直したら良くなった サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート 3D回転において
回転ベクトルがあったら
そこからクォータニオンを求めて
回転しちゃえばいいから
行列の出る幕は平行移動だけだよな
平行移動も含めたクォータニオンみたいなのは
出来ないもんかな
多分
θ、3D軸、同次W、3D点の
八元数になると思うけど
これが出来たら4×4同次座標行列は陳腐化するだろうな 出来たった
姿勢ベクトル
ttp://nas6.net/postest.htm
ttp://nas6.net/postest.zip
3D回転テスト・姿勢ベクトル詳細演算テストとソース
ttp://nas6.net/prg3d003.htm
まとめ 姿勢ベクトルを使えば
情報は保存されているから
4×4同次座標行列は
使わなくても3D演算出来るっス 三次元物体は
4×4同次座標行列(容量16個)の言いなりだけど
姿勢ベクトル(容量8個)はそれを余分な情報を
ほとんどそぎ落として三次元を従えた 同次平行移動ベクトルを保持しているから
姿勢ベクトルは同次情報をシェイプすれば容量7個までにはなる ・まとめ
三次元は
3元平行移動T+四元数Qの
7つのパラメタがあれば
完全に記述できる
これを姿勢ベクトルPと定義する
P=[1 T Q]
P1とP2の積、つまり回転は
P1P2=[T1+Q1T2Q1^-1 Q1Q2]
と表記される
速さは、項の積の数だけ数えて
行列積が16^2=256で
姿勢ベクトル積が
P1P2=[T1+Q1T2Q1^-1 Q1Q2]
Q1T2Q1^-1
で(四元数→行列)・ベクトル
にT1のベクトル加算と
Q1Q2の四元数の積って計算は
18×3+4^2=70になる スケールって保存情報かな?
なら容量10になるけど
スケールは保持しなくてもいいだろ それにスケールって1.0越えて逆三角関数エラーになるから嫌い >>580
3次元は自由度6だから、6つのパラメータで完全に記述できて冗長性がない。
姿勢に四元数を使う時点で冗長性がある。
4x4行列が無駄だというなら、四元数も無駄。
っていう話を何で今頃しているんだ? コテハンの馬鹿が足りない脳味噌で阿呆やってるのが可笑しいからね。 すみません質問です:
2次元平面char[width][height]バッファに図形を抽出(2値化)する処理を作りました。
その図形が、なんとなく円なのか or 全然円じゃないのか、を判定する方法はありますでしょうか。
自分が思いついたのは、外側のラインの曲率半径を計算することですが、何か所も計算した上、判定する、みたいな高度な処理になりそうで。。。
もっと簡単な方法をお教えくださいorz >>588
簡単な方法は無いんじゃないか?
円の検出にハフ変換ってのがあるけど、計算量はかなりのものだな。
円の大きさが決まってるとかなら簡単になりそうだけど。 ごめんなさい、そうしてました>>589
エエエー>>590 >>588
円形度でググれ。
あと、これは3D関係なくないか。
画像処理のスレが適してると思うが。 つ d >>592
OpenCVプログラムありました。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
PFQ9C レンダリングはライブラリに丸投げで、立方体を表示させるまでは出来たんだけど、画面上のマウスカーソルのある場所を特定したい。
eyetracingというのかよく分からないんだけど、2Dの様に「この点」という結果が得られる訳じゃないのは何となく解ってきてる。
マウスのある無限遠の点と、カメラのある点を結んだ線と、立方体の各面との交差判定をしなきゃならない。
ポリゴンが数千とかに増えた場合、処理速度的に無理っぽくね?
実際のゲームなんかの処理ってどうやってるのか知りたい
苦肉の策で、オフスクリーンバッファに各面の色が違うモデルを同時に描いてみたら256^3面までは特定は出来るけど、
面のどの部分なのかを特定する為にグラデーションにしてみると、使える色が限られて特定できる面の数が激減する。
なんだかコレジャナイ感
しっかり計算で求めたいんだけど参考になるサイトが見つからない
教えてください >>596
単純な図形でモデルを内包するバウンディングボックスを用意しておいて
まずはバウンディングボックスとの交差判定をする。
交差してなければ、そのモデルは判定をスキップする。
ただし、ゲームではポリゴン単位での判定は普通はしない。 ゲーム等のワールドにオブジェクトをロードして配置する時について
>>308で紹介された
X
OBJ
COLLADA
のファイルを用途に応じて混雑したりして使っているのでしょうか?
建物等の動かない物と大道具類や小物類(jpgテクスチャ)
風にはためくカーテンや洗濯物や草花(gifアニメテクスチャ)
敵キャラや町人など動くもの等(透過pngテクスチャ)
それら全て統一のファイル形式で作られているのでしょうか?
あるいはDirectX と OpenGLでの3Dモデルの読み込みアルゴリズムローダーの違いでしょうか? 3Dの数学とDirectXやOpenGL使わないCやC++かJavaのプログラムがのってる本ありませんか? ラスタライザから全部自分で作りたいんでしょう。
読んだことないけど、オライリーのゲーム3D数学は
C++のコード例が載ってるらしいよ。 そういう意味か・・だったらまあこんなのとか読んで頑張ろう
コードはPascalっぽい疑似言語だけどな!
https://pub.nikkan.co.jp/books/detail/00000069 3Dで川の流れとかってどうやるんですか?
テクスチイをいちいち張り替えてるんですか? いろいろな方法があるよ
いろいろありすぎて簡単には教えられない 質問です
2点透視で表示させたいのですがどうすればいいですか? >>607
1点透視から2点・3点透視が描ける「ユアッサーの法則」
https://esinote.com/blog/7417.html
をプログラムするとか 単純に変換公式なかった?
Matrix定義するだけで良いと思うが Blenderとかにある
3Dモデルの厚みつけってプログラムコード的にどうやるんですか?
いくらググってもBlenderばかり出てきます 3Dモデリングツールのような点や面を触って移動
のようなプログラムを作りたいのですがどうすればよいでしょうか
予め作られた3Dモデルを表示やスクリプトによって作られたモデルを表示するというのは見るのですが点の位置そのものを画面から指定して移動するというサンプルが少ないです…
参考になるサイトや教本などあれば教えていただきたいです ■ このスレッドは過去ログ倉庫に格納されています