出し惜しみせずに3Dの技術を誰かが答えます
■ このスレッドは過去ログ倉庫に格納されています
00011
01/11/15 21:43ID:EsRJgfGr誰かが答えます。
じゃんじゃんネタ振ってくれ。
俺も業界で飯食ってるが知ってる事は出し惜しみせずに
答えるよ。みんなでレベルアップしようぜ。
とりあえずBBXとBio120%の過去ログは見とけ。
0727名前は開発中のものです。
02/01/15 13:00ID:???正確破綻者多いし。(特にWeb弁慶は多いな)
0728
02/01/15 13:10ID:O5G0YlsLあぁもうついていけない。あれ開発してるの誰だ〜
(結構有名なんでしょ〜あそこまで出来るなら)
OpenGLなMasaさんもゲーム作ってるみたいだけど、これ?
0729名前は開発中のものです。
02/01/15 14:09ID:???需要が少ないから。
0730名前は開発中のものです。
02/01/15 14:13ID:???でも最近円安のせいで原著も翻訳も値段がさほど変わらなくなってきたよね。
0731名前は開発中のものです。
02/01/15 14:36ID:???凄腕がみんなWebに露出してるわけじゃない
>>730
問題は日本語訳が無い場合だな
0732名前は開発中のものです。
02/01/15 18:16ID:???0733665
02/01/15 18:39ID:???スクリーンに投影した状態でclipするのではなく、
視錐台の各面に対してclipを行えば良いということですか?
0734業界の革命児
02/01/15 19:47ID:eNWH3kit0735名前は開発中のものです。
02/01/15 19:53ID:qNdqLW8C水滴の屈折計算の公式を教えてください。
0736業界の革命児
02/01/15 20:41ID:eNWH3kit0737名前は開発中のものです。
02/01/15 21:01ID:???0738名前は開発中のものです。
02/01/15 21:19ID:qNdqLW8C自分が知りたいのは、スネルの法則をどのように
テクスチャのUV座標として適応するのかです。
レンダリングしたシーンをテクスチャに使うとして、
屈折後の視線ベクトルがスクリーン範囲外になったときのUVの扱いとか。
0739名前は開発中のものです。
02/01/15 21:26ID:???またはコレとか。
http://www.microsoft.com/japan/developer/directx/japan/dx8/refract.asp
0740名前は開発中のものです。
02/01/15 21:42ID:qNdqLW8C水槽の屈折しかGEMSには載ってません。
また、そのサンプルもキューブ環境マップを使用したものですし。
自分が知りたいのは、PS2のタイトルがやっているような、
それまでにレンダリングしたバックバッファをテクスチャに使って
水滴を描画する手法なんです。
0741名前は開発中のものです。
02/01/15 23:34ID:ey8AFiwXバックバッファをテクスチャに使って、ふつ〜にスフィア環境マップしてみ。
後は、適当に調整だな。
すぺきゅら入れないと水滴じゃなくてガラスみたいになるかな。
0742名前は開発中のものです。
02/01/15 23:37ID:???>水滴を描画する手法なんです。
そこまで知ってるんだったら、あとは試行錯誤の連続なんじゃないかなぁ。
0743名前は開発中のものです。
02/01/15 23:45ID:???>でも彼はたかが時計で何であんなに偉そうなんだろう・・・。
偉そう?俺にはそうは見えないですな。
Wバッファに関するとんだ勘違い説明を後から気が付いても、
敢えて消さずに残すところだとか、勇気あるし、謙虚な人だと思うぞ。
0744名前は開発中のものです。
02/01/16 00:52ID:y01qost+試行錯誤はしているのですが、どうもMGS2のように綺麗にでないもので。
視点とカメラとの距離による移りこみの変化とか
ちゃんとしたモデル理論に基づいて作ればなんとかなるのかと思ったのです。
いまのところ、視線ベクトルを水滴の法線ベクトルで反射させたベクトルに、
係数を適当にかけてやっています。
もともとレンダリング済みのバッファをテクスチャに使うこと自体
フェイクっぽいので(無限遠に投影された背景と考えればいいのかな)微妙です。
0745741
02/01/16 01:01ID:uIJlyPE5その辺はやってみたんですか?
物理屋的に言えば、水の光速が空気中より遅いので、光を波と考えた場合の波面が屈折します。作図してみてください。
焦点距離が水滴を通して見たときと、まっすぐ背景を見たときで違うので、完全なシミュレーションは困難と思いますが。(被写界深度)
0746名前は開発中のものです。
02/01/16 01:10ID:y01qost+倒立虚像というのは、上下左右反転した写像のことですか。
それはやっています。
ただ水滴の位置によって微妙に映り込みが変わるんですが(MGS2)
あれがなかなか難しいんですよ。
少しでも係数をミスると、テクスチャ範囲外をUVが示して、
写像の一部がクランプしてしまうのです。
0747名前は開発中のものです。
02/01/16 01:16ID:???描画した方がいい気がする。(水溜りをまたいでキャラが進むような場合)
あとは法線が動的に動いてるものなら、軽い反射(適当な環境マップ)も入れて
みると、きれいになる気がする。(多分やってると思うけど)
流行の?フレネル項に関しては好みがあるのでご自由に(テクスチャや反射の
度合いによってはギラギラ全反射のほうが好みという人もいました)
0748名前は開発中のものです。
02/01/16 01:30ID:y01qost+水溜りなどの一般的な屈折ではなく、
カメラのレンズについた水滴の表現なんです。
0749名前は開発中のものです。
02/01/16 01:30ID:???波動方程式の吸収境界条件のいい方法キボンヌ
0750名前は開発中のものです。
02/01/16 01:34ID:???Gems1の近似モデルの奴じゃだめなの。
0751名前は開発中のものです。
02/01/16 01:40ID:???それならレンダリングよりむしろアニメーションの方を考えた方がいいような。
http://www.dtek.chalmers.se/~d1hej/smoke/smoke.zip
みたいなFFTソルバのアプローチはいかが?(水滴を飛ばしてたらすような
力を加える)とか…。
# 試さずにいってます。ゴメンネ。
0752名前は開発中のものです。
02/01/16 04:12ID:???皆さん、これ、どうやって最適化してます?
0753名前は開発中のものです。
02/01/16 04:30ID:???それってあらかじめテーブル作っておけばいいんじゃないの?
リアルタイムに計算する必要はないから、複雑でも正確なモデルで
時間かけて計算しておけばいいのでは?
0754名前は開発中のものです。
02/01/16 04:33ID:???水滴の位置によって、微妙に移りこみが変わるのは、st値にスクリーン
座標をちょっと反映させているだけかもよ。
0755名前は開発中のものです。
02/01/16 04:36ID:???そもそも法線の内挿って、どれくらいまじめにやります?
0756名前は開発中のものです。
02/01/16 08:30ID:???0757名前は開発中のものです。
02/01/16 09:33ID:???まぁ>>701は自分の部屋とWebでしか世界を認識できない
哀れなヒキコモリ厨房と思われ。(藁
0758業界の革命児
02/01/16 10:56ID:xctkAYmQやばいからもう来ない。
0759名前は開発中のものです。
02/01/16 12:44ID:???for(int i=0;i<4;i++){
float x=pV[i].x ,y=pV[i].y ,z=pV[i].z;
pV[i].x = x*cos(1.0f)+z*sin(1.0f);
pV[i].z = x*(-sin(1.0f))+z*(cos(1.0f))
}
とやっても、オブジェクトの中心以外のどこかを軸にY軸回転してしまいます。
どうすればよいのでしょうか。
0760名前は開発中のものです。
02/01/16 14:12ID:???煽りに反応すんなよ、うざい。
0761名前は開発中のものです。
02/01/16 14:39ID:???pV[i].z = (float)( z * cos(1.0) + x * sin(1.0) );
pV[i].x = (float)( x * cos(1.0) - z * sin(1.0) );
だと思われ。
0762759
02/01/16 16:19ID:???試してみましたがオブジェクトの中心を軸にしてY軸で回転させたいのですが、回ってしまいます。
下のコードのとおりです。ちなみに(966,0,966)が視点で、平行投影しています。
pFloorVB->Lock(0,0,(BYTE**)&pV,0);
for(int i=0;i<4;i++){
float x=pV[i].x ,y=pV[i].y ,z=pV[i].z;
pV[i].z = (float)( z * cos(0.1+k) + x * sin(0.1+k) );
pV[i].x = (float)( x * cos(0.1+k) - z * sin(0.1+k) );
}
pFloorVB->Unlock();
}
D3DXMatrixLookAtRH(&viewMat,(D3DXVECTOR3*)&viewFrom,&D3DXVECTOR3(966,0,966),&D3DXVECTOR3(0,1,0));
pD3DDevice->SetTransform(D3DTS_VIEW,&viewMat);
pD3DDevice->SetTransform(D3DTS_PROJECTION,&persMat);
pFloarVBの中身
pV[0].x = 500; pV[0].y = 0; pV[0].z = 500;
pV[0].nx = 0; pV[0].ny = 1; pV[0].nz = 0;
pV[0].tu0 = 0; pV[0].tv0 = 0;
pV[1].x = 500; pV[1].y = 0; pV[1].z = 932+500;
pV[1].nx = 0; pV[1].ny = 1; pV[1].nz = 0;
pV[1].tu0 = 0; pV[1].tv0 = 3;
pV[2].x = 932+500; pV[2].y = 0; pV[2].z = 932+500;
pV[2].nx = 0; pV[2].ny = 1; pV[2].nz = 0;
pV[2].tu0 = 3; pV[2].tv0 = 3;
pV[3].x = 500+932; pV[3].y = 0; pV[3].z = 500;
pV[3].nx = 0; pV[3].ny = 1; pV[3].nz = 0;
pV[3].tu0 = 3; pV[3].tv0 = 0;
0763759
02/01/16 16:20ID:???0764759
02/01/16 16:22ID:???視点が(50.0f,400.0f,50.0f)で、
注視点が(966,0,966)です。
0765突入しまーす
02/01/16 16:27ID:IQQrn/JEこのメールを確認するだけで1250円を差し上げます。
通帳の口座番号は要らない。(家に直接配達してくれる。)
わが国のサイトでもメール1通を確認すれば1〜5(円)
を貰いますが、Net先進国アメリカでは10ドルを貰います。
(広告業界はここまできている証拠です。)
このサイトはアメリカUSAのサイトで、
2002年現在日本ではほとんど加入者がいない状態です。
もう世界的に(アメリカ、韓国等で200万人以上の会員が
加入済みで実績有り)
http://www.MintMail.com/?m=1941971
このURLをクリックして入力すれば登録完了です。
0766名前は開発中のものです。
02/01/16 17:31ID:???pV[i].x = (float)( sqrtf((float)((z * z)+(x * x))) * cosf(0.1+k) );
これどうでしょか。こんな式を昔書いたようなうろ覚えです。違ったらスマソ。
0767名前は開発中のものです。
02/01/16 17:49ID:???pV[i].z = (float)( sqrtf((float)((z * z)+(x * x))) * sinf(0.1+k+atan2(z,x)) );
pV[i].x = (float)( sqrtf((float)((z * z)+(x * x))) * cosf(0.1+k+atan2(z,x)) );
0768名前は開発中のものです。
02/01/16 18:10ID:???pV[i].x = (x*cos(1.0f))+z*sin(1.0f);
pV[i].z = (x*-sin(k))+z*(cos(k)) ;
kが変化するならこうかなぁ・・・?
0769名前は開発中のものです。
02/01/16 18:16ID:???0770名前は開発中のものです。
02/01/16 18:32ID:???0771名前は開発中のものです。
02/01/16 20:02ID:???線形内挿以上の実装をしたことがない厨房です。曲がり過ぎるとバレバレ以前に
不自然なんだけど、まー仕方ない。
でも意外と、クソマジメに正規化しても気持ち良く逝けます。
逆ルートテーブル作れる隙間さえあればねぇ
0772名前は開発中のものです。
02/01/16 20:05ID:???別にあれは、masa氏の勘違いではなく、shi3z氏のいー加減な返答が引き起こしただけなのです。
0773名前は開発中のものです。
02/01/16 20:08ID:???alty、今元気かなぁ。やー、ところでなんで、120%なの?
0774名前は開発中のものです。
02/01/16 20:49ID:???0775名前は開発中のものです。
02/01/16 21:29ID:???痛い奴らの名前出すなよ、荒れるだろ
0776名前は開発中のものです。
02/01/16 21:42ID:???ところで
>線形内挿以上の実装をしたことがない厨房です。曲がり過ぎるとバレバレ以前に
>不自然なんだけど、まー仕方ない。
全部が全部、不自然に見えるわけではないので、ウチのところでは
「正規化フラグ」というアトリビュートを一つ増やして、
実際に表示させて本当に困る場合に、そのフラグを立てて貰ってます。
たくさん出てくるキャラは、手前にいる時だけ、まじめに計算させて
います。(まぁ、その手前か否かの境界線でズギャと、明るさが変わ
ってしまいますが)
とにかく実際のゲーム中でどれくらいの重要度を占めるのかをテスト
してみるまで、これといった結論は出ないと思います。
0777名前は開発中のものです。
02/01/16 22:15ID:???キャラが通った後、ちゃんと凹んでる。
0778
02/01/16 22:20ID:v7ekzje0俺もMasa先生嫌いだ。理系にありがちな陰険な香がするよ
気に入らないなら、文句いわないで黙ってればいいのに
厨房のガイシュツ質問を排除して場を良くしようと思ってるんだろうけど、逆効果だよ
0779名前は開発中のものです。
02/01/16 22:20ID:Hxpiv8sA足跡の座標を記録しておいて、
毎フレーム、ステンシルに足跡を書き込んでCSGとか。
ごめん適当。
0780名前は開発中のものです。
02/01/16 23:19ID:???あらかじめ雪を格子状のメッシュとして確保しておいて、
足が着地したときの位置が格子の何処に位置するかを計算して、
相当する部分の頂点のY座標を(なだらかに凹むように距離に反比例
して下がる量はすくなくなるように?)下に移動させる。
頂点の位置から法線の座標を再計算。
くらいしかしてないように(素人目には)みえる。
0781名前は開発中のものです。
02/01/16 23:36ID:???密かにこのスレを支えてくれたのも事実。
個人叩きはその辺にしてスレを再生しる。
0782名前は開発中のものです。
02/01/16 23:54ID:???3D野郎以外、まともなことは誰も書き込んでない気が。
初心者は享受するだけなんだから、いてもいなくても同じ。
結局このスレが駄目になったのも、
逆恨みしたアホな初心者とか、時代遅れの業界人のせいじゃないの。
0783名前は開発中のものです。
02/01/17 00:25ID:???恐るべきはあのメッシュ量を保つ為に必要になる頂点数だな。
マシンパワーごり押しだとは思うがそれなりに高度な最適化
の賜物だと思われる。
0784名前は開発中のものです。
02/01/17 01:02ID:???0785名前は開発中のものです。
02/01/17 01:47ID:???でも、これといった最適化なんてしてないんじゃないかなぁ。
NAOMI基盤は知らないけど、ps2になってあのあたり、どのように
移植されるのか激しく興味がある。
ところで、あの雪のメッシュの量って、どれくらいなのかなー?
0786名前は開発中のものです。
02/01/17 02:06ID:???転んだり、踏んづけたりして変化したところだけ手をいれればいいだけ
ならそれぞれのキャッシュメモリに収まる位の量に分割できるだろうし…。
法線の再計算も外積なんてSIMD使えば出来るだろうし…。
0787名前は開発中のものです。
02/01/17 02:11ID:???確かいたよね?
0788名前は開発中のものです。
02/01/17 02:16ID:???確かに目で桝目の最小単位は確認できたけど、それにしてもなかなか凄い
数だったよ。雪だけで数万のオーダーは軽く逝ってるのはほぼ確実。
人体モデルと背景表示をした後の余力で出来るオマケ処理にしては、
処理量、多くない?
0789名前は開発中のものです。
02/01/17 02:21ID:???と思ったけど、100×100で1万か。
でもまあ、リアルタイムで加工する必要があるのは踏んづけ部分のメッシュだけなので、
別段水面の処理とかと同じ程度の負担だと思われ。
0790名前は開発中のものです。
02/01/17 08:16ID:???氏ね。
0791名前は開発中のものです。
02/01/17 20:59ID:???DOA3>VF4>鉄拳4
でいいか?
0792名前は開発中のものです。
02/01/17 21:04ID:???0793たけし
02/01/17 21:05ID:leE9VDzpfor(int x=0;x<20;x++){
for(int y=0;y<20;y++){
for(int z=0;z<10;z++){
D3DXCreateBox(pD3DDevice,64.0f,64.0f,64.0f,&tmd[x][y][z].pMesh,NULL)
}
}
}
for(int x=0;x<20;x++){
for(int y=0;y<20;y++){
for(int z=0;z<10;z++){
tmd[x][y][z].pMesh->DrawSubset(0);
}
}
}
0794名前は開発中のものです。
02/01/17 21:13ID:???1GBメモリのビデオカード買えや。
0795たけし
02/01/17 21:26ID:leE9VDzp0796名前は開発中のものです。
02/01/17 21:29ID:???0797名前は開発中のものです。
02/01/17 21:33ID:???ネタ?それとも真性馬鹿?
64*64*64*4000*4byte計算できんの?
0798たけし
02/01/17 21:44ID:leE9VDzp初期化のときに一回だけつくります。
>64*64*64*4000*4byte
4000*(メッシュのバイト数)ではないのですか?
0799名前は開発中のものです。
02/01/17 21:50ID:dxfjMqERどんなもんなの?高校生レベルないと無理?
いままでの授業でとても3Dに関係することなんもやってないんだけど・・・。
0800名前は開発中のものです。
02/01/17 21:55ID:???ピタゴラスの定理を知っていれば充分です
0801名前は開発中のものです。
02/01/17 22:23ID:???行列や物理演算もやっとけ。
0802名前は開発中のものです。
02/01/17 22:26ID:???なぜ20*20*10個のBOXが必要なんだ?
それだけを1つのMeshとして作ってやれないか?
0803名前は開発中のものです。
02/01/17 22:27ID:???0804名無しサソ
02/01/17 22:29ID:???個別の座標変換行列が与えられて・・・という感じかな?
となると、外部・内部にかかわらずDrawPrimitiveの
呼び出しがあまりに多すぎてスピードが全然でないはず。
という訳で>802推奨。
0805名前は開発中のものです。
02/01/17 22:31ID:???まずは2Dで一次変換行列に慣れ親しめ。
とりあえず、大学生の知り合いでも連れてきて質問攻めだな。
0806名前は開発中のものです。
02/01/17 22:33ID:???それぞれを縮退三角形で結ぶ。
って、やった事ないけど。
0807799
02/01/17 22:38ID:twHAjOtc物理演算って力学とかいうやつですか?
放物線運動とかですか?
0808名前は開発中のものです。
02/01/17 22:43ID:???キャラが飛んだり跳ねたりするのにも使うし
キャラのコスチューム(布とか)動かすのにも
必要になる。
0809名前は開発中のものです。
02/01/17 22:51ID:???sage進行でマターリ行きましょう。
下がりすぎたらたまにage。
そうしないと荒らされるから。
0810名前は開発中のものです。
02/01/17 23:10ID:???てきとーに動くコード拾ってきて、組んでます・・・。
RMなら割とそれっぽいのが・・・
座標変換は全部Frame任せです。
コリジョンには四苦八苦だけど。
0811名前は開発中のものです。
02/01/17 23:10ID:???>と思ったけど、100×100で1万か。
仮に1辺が100だったとしても 100*100*2 で2万です。
あと、ティーポット類の実験とは違って、クリッピングやシザリングも必要。
地面スレスレのカメラとか平気でありますし。
0812たけし
02/01/17 23:25ID:leE9VDzp>804
立方体ひとつひとつにパラメータを持たせたかったのですが、何かいい方法ありますか?
0813名前は開発中のものです。
02/01/18 00:01ID:???全く同じ形状のメッシュを4000個作るのが無駄なんだよ。
形が同じなら1つのメッシュを4000回使い回す。
どうせ頂点座標いじったりしないんでしょ?
0814名前は開発中のものです。
02/01/18 00:10ID:???| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| 世の中に棲む逝きとし逝けるもの |
| すべてが自由に平和に平等に美しく |
| 明るく楽しく暮らせる幸福と善意と |
| 優しさと愛とマターリに満ちた世界を |
| 要求する。 |
|__________________|
∧∧ ||
. ( ゚д゚)||
/ づΦ
0815たけし
02/01/18 00:20ID:DOLbCMUFなるほど。ポリゴンとは別にプロパティの配列を作ればよかったのですね。
頂点は、ワールド座標の原点を中心に20x20x10の立方体(マップデータなので、ところどころ空きはありますが)をY軸で回転させる予定なのですが、大丈夫でしょうか。
0816たけし
02/01/18 00:20ID:???0817名前は開発中のものです。
02/01/18 00:23ID:???仮に2万だとしてもステートの変更とかがなければそんなにたいした負荷になるとは思えない
けどなぁ?結構な大きさのばねメッシュの水面を実装したことがあるけど、表示用と計算用に
ダブルバッファでデータ持てば毎フレーム全頂点書き換えてもたいした負荷にならない気が
する。(大体雪なら全部のメッシュを毎フレーム書き換える必要なさそうだし)
ハードウェアTnLならシザーの心配なんてさほどいらないだろうけど(一部クソハード除く)
これも雪面を全部一個で考えずに、部分ごとに分ければ負荷は減らせるでしょ。
近くてクリップが必要なときは見えなくなる部分をボリュームかリングする事で負荷を減らす
事ができるだろうし、遠くはなれた部分はシザーする必要ないでしょ。(ガードバンドの中に
収まるのでリジェクトでOK)
0818名前は開発中のものです。
02/01/18 00:26ID:???ややこしい書き方するなや、3Dでサイズは無意味。
0819たけし
02/01/18 00:30ID:???0820名前は開発中のものです。
02/01/18 00:42ID:???無意味というかカメラ位置や変換マトリクスによっていくらでも大きさが変わるだろ。
単に「立方体」で十分だよ。
0821たけし
02/01/18 01:16ID:???なるほど。
ところで、メッシュを作ったのはいいのですが、そのメッシュを20x20x10並べる方法がわかりません。
GetVertexBufferを使って頂点バッファを取得し、
DIRECT3DVERTEXBUFFER8のLockで頂点データを取得してそれを操作するのでしょうか。
3次元配列の地形情報等のデータなどが入ったものをどう適用すればいいのかわかりません。
0822名前は開発中のものです。
02/01/18 01:19ID:???0823たけし
02/01/18 01:23ID:???0824名前は開発中のものです。
02/01/18 01:28ID:???0825名前は開発中のものです。
02/01/18 01:30ID:???答えてやらないと「出し惜しみするなゴルァ」とか言われるよ
0826名前は開発中のものです。
02/01/18 01:35ID:???それはそうと、よく考えたらこの板
「初心者はここで聞け!DirectX相談室」スレないのな。
■ このスレッドは過去ログ倉庫に格納されています