X



3Dアルゴリズム全般

■ このスレッドは過去ログ倉庫に格納されています
0516デフォルトの名無しさん
垢版 |
2013/11/10(日) 20:56:14.65
物理座標と論理座標・・・
理解できていないかもしれません。

下記のサイトを参考にプロジェクション座標変換の前後で、
実データと画面表示用のデータで違いが有ると言うのは認識できたんですが、
それとは別の話ですよね??

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
0517デフォルトの名無しさん
垢版 |
2013/11/10(日) 20:58:20.11
>>510読みなおした。
直交座標はある。
INTで計算したら最大値は一般的に32ビットだが、少数で計算したら一般的にどの状態でも-1.0〜1.0だ。
どういうことかというと、数学は論理座標で計算した後、相似形を当てはめてスケールするんだよ。
綺麗に計算するコツは、最後の最後まで単位変換しないこと。
0518デフォルトの名無しさん
垢版 |
2013/11/10(日) 21:05:43.05
>>515
コンピュータの少数は誤差が出るので表現幅だけがあっても嬉しいとは限らない。
銀行とかでは誤差が出たら業務が止まる。
まぁ、振り幅が大きいだけで保持できる数字自体は小さい。

>>516
それの話。プロジェクションってどういう意味だと思う?
投影だけど、何に投影するかって言うと、目の前のディスプレイに投影してマップするんだよ。
それは物理的制約であってソフトウエア的な制約ではないんだよ。ソフトウエアはもっと自由だ。
だから、ソフトウエアの領域で考えたものをどうやってリアライズするかっていうのが、プロジェクション。
0519デフォルトの名無しさん
垢版 |
2013/11/10(日) 21:09:52.54
0.0〜1.0の範囲はスケールが百回以上変化するので、
1.0〜2.0の同一スケールに納めるという割り切りもある
0520デフォルトの名無しさん
垢版 |
2013/11/10(日) 21:12:39.99
>>519
その話はすごく面白い。
不動小数点数についてシッカリ理解してないので俺今は何一つ分からないが…。
0524デフォルトの名無しさん
垢版 |
2013/11/10(日) 21:35:44.92
>>518
三次元の元データを1280+768なりの二次元の領域に落とし込むからまるで別の物って感じの理解です。
最終的には画素の数に対応した物まで変わりますが本当に全然別概念。

FFタクティクスのマスみたいな概念でint型の直交座標を考えていて、
精度をテレビの画素とインチの関係の様に考えて、
x、y、z軸をそれぞれどのぐらいのマス目で取れば良いのか疑問になりまして。

実際に32bitを計算して4294967296^3の直交座標ならとんでもない精度だなと思いましたが。
ノートに一次方程式書いてる感覚で居たのが悪かったような気もしています。

Final Fantasy Tactics 30 リオファネス城城内
ttp://www.youtube.com/watch?v=Do4FozWJXEk
0525デフォルトの名無しさん
垢版 |
2013/11/10(日) 21:36:37.38
ワールド座標系(範囲は自分で決める)

正規化デバイス座標系(-1.0〜1.0)

ウィンドウ座標系(640*480など)
0526デフォルトの名無しさん
垢版 |
2013/11/10(日) 21:43:09.39
>>525
正規化デバイス座標系
この名前初めて見たかもしれません、微妙に意思の疎通が出来てない気がしたのは、
これを明確に認識できていなかったからかもしれません。
0528デフォルトの名無しさん
垢版 |
2013/11/11(月) 18:01:46.70
>>519
0.0〜1.0だと、指数部がいろいろの値を取るけど
1.0〜2.0だと、指数部は固定って事かな?
テーブル参照とか整数化の時便利そうだね。
0529デフォルトの名無しさん
垢版 |
2013/11/12(火) 14:28:20.33
>>528
指数部が固定ということは上位9ビットが固定ということなので、
数値の大小比較を整数値としても行なえるということ。
また、下位23ビットを取り出してそのまま整数値とすれば、
0-8388607の値となるので整数変換も楽。
0530デフォルトの名無しさん
垢版 |
2013/11/12(火) 19:35:02.28
>>529
浮動小数点って、符号さえ同じなら整数で大小比較できるんじゃ無かったっけ?
裏オーボエすまんこ
0531デフォルトの名無しさん
垢版 |
2013/11/12(火) 19:44:12.70
浮動小数点について一度最初から学びなおしたい、
それは自分の力になるから、と毎年一度以上思うが何もしないという伝統。
0533デフォルトの名無しさん
垢版 |
2013/11/13(水) 11:15:44.67
切頂六面体、切頂八面体をプログラムを用いて、
各頂点の位置を求めて描く方法を教えてください。
0535529
垢版 |
2013/11/13(水) 12:17:21.42
>>530
言葉が足りてなかった。>532の通り、問題ないね。
差分同士の比較も整数値として行なえることを言いたかった。
例えば、1.25 - 1.125 も 1.125 - 1.0 も 0x100000になる。
一方、1.0 - 0.875 は 0x200000になってしまう。
0536デフォルトの名無しさん
垢版 |
2013/11/13(水) 12:43:41.02
>>533
頂点は頑張って求めろー。
正四面体、正六面体、正八面体に特化した
簡素な隠面消去アルゴリズムはたぶんあるはずなのでこれを流用しよう。
0537デフォルトの名無しさん
垢版 |
2013/11/13(水) 12:46:47.20
凸な多面体なら、視点の方に向いている(法線ベクトルと視線ベクトルの内積で...)ポリゴンは
描画する、反対を向いてるのは描画しない、だけでok
0541デフォルトの名無しさん
垢版 |
2013/11/14(木) 20:11:16.77
>>538
よくない。
凹なら下北半島と津軽半島のどっちを先に描画すべきか判断する必要が出てくる。
凸多面体ならそういうのも気にせず>>537の通りでいい。
0542541
垢版 |
2013/11/14(木) 20:15:27.67
あっ、「先に」という表現はちょっと考え方が古い(80年か90年代くらい?)かもしれないけどまあいいや。
0547デフォルトの名無しさん
垢版 |
2014/11/06(木) 20:03:07.50ID:iaZsweTc
最低でも高校理系数学程度の知識がないと3Dは無理。
0548デフォルトの名無しさん
垢版 |
2014/11/07(金) 20:57:40.87ID:x65iNG5P
その高校理数系数学というのが,最近のゆとり教育では幻滅されているようで‥
0551デフォルトの名無しさん
垢版 |
2014/11/08(土) 18:40:25.34ID:ZD2aNEFs
今年の春の大学入試試験が行列の出る最後の試験だったらしい
もう高校では基本教えないだろう
0553デフォルトの名無しさん
垢版 |
2014/11/08(土) 19:39:36.92ID:882ZzKZC
行列って高校数学よりは大学のほうがやりやすいとは思うけどね。
コンピュータ前提でガリガリ計算させるにしても、理論寄りで数式で完結するにしても。

高校数学や大学入試の枠で「生徒の力を評価する」のがやりにくいと思う、行列って。
いやもちろん中身はすごく重要だと思うんだけどさ。

だから行列削って別のもの教えますっていうならいいと思うんだけど単に削っただけなんかね。
0555デフォルトの名無しさん
垢版 |
2014/11/08(土) 21:11:43.63ID:3fSv7BFT
そうか‥二次正方行列の範囲で固有値固有ベクトルまでやっていたのも夢となったのか‥
0556デフォルトの名無しさん
垢版 |
2014/11/09(日) 12:34:18.53ID:VcMedQcJ
積に順序があることを教えるのも行列やベクトルが良い例だけど
最近の教育ではなんかスカラー積にまで順序を強制してるんだよな
0557デフォルトの名無しさん
垢版 |
2014/11/09(日) 13:30:39.88ID:Ncgt9DFn
「算数の掛け算で順序逆にしたら×もらった」って話は
そういう気違い教師がたまにいるってだけだろ
0562デフォルトの名無しさん
垢版 |
2014/11/10(月) 02:47:49.88ID:tVi0pfE8
>>560の言っていることは正しい。
0563デフォルトの名無しさん
垢版 |
2014/12/06(土) 13:35:37.22ID:eDdnt3jc
昔のCG資格の教科書資料とかプログラミング専門雑誌の3D解説記事でも行列関係は間違い多くて怪しかったけどな。
95-2003年頃のはなし。

数学の教え方が駄目なのは判ってない人が教えるからだ。昔から受験数学と本当の数学は違うと言われてる。
ゆとりも文部省や現場の先生は反対なのに、内閣直属の自称識者なんとか教育国民会議の圧力で教育が駄目になったと聞いた。
官僚は悪くないよ。
有名企業で第一線で活躍したエンジニアが子供の数学力低下に驚いて塾やってるくらいだから。
0566デフォルトの名無しさん
垢版 |
2014/12/06(土) 21:03:34.82ID:VB5mtD/4
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
官僚は悪くないよ。
0567NAS6 ◆I4OWyGBdcY
垢版 |
2015/06/27(土) 00:45:09.45ID:axk1G1AE
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用じゃないのも混ざってる
テクスチャマッピングはバグったから未実装
むう
0568NAS6 ◆I4OWyGBdcY
垢版 |
2015/06/27(土) 11:47:45.63ID:axk1G1AE
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)
に設定すればほぼ同じと確認
0569NAS6 ◆I4OWyGBdcY
垢版 |
2015/06/27(土) 17:30:53.85ID:axk1G1AE
参考リンクのスクリプトとどうも同じにならないと思ったら
単位ベクトルをよく見てみたら
右手系と左手系の違いだったorz
0570NAS6 ◆I4OWyGBdcY
垢版 |
2015/06/27(土) 19:42:47.01ID:axk1G1AE
Quaternion::Slerp()のバグを直したら良くなった
0573デフォルトの名無しさん
垢版 |
2016/03/29(火) 08:40:21.35ID:/c8bAcK4
サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
0574NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/17(月) 01:43:33.97ID:WrwdFVNn
3D回転において
回転ベクトルがあったら
そこからクォータニオンを求めて
回転しちゃえばいいから
行列の出る幕は平行移動だけだよな

平行移動も含めたクォータニオンみたいなのは
出来ないもんかな

多分
θ、3D軸、同次W、3D点の
八元数になると思うけど

これが出来たら4×4同次座標行列は陳腐化するだろうな
0575デフォルトの名無しさん
垢版 |
2017/04/17(月) 03:22:07.86ID:QjTPzB+R
無知過ぎる。
0576NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/17(月) 11:09:34.10ID:WrwdFVNn
出来たった

姿勢ベクトル

ttp://nas6.net/postest.htm
ttp://nas6.net/postest.zip

3D回転テスト・姿勢ベクトル詳細演算テストとソース

ttp://nas6.net/prg3d003.htm

まとめ
0577NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/17(月) 11:18:15.44ID:WrwdFVNn
姿勢ベクトルを使えば
情報は保存されているから
4×4同次座標行列は
使わなくても3D演算出来るっス
0578NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/17(月) 11:39:19.15ID:WrwdFVNn
三次元物体は
4×4同次座標行列(容量16個)の言いなりだけど
姿勢ベクトル(容量8個)はそれを余分な情報を
ほとんどそぎ落として三次元を従えた
0579NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/17(月) 11:41:57.86ID:WrwdFVNn
同次平行移動ベクトルを保持しているから
姿勢ベクトルは同次情報をシェイプすれば容量7個までにはなる
0580NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/17(月) 11:44:13.64ID:WrwdFVNn
三次元は7個のパラメタで完全に記述できる
0581NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/17(月) 12:14:23.43ID:WrwdFVNn
・まとめ

三次元は
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になる
0583NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/18(火) 08:46:15.06ID:TFejpUog
スケールって保存情報かな?
なら容量10になるけど
スケールは保持しなくてもいいだろ
0584NAS6 ◆n3AmnVhjwc
垢版 |
2017/04/18(火) 08:55:36.58ID:TFejpUog
それにスケールって1.0越えて逆三角関数エラーになるから嫌い
0585デフォルトの名無しさん
垢版 |
2017/04/18(火) 13:37:43.21ID:qtH6XCcG
>>580
3次元は自由度6だから、6つのパラメータで完全に記述できて冗長性がない。
姿勢に四元数を使う時点で冗長性がある。

4x4行列が無駄だというなら、四元数も無駄。

っていう話を何で今頃しているんだ?
0588デフォルトの名無しさん
垢版 |
2017/10/19(木) 10:55:09.01ID:geRH9J/1
すみません質問です:

2次元平面char[width][height]バッファに図形を抽出(2値化)する処理を作りました。
その図形が、なんとなく円なのか or 全然円じゃないのか、を判定する方法はありますでしょうか。

自分が思いついたのは、外側のラインの曲率半径を計算することですが、何か所も計算した上、判定する、みたいな高度な処理になりそうで。。。

もっと簡単な方法をお教えくださいorz
0589デフォルトの名無しさん
垢版 |
2017/10/19(木) 14:14:12.81ID:ZPzh5gN2
char[height][width]
に汁
0590デフォルトの名無しさん
垢版 |
2017/10/19(木) 16:55:14.74ID:kQj/aOVd
>>588
簡単な方法は無いんじゃないか?
円の検出にハフ変換ってのがあるけど、計算量はかなりのものだな。

円の大きさが決まってるとかなら簡単になりそうだけど。
0594デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:28:17.28ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

PFQ9C
0595デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:29:47.11ID:RfoszcD2
MZO
0596デフォルトの名無しさん
垢版 |
2019/02/06(水) 02:42:56.93ID:Wv5RHRnC
レンダリングはライブラリに丸投げで、立方体を表示させるまでは出来たんだけど、画面上のマウスカーソルのある場所を特定したい。
eyetracingというのかよく分からないんだけど、2Dの様に「この点」という結果が得られる訳じゃないのは何となく解ってきてる。
マウスのある無限遠の点と、カメラのある点を結んだ線と、立方体の各面との交差判定をしなきゃならない。
ポリゴンが数千とかに増えた場合、処理速度的に無理っぽくね?
実際のゲームなんかの処理ってどうやってるのか知りたい

苦肉の策で、オフスクリーンバッファに各面の色が違うモデルを同時に描いてみたら256^3面までは特定は出来るけど、
面のどの部分なのかを特定する為にグラデーションにしてみると、使える色が限られて特定できる面の数が激減する。
なんだかコレジャナイ感

しっかり計算で求めたいんだけど参考になるサイトが見つからない
教えてください
0598デフォルトの名無しさん
垢版 |
2019/02/07(木) 09:19:56.26ID:4AqEFH47
>>596
単純な図形でモデルを内包するバウンディングボックスを用意しておいて
まずはバウンディングボックスとの交差判定をする。
交差してなければ、そのモデルは判定をスキップする。

ただし、ゲームではポリゴン単位での判定は普通はしない。
0599デフォルトの名無しさん
垢版 |
2020/06/27(土) 06:45:34.32ID:U90iCGW6
ゲーム等のワールドにオブジェクトをロードして配置する時について
>>308で紹介された
X
OBJ
COLLADA
のファイルを用途に応じて混雑したりして使っているのでしょうか?
建物等の動かない物と大道具類や小物類(jpgテクスチャ)
風にはためくカーテンや洗濯物や草花(gifアニメテクスチャ)
敵キャラや町人など動くもの等(透過pngテクスチャ)
それら全て統一のファイル形式で作られているのでしょうか?
あるいはDirectX と OpenGLでの3Dモデルの読み込みアルゴリズムローダーの違いでしょうか?
0600デフォルトの名無しさん
垢版 |
2020/11/12(木) 23:57:16.27ID:2hJ4Un53
3Dの数学とDirectXやOpenGL使わないCやC++かJavaのプログラムがのってる本ありませんか?
0602デフォルトの名無しさん
垢版 |
2020/11/13(金) 12:32:33.04ID:C3CvA+Jh
ラスタライザから全部自分で作りたいんでしょう。

読んだことないけど、オライリーのゲーム3D数学は
C++のコード例が載ってるらしいよ。
0605デフォルトの名無しさん
垢版 |
2021/04/20(火) 09:22:27.35ID:w+tuOjpZ
3Dで川の流れとかってどうやるんですか?
テクスチイをいちいち張り替えてるんですか?
0608デフォルトの名無しさん
垢版 |
2021/11/08(月) 23:07:49.44ID:46TrNb/m
>>607
1点透視から2点・3点透視が描ける「ユアッサーの法則」

https://esinote.com/blog/7417.html


をプログラムするとか
0611デフォルトの名無しさん
垢版 |
2022/07/03(日) 11:11:40.00ID:teuwus0A
Blenderとかにある
3Dモデルの厚みつけってプログラムコード的にどうやるんですか?
いくらググってもBlenderばかり出てきます
0612デフォルトの名無しさん
垢版 |
2023/01/26(木) 07:24:14.12ID:7eoscxnU
3Dモデリングツールのような点や面を触って移動
のようなプログラムを作りたいのですがどうすればよいでしょうか
予め作られた3Dモデルを表示やスクリプトによって作られたモデルを表示するというのは見るのですが点の位置そのものを画面から指定して移動するというサンプルが少ないです…
参考になるサイトや教本などあれば教えていただきたいです
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況