トップページgamedev
1001コメント343KB

出し惜しみせずに3Dの技術を誰かが答えます

■ このスレッドは過去ログ倉庫に格納されています
0001101/11/15 21:43ID:EsRJgfGr
3Dで解らない事や気になる技術の具体的内容を
誰かが答えます。
じゃんじゃんネタ振ってくれ。

俺も業界で飯食ってるが知ってる事は出し惜しみせずに
答えるよ。みんなでレベルアップしようぜ。

とりあえずBBXとBio120%の過去ログは見とけ。
0101名無しさん@お腹いっぱい。01/11/21 22:30ID:???
>>98
トランスフォーム済みの頂点フォーマット
使っちゃダメ?
2Dスプライト的に使うならD3DFVF_XYZRHWを
使えば十分。
3DでやりたいならCマガジンの10月号で
似たような記事があったよ。

>>100
まっageてくれたからいいじゃん。
おれ的には初心者の質問もOKだと思うよ。
0102名無しさん@お腹いっぱい。01/11/21 22:57ID:???
>>99
>kano氏もいぢわるしないで日本語でバカにも解るように
>解説してくんねーかなぁ。

掲示板やメールで質問してみるとか。
ここも見てるだろうけどリアクションは無いと思うのん。

つうかKanoさんモテモテね。きゃは。
0103名無しさん@お腹いっぱい。01/11/22 00:34ID:hpjXjtgw
http://www.genki.co.jp/soft/phantomcrash/system/index.html
このエフェクトやってみたいんですが仕組みについて
ヒントだけでも聞かせてもらえないですか?
0104名無しさん@お腹いっぱい。01/11/22 00:54ID:GSH8d9fw
>>103
上で散々っぱら話されている動的スフィアマップと大体同じ考え
なんじゃないかな。
違うのはテクスチャー行列(というかテクスチャの座標変換)
を反射から屈折にするくらいかな。
っていうか屈折って行列で表現できるのかはわからないけど。
0105名無しさん@お腹いっぱい。01/11/22 01:15ID:???
某掲示板ではバックバッファの絵をテクスチャにして、
モデルの頂点を透視変換かけたものをuv座標に
してから適当にずらすとかあったが。(んなアホな)

他の可能性としてはバンプマッピングも
考えられんか?おれには解らんが。
0106名無しさん@お腹いっぱい。01/11/22 01:18ID:???
>>103
別に、動的スフィアみたくテクスチャを変形しなくても
背景をテクスチャにレンダリングしてそれをそのまま
環境マップ用のテクスチャとするだけでそれっぽく見えないかな?
変換の式を適当にいじる必要はあるだろうけど。詳細はわからんっす。

屈折マッピングについては
↓聖地とか
http://developer.nvidia.com/view.asp?IO=Refraction_paper
↓聖書とか
Game Programming Gems
・・・にあります。
0107名無しさん@お腹いっぱい。01/11/22 01:21ID:???
>>105 かぶった。しかも(んなアホな)っていわれてるし。(;;)鬱出汁脳
0108名無しさん@お腹いっぱい。01/11/22 01:29ID:???
屈折マッピングをちゃんとやろうと思ったら
動的キューブ環境マップか動的スフィアが
必要になってきて速度的にヤバそうだな。

>背景をテクスチャにレンダリングしてそれをそのまま
>環境マップ用のテクスチャとするだけでそれっぽく見えないかな?

この路線がいいとは思うがそのままだとうまく
いかんと思うなぁ。
0109名無しさん@お腹いっぱい。01/11/22 01:38ID:???
>>108
普通に考えると、
>背景をテクスチャにレンダリングしてそれをそのまま
>環境マップ用のテクスチャとするだけでそれっぽく見えないかな?
このやり方では映り込んでいるように見えると思う。
屈折させたいなら環境マップとテクスチャ座標の計算式は
変えなきゃだめだと思う。
0110名無しさん@お腹いっぱい。01/11/22 01:43ID:???
>屈折させたいなら環境マップとテクスチャ座標の計算式は
>変えなきゃだめだと思う。

Gemsにもあるスネルの法則ってやつで
屈折させるんだと思うけど、どこにどーやって
組み込むんだろう。
環境マップも頂点シェーダーで独自で計算とか?
0111名無しさん@お腹いっぱい。01/11/22 01:45ID:???
あのエフェクト下から徐々にかかってる。
0112名無しさん@お腹いっぱい。01/11/22 01:45ID:???
描画面の法線の角度をN
光の進入角を-Nと考えると、結構簡単に屈折した法線角を
でっちあげることはできそう。
0113名無しさん@お腹いっぱい。01/11/22 01:50ID:???
きっとIF氏が今作ってるんだよ!
0114名無しさん@お腹いっぱい。01/11/22 01:55ID:???
Gemsは2冊とも持ってるけど、一つ一つの技術はとてもために
なるんだけど、なんか小手先みたいな感じがして積極的に
ゲームに取り入れる気がしないよう。
もっと包括的に、シーングラフレベルでのテクニックみたいなの
はないかなあ。シーングラフで屈折マップも表現できるのなんて
無いか。
011510601/11/22 02:32ID:???
背景をまんまテクスチャ化

SetTextureStageState(1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2)
SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACENORMAL)
・・・とかやってみる。

マトリックスをゴニョゴニョ

屈折まっぷ(゚д゚)ウマー


とか、こんな程度でなんとかならんもんかと妄想してみる俺・・・
0116名無しサソ01/11/22 09:32ID:???
 いきなりログが進んでるね(笑)屈折マッピングもCubeMapか
SphereMapを使うと良いとは思うけど、光学迷彩はそこまでしなく
ても良いんじゃないかな。透過する背景が遠方にあると仮定して、
屈折した先の光線の角度を視野角内に何とかして収めれば、
フレームバッファをそのままテクスチャに使えると思う。多分(適当)。
厳密にやるならPixelShaderとかの出番だね。真面目にやるか
汎用性・高速性を取るか。PSのMGSでもそれなりに見えるから、
自分は後者で良いかな。
0117名無しサソ01/11/22 09:38ID:???
 連続ゴメソ。

>95
 SphereMapは球の表面に映り込む風景だから、単純に
視野角を狭めるだけではおかしくなると思う。>96のはその通り。
これはCubeMapも一緒だね。解説は>97にも紹介されている
けど、bio100%の3DFollowsBBSにその話題が出ているから、
リンクを辿ってみて。ちなみに、自分が話しているのは>97の
ようなCubeMapからSphereMapを作るの方法ではなくて、直接
ShereMapを描画する方法。

>99
 当たり前の話だけど、人間の目って動く物体の映り込みの
中身まで、そんなに見ていないよ。と言うわけで、ローポリで
十分だし、実際にもそうされていると思う。GT3でもよく見ると
案外省略されまくってるし。ただ、動的か否かはやっぱり違うね。
0118名無しさん@お腹いっぱい。01/11/22 10:03ID:???
X-boxのgothamは動的環境マップしてるがどういう方法?
0119名無しさん@お腹いっぱい。01/11/22 10:08ID:???
あのロボットの頭部は球状に近い形なわけだけど
その形をレンズに置き換えて見ると向こう側の絵は
虫眼鏡のように拡大されるはずじゃないですか。

それが環境マップのように縮小されて張られているけど
おかしくない?
0120115=10601/11/22 11:58ID:???
しまった。
D3DTSS_TCI_CAMERASPACENORMAL
じゃなくて
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
だった。
・・・つってもただの妄想なんでいちいち訂正せんでもいいが。
0121名無しさん@お腹いっぱい。01/11/22 13:44ID:/aoY3CGV
>>113
IF氏って誰?
0122名無しさん@お腹いっぱい。01/11/22 13:57ID:???
これだと思われ。最近注目株(俺的に)
http://www5.tok2.com/home/IF/index.html
0123名無しさん@お腹いっぱい。01/11/22 14:13ID:3nhjK6yd
>>122
Thanks。解説が詳細でイイ!
0124名無しさん@お腹いっぱい。01/11/22 21:32ID:hpjXjtgw
>>名無しサソ
>屈折した先の光線の角度を視野角内に何とかして収めれば、
>フレームバッファをそのままテクスチャに使えると思う。多分(適当)。

その計算式が解るなら苦労しないんだけど。
いまいち根拠にとぼしいから試す時間を裂けん。
もしかして成功例とかある?

>>120
>D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR

試してみたが屈折というより反射に見えるじゃないか。
その妄想完成させてくれよ。
0125名無しサソ01/11/22 21:58ID:???
>124
 申し訳ない。こちらも時間が割けないのは同じでね(苦笑)

 光学迷彩は上に書いてあるようにBBXの少し前のログに
残ってるよ。11月3日の書き込み。そこから実践している
ページもリンクされているので辿ると良いよ。個人的には、
あんまりここで直接リンクを張りたくないんだけど、良いのかなぁ。
自分はちょっと嫌な物で。
0126名前は開発中のものです。01/11/23 00:04ID:???
ム板にあったリンクのことかな?
それなら、JAVA、3Dあたりの用語でわかる人はわかるかと。
012712401/11/23 01:12ID:???
>>名無しサソ
>光学迷彩は上に書いてあるようにBBXの少し前のログに
>残ってるよ。11月3日の書き込み。そこから実践している
>ページもリンクされているので辿ると良いよ。個人的には、

さんきゅ〜。確かに実践してるんで参考になるよ。
やっぱ実際に見ると感動があるね〜。
あれなら時間裂いて試す価値あり。

ただ120の言ってる環境マップを利用した方法も
可能じゃないのかなぁと期待はしてたりする。
あとバンプ利用するとピクセル単位で屈折を
表現出来そうで面白そうだなぁ。
0128名前は開発中のものです。01/11/23 05:39ID:???
Q座標生成すればそれなりには見えるんじゃない?
012912001/11/24 08:33ID:???
>>124 あ、実験どうもです。
そうですか、反射に見えますか・・・なるほろ。今後の参考にします(^^
#って、自分の妄想の実験を人任せにする奴
0130名前は開発中のものです。01/11/27 17:11ID:???
あげー
0131名前は開発中のものです。01/11/28 15:08ID:???
最近一部で話題の動的環境マップとか半球ライティングとかって
実際にゲームで使われてるのかなぁ?
このゲームは凄いよみたいな情報キボンヌ
0132名前は開発中のものです。01/11/28 17:21ID:???
Dual Paraboloid動的環境マップは
某箱用のゲームで使われていくハズ。
0133名前は開発中のものです。01/11/29 01:06ID:???
Dual Paraboloidとキューブ環境マップは
どっちが高速に処理できるんだろ?
つーか動的環境マップで一番実用的なのはどれ?
0134名無しサソ01/11/29 10:40ID:???
 半球ライティング、ってテクスチャによるライティング技術・・・だよね?
だとセルシェード系はこれを使っているのでは?他に高速で実現出来る
方法を知らないだけかも知れないけど。

>133
 現状ではCubeMap以外選択肢がないかも。GeForce/Radeonが
それなりに普及していて、でもShaderがそれ程普及していない現在だと。
自分はSphere派だけど、あまり未来はないと感じてるよ(苦笑)
0135名前は開発中のものです。01/11/29 13:46ID:???
ちなみに、静的なDual ParaboloidはShader無くても使えるよ。DX7で十分。
もちろんTnLHALで可能。詳しくはHeidrichのオッサンの論文でも読んで。

動的生成の場合のネックは座標変換とZテストかな。
1枚のテクスチャがカバーする視野が180度なおかげでクリッピングが簡単だから、
描画負荷はSphereとそう変わらないレベルになりそう。テクスチャは2枚だと
RenderTargetの切り換えで遅くなりそうだから、1枚のテクスチャをViewPortで
分けて使うのがいいかと。

>>134
半球ライティングとテクスチャは関係ないよ。
テクスチャを併用するとShaderでは内積を1回計算するだけで済むから、近似
としてテクスチャが使われることはあるけど。ただ、テクスチャを使ったシェー
ディングはテクスチャのサイズをかなり大きくしないとマッハバンドが目立つ
のが欠点。
0136名前は開発中のものです。01/11/29 14:32ID:???
>>135 Dualほにゃららマッピングでテクスチャを動的生成する場合、
座標変換は具体的にどうやるんですか?
0137名無しサソ01/11/29 14:47ID:???
>135
 いや、現状でテクスチャ以外で実装している人は居るのかな、と。
・・・・・良く考えればShaderが使えるよの中だから、居そうだね(自滅)
マッハバンドは嫌な欠点だね。使いどころを考えないと。
0138名前は開発中のものです。01/11/29 23:04ID:???
的確に回答しすぎると正体が・・・
0139名前は開発中のものです。01/11/30 01:05ID:poVUBJ45
>>136

おれもDual Paraboloidは全然理解してないけど
頂点の座標変換ならココで説明してる気がする。
http://www.opengl.org/developers/code/sig99/advanced99/notes/node185.html

このページの説明を実践すれば欲しいテクスチャが2枚生成されるって
事でよいかな?試した人いる?
0140名前は開発中のものです。01/11/30 01:47ID:???
139と似たような資料がnvidiaにもあったような気がする。
誰か試した?
014113501/11/30 03:06ID:???
>>136
Dual ParaboloidはD3DTSS_TCI_CAMERASPACEREFLECTIONVECTORを使うわけだけど
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTORで自動的に計算されるベクトルと、
環境マップされる物体から環境までのベクトルとの関係を考えれば簡単に分かると
思いますよ。
# ズバり答えを書いてもいいけど、図でも描いて自分で考えてみてください :-)
# これって出し惜しみ?

SphereMapの場合は、ハーフベクトルを求める必要があるんですよね?>やった人
そのコストを考えると、Dual Paraboloidでも座標変換のコストはほとんど変わら
ないと思います。
0142名前は開発中のものです。01/11/30 07:52ID:???
質問です。
DirectXでトゥイーニングを使った 人物のアニメーションを自前でつくろうとしているんですが、
メタセコイア を使って同じ頂点数で ポーズの違うXファイルを2つ用意して、時間によって頂点座標を
線形補完させるというやりかたをしようと思ったんですが、
モデリングした2つのXファイルの頂点情報の並び方が違ってしまいます。
座標を変えても同じ頂点情報の並びになるようなモデリングソフトを誰か知りませんか?
014313601/11/30 12:57ID:???
>>141
いや、なんか基本的なことが解かってないんで申し訳ないです・・・
Dual〜とかsphere用のテクスチャを作成する際に
テクスチャに対してレンダリングしますよね。

その時に座標変換用のマトリックスを作成して透視変換をかけると
思うんですが、これって通常のプロジェクションマトリックスの替りに
環境マップ用のものにすれば良いということですか?

なんか、レベル低くて申し訳ないっす・・・鬱氏
0144名前は開発中のものです。01/11/30 14:54ID:???
>>142 一つのモデルをつくって、ポーズを変えたものを
2パターン作ればすむ話では?
0145名前は開発中のものです。01/11/30 21:09ID:poVUBJ45
>座標を変えても同じ頂点情報の並びになるようなモデリングソフトを誰か知りませんか?

市販の3Dソフトならだいたい出来ると思うけど。
使った事ないけどフリーならMikotoってのもあるが。
http://www2.nbn.ne.jp/~you-ri/cgi-bin/?11271800
http://niigata.cool.ne.jp/cyphers/tuft/miko/

それより頂点列の並びが変わるってのは元データを
少しいじってXファイルにしても元データと並びが
変わってるの?普通あまりありえんと思うけど。
0146名無しサソ01/11/30 21:35ID:???
 出し惜しみしないで答えていると、素性が知れてしまう罠(汗)
案外こういう事している人達って多くはないのかな?

>141
 ハーフベクトルという言葉の詳しい定義は知りませんが、
全天球の空間を半球の空間に変換する計算の事でしょうか?
多分それ程負荷は変わらないかと。クリッピングを除けば。
しかし、どうも知っている人のような・・・(笑)

>142
 そう言う物なの?>144の話している通りでは駄目なのかなぁ。
マテリアルとかを変更していると変になりそうだけど。元が同じ
モデルで頂点座標だけ移動させる限りは大丈夫のような。
0147名前は開発中のものです。01/11/30 21:45ID:???
半球の空間に変換する前に半球の空間に
入らないポリゴンはクリッピングで省くんですか?
でもそれを判定するには座標変換しないとわからない
と思うから結局半球への変換は背景モデルを2回
座標変換するって事?
もしそうだとスフィアの2倍変換が必要になるけど。
0148名前は開発中のものです。01/11/30 22:37ID:???
>>146
出し惜しみしないで質問しまくると厨房と呼ばれてしまう罠(鬱)
しかも、某BB※とか野朗BBSでも同じく教えて君な俺…
#いや、低レベルな質問には答えるようにしてますってば。(←それしか答えられない)
014913501/12/01 01:11ID:???
>>145
ハーフベクトルは、ようするに2つのベクトルのニ等分角のベクトルです。
ttp://www.microsoft.com/japan/developer/directx/japan/dx8/SpecularLight.asp
ついでなので、DynamicSphereEnvironmentMappingのページを見てきたけど、座標変換に
三角関数使ってるんですか?ベクトルで計算するともっと簡単だと思いますよ。
長さが同じ2つのベクトルを足すと、それだけでハーフベクトルが求められます。
SphereMapの座標系で計算してるなら、ハーフベクトルを正規化すればそのx,y成分がその
まま求めたい座標になると思います。

DualParaboloidの場合は位置ベクトルに行列1つ掛けてxとyをzで割ってあげればいい
のかな?あまり変わりませんね。

SphereMapもDualParaboloidも実際には試してないので、嘘ついてたらゴメン :-)
DualParaboloidはVertexShaderだけで実現するメドが立ったので、暇ができたら試して
みます。

>案外こういう事している人達って多くはないのかな?

してても表で発言できない人は多いと思います。

>>147
DualParaboloidの1つのテクスチャに必要な視野は180度だから、カメラの前か後ろか
の判定だけでクリッピングできますよ。その判定はカメラの方向ベクトルのz成分と物体
への方向ベクトルで内積を計算するだけです。

ちなみにSphereMapもDualParaboloidも極点が存在するので、クリッピングしないと
カメラの正面や真後ろをまたぐポリゴンが画面を覆ってしまう問題があります。
SphereMapでは極点がテクスチャの必要な領域に存在するので困りますが、DualParaboloid
では極点がテクスチャの外側になるので単純にクリップするだけでほとんど解決でき
るかと。クリップしなくても頂点のα成分にカメラの方向ベクトルのZ成分との内積を
入れれば、αテストで背面のポリゴンは消せそうですね。座標変換のコストは減りませんが。
0150名無しサソ01/12/01 12:39ID:???
>149
 あ、言葉通りの意味ですか(笑)

 で、実際に言われているとおり足して単位化すれば済む話
でしたね。最初に考えて、確か計算量が多そうだと勝手に
思い込んでいたようで・・・(駄目人間)

で、書き換えたコードはこんな感じです。

D3DVECTOR v,half;

FLOAT cosa = sqrt((1.0f+v.z)*0.5f) * 0.5f;
v.z = 0;
v = Normalize(v);
の部分を

half = v;
half.z -= 1.0f;
half = Normalize(half);

に。平方根が見事に減ってますねぇ(汗)ご指摘どうもです。
015114701/12/01 15:39ID:???
>>149

おお、丁寧な説明のおかげでだいぶ頭の中にイメージが
出来てきた。クリッピングのコストが少し心配だけど
スフィアよりちょっと負荷がある程度ですむのかな。
これならVertexShader化まで試してみたくなるなぁ。暇ねーけど。

ちなみに俺は148じゃないよ。某BBSはロムってる。
先輩方サンキューです。
0152名前は開発中のものです。01/12/01 16:54ID:Of8w23Ey
ポリゴンの乳揺れはどうやっているんですか?
動画じゃなくってすごいヤツ見ました。
0153名前は開発中のものです。01/12/02 03:30ID:k+1aWkNw
簡単なものなら乳の中にボーン通してそのボーンを
バネモデルで揺らせば出来そうだが。
エターナルアルカディアとかは町の人も髪や服が
揺れてるけどボーン方式とクロスの2種類な感じ。
プログラムで一人づつ作っていくなら量的に大変そう。
0154名前は開発中のものです。01/12/03 11:53ID:???
>>153
やっぱ、髪の毛とか乳みたくプログラムで特別に制御するモデルって
他の部分とは別で持つの?
それともモデル中にフラグ立てて管理してる?
015515301/12/03 21:18ID:???
おれが作った時は別モデルにして後からくっ付けたよ。
3Dソフトも布とかは跡付けでやってるし。
デザイナがモデリングした服とかの一部を揺らそうと
思うと頂点が等間隔じゃないからやりずらくないか?
015614301/12/04 11:30ID:???
すんません、>>143の質問なんですけど・・・
どなたか出し惜しみせずに教えていただけないでしょうか?(;;)
0157名前は開発中のものです。01/12/04 13:31ID:???
>>143
行列だけでは無理ですね。VertexShader使うか、自分で変換する必要があります。
SphereMapもDualParaboloidも途中で正規化が必要になるので。

>>154
乳はボーンで処理するなら、制御するのはボーンだけでいいから、フラグ立てる
ならボーンの方ですね。
0158名無しサソ01/12/04 13:33ID:???
>156
 今までのレスを見ていれば分かりそうなんだけど・・・
ただ「分からないから」教えてくれ、と言うだけじゃ進歩が
無いよ。直接のレスでなくてもちゃんと関連する話題も
あったのだし。

 投影行列に何か指定するだけで良いのであれば、
Shaderなんてわざわざ使おうとはしない。視野角を
180度に近くしても、球面上に映り込んだときの歪み
は再現できない。擬似的に出来ると思うのだったら、
自分で試してみるべし。
0159名無しサソ01/12/04 13:34ID:???
 被ってしまった・・・(苦笑)
0160名前は開発中のものです。01/12/04 13:57ID:???
>>157-158 ありがとうございました。
やはり、自前変換が必要なんですか・・・
たしかに、頂点座標を変換するだけでは球状のゆがみなんて再現できないですよね。
#ポリゴンを細かく分割していけば擬似的には再現できるかもしれないですが。
行列だけで何とかお手軽に、と思ってたんですが甘かったですね。
頂点シェーダーについても、もっと勉強してみます。
0161名前は開発中のものです。01/12/04 21:32ID:???
>>158
おいおい、このスレの性質からして教えて君が聞くのは
当たり前なんだよ。むかついたんなら無視しろよ。
誰かが質問して誰かが答えないとこのスレなりたたないよ。

>>160
http://www.daionet.gr.jp/~masa/column/98-11-07.html
masa氏のコラム参考になるぞ。
やった事は無いが背景ポリゴンの頂点座標からターゲットの
座標を引いて単位化したベクトルをm=2*sqrt(x*x+y*y+(z+1)*(z+1))
から書かれている式に入れればuvが求まると書いてある。
これで変換したポリゴンをTLVERTEXでレンダリングすればよさそう。
まずはCPUで頂点変換して物が完成してからシェーダー化
すればいいんじゃないの。
0162名前は開発中のものです。01/12/04 23:17ID:???
>>161
masaさんのページ見たけど、
その式はどうやって導出したものか説明がないですね。
教えて欲しい。
0163名無しサソ01/12/04 23:39ID:???
>160
 いや、別にむかついた訳じゃないんだけど・・・
話題がちゃんとでていたのだから、>156でもうちょっと
分からないことを絞って欲しかっただけだよ。気分を
害したのなら申し訳ない。マターリと行こう。

 と言うわけで折角だからソース公開。汚いけど気合いで
読んでもらえると幸い。

D3DMATRIX vmat,wmat //vmat:ビュー変換行列 wmat:モデル変換行列
D3DVECTOR v,half; //v:単位化した頂点座標 half:ハーフベクトル
WORD a = *pTIndices; //頂点のインデックスを取得

wmat = *pMatrixStack->GetTop(); //モデル変換行列を取得
pd3dDevice->GetTransform( D3DTRANSFORMSTATE_VIEW,&vmat); //ビュー変換行列を取得
v = *((D3DVECTOR*)&pVertices[a]); //モデルの座標を取得
D3DMath_VectorMatrixMultiply(v,v,wmat * vmat); //ビュー座標への座標変換
v = Normalize(v); //vの単位ベクトル化
half = v;
half.z -= 1.0f; // vに視点ベクトルを足してハーフベクトルを算出
half = Normalize(half); //ハーフベクトルの単位化
m_pTLVertices[NumVertices].sx = half.x * 0.5f + 0.5f;
m_pTLVertices[NumVertices].sy =-half.y * 0.5f + 0.5f;
m_pTLVertices[NumVertices].sx *= viewport.dwWidth;
m_pTLVertices[NumVertices].sy *= viewport.dwHeight; //テクスチャのUVテクスチャ座標に変換

こんな感じ。
0164名無しサソ01/12/04 23:41ID:???
 補足:zの値は距離の絶対値で取っているけど、平方根は
重そうなので2乗のままで保持していたり。この辺は適当で良いかも。

 ただ、ライティングはこのままだと不可能。個人的にはやっても意味は
あまり無いと思っているので、していない。
0165名前は開発中のものです。01/12/05 00:53ID:o0Rw16Fu
>ただ、ライティングはこのままだと不可能。個人的にはやっても意味は
>あまり無いと思っているので、していない。

あ、やっぱり。シェーダー考えるとライティングどうしようかなぁ
って思ってた。クランプとかいろいろちゃんとやると結構速度低下
するから省くか頂点カラーかどっちかがいいかなと。
でもアンビエントぐらい足してやりたいなぁ。
0166名前は開発中のものです。01/12/05 01:06ID:???
BRDFってGeForce3だとリアルタイムでいけるのか?
最近よくBRDFって聞くから気になる。
http://tom.g-micro.co.jp/graphic/01q1/010227/geforce3-23.html


#そういや半球ライティングとかの説明が出てた。
#DIYライティングが気になる。
http://www.microsoft.com/japan/developer/directx/welcome/dsmsdn/directx11192001.asp
016716001/12/05 01:30ID:???
>>163 うおおお!ソースまで公開してもらって感激っす〜。
早速、教えてもらった部分を理解できるよう努力します。
#見ただけではすぐに理解できない辺りが・・・
俺的に今年度最高の名スレ&名レス認定。

>>161 教えて君で申し訳ない。
元々数学的素養が欠如してるので最近の3Dマンセーな開発事情は
辛いんですよ…いや、飯の種なんで頑張りますけどね。鬱氏。
0168名前は開発中のものです。01/12/05 01:35ID:???
>>162

ひょっとしてこれって説明じゃ。
http://www.opengl.org/developers/code/sig99/advanced99/notes/node177.html#s.equation
0169名前は開発中のものです。01/12/05 02:03ID:???
>>164
vの正規化の時点で距離は求まってるから、それを利用するといいかと。

それと、ライティングはオブジェクト空間で計算するといいですよ。
法線を変換するのではなくて、ライトをオブジェクト空間に変換します。
描画前に1回だけライトを変換すればいいので、法線を変換するよりも
計算量が少なくなります。スキニングとかの関係でオブジェクト空間では
処理できない場合もありますけど。
(いま書きかけのシェーダー関係のhtmlに全く同じ事書いてあるから、ます
ます身元がばれてしまうな)
0170名無しサソ01/12/05 02:14ID:???
>160
 プロの人?となると将来何かいい結果が目に見えて
生まれるのかな?期待してます(笑)

>169
 あ、Z値はどうにかしてますです。上のコードには簡単の
為に書いてないだけで。あと、ライティングは実用では
わざわざする程の効果はあるのかな、と。ちゃんとする
のであれば、オブジェクト座標系が多分効率がいいでしょうね。
0171名前は開発中のものです。01/12/05 10:47ID:DEoHzlOJ
>>160
マジでお金貰ってコード書いてる人?
それだけが知りたい。
017216001/12/05 11:37ID:???
そうですが、あまりつっこまないで・・・
まぁ、プロにもピンからキリまであるって事っすよ。
低層プログラマの憂鬱・・・鬱出汁脳
0173名前は開発中のものです。01/12/05 13:27ID:???
http://www.xbox.com/projectgothamracing/default.htm?det=1

動的環境マップをやるならこれくらいやらないと。
ムービーで確認せよ。
0174名前は開発中のものです。01/12/05 14:19ID:???
>>173 これってXBOXってことはCube環境マップ?
ハードに任せりゃできるってんなら、それでもいいんだけどな
0175名前は開発中のものです。01/12/06 22:07ID:???
某氏が反応していたのでコピペしとこう。
このスレいい資料になりそうだ。

>>149
双放物面のクリッピングで、環境マップ空間のZ座標をアルファに入れて
アルファテストで処理するというのは、僕のアプローチにかなり近いです。
ただ、僕のデモでは、ヘリコプターのプロペラの部分に既にアルファを
使っているので、代わりに texkill を利用しています。

注意すべきことは、頂点座標が非線形変換されるため、
線形補間されるZ座標が必ずしも正しい値にはならないということです。
うまく処理しないと、単位円の内部でクリップされてしまう場合があります。

あと細かいことですが、双放物面マッピングは View-Independent なので、
カメラ空間と環境マップ空間のZ軸が一致する必要はないですね。通常は、
環境マップ空間とワールド空間の基底を一致させると使いやすいと思います。
キューブマップの場合も、そうすることが多いですよね。
0176名前は開発中のものです。01/12/06 22:16ID:???
ノクターンのボリューメトリックソフトシャドウって
どうやってやるんだろうね?

http://www.nocturnegame.com/screensbig/set2-3.html

「各ピクセルについて、各光源からの明るさの寄与を計算して
アルファ部に足していき、最後にピクセルの色にアルファ部を乗算する」
これがNocturneの照明システムの基本だそうで、「光源からの光が他の
ポリゴンに遮蔽されていれば、光源からの明るさの寄与が少なくなるため、
結果的に影になって見える」という理屈です。
#BBXの記事より。
#他に資料ない?
0177名前は開発中のものです。01/12/06 22:36ID:???
コピペはやめれ。
リンクだけにすれ。
0178あっちのROM(スマ01/12/06 23:00ID:???
リンクもやめてくれえ。
0179名前は開発中のものです。01/12/07 00:26ID:???
コピペは止めるけどリンクはいいっしょ?
だって個人ページの掲示板や日記からもリンクしてるし。
0180名前は開発中のものです。01/12/07 00:48ID:???
|    ____   ジー…
|   /::::::::    ヽ
| /::::::::      彡彡彡
| /::::::::::  ヽ     彡彡彡
|/::::::::          ヽ
|::::::::   ノ   ヽ   |        ∧         ∧
|::::::::::           |        / ヽ        ./ .ヽ
|:::::: ヽ        /        /   `、     /   ヽ
|:::::::         /        /       ̄ ̄ ̄     \
|::::::::::      /         l:::::::::   /      \   .l
|::::::::     /          |::::::::::                  |
|::::::::     /            |:::::::::::::::::   \___/    |  >>179 変なAA貼られたりすんのが嫌なんじゃない?
|       /            ヽ:::::::::::::::::::  \/     ノ
|      /              丶::::::::          ノ
0181名前は開発中のものです。01/12/07 01:34ID:???
>>175
その某氏だが、引用元を明かさずコピペしたことにご立腹だ。
とりあえず逝って謝ってこい!
#BBSじゃなくてメールでな。下らん謝罪であっちのBBSを汚すなよ
0182名前は開発中のものです。01/12/07 01:50ID:???
そんなん言ってもここは匿名掲示板だぞ?
引用元を隠した配慮ってやつだったんだけどね。
それじゃココでやったんだしココで謝る。
このスレに反応してくれてたんでせっかくだから
コピペしとこうと安易に考えちゃった、てへ。
今後はしないから許してね〜。
0183名前は開発中のものです。01/12/07 05:14ID:???
>>182

ま、コピペなら引用元を隠す配慮になるってーのも都市伝説だから。
数週間待てば検索エンジンで大抵出てくるんでね。みんなやってる。
0184名前は開発中のものです。01/12/07 06:49ID:???
引用元と引用部分を明確にしないと著作権法にひかっからないか?
とか言ってみたりして
0185名前は開発中のものです。01/12/07 07:31ID:???
まあ2chも無法地帯ではないっつーことで
0186名前は開発中のものです。01/12/07 08:03ID:???
>>182-183
「引用元を隠す」ことが、誰に対する「配慮」になるのですか?

日本人は、欧米に比べて引用 (quotation) に対する認識が甘いな。
0187名前は開発中のものです。01/12/07 08:22ID:???
しかし某氏もデュアルほにぁららか言って出し惜しみ
っぽいところがあるのが見てて嫌だな。
もう少し自分のところで日本語でしっかり情報を
まとめてくれればなぁ。
0188名前は開発中のものです。01/12/07 11:56ID:XSYO4iDK
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  >>187 中学生かお前は。
_と~,,,  ~,,,ノ_. ∀  \_________
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
0189名前は開発中のものです。01/12/07 11:57ID:???
>>187 しかし、どの程度自分の知識を披露するかは
完全にその人にゆだねるしかないからな〜。
無知な奴は知識のある人に頭下げてお願いするしかないのが普通だろ?
ましてやアカの他人匿名でがその人を出し惜しみとか言うことじたい、
お前何様よ?って感じなんだが。

日本語にまとめてくれとか言う暇あったら英語勉強して
あっちのサイト漁ればもっと有益な情報はいくらでもあるぞ。
#そういう俺も英語はさっぱりなんだが・・・。鬱氏。
0190名前は開発中のものです。01/12/07 12:03ID:???
>>186

はいはい。
煽り合戦でお祭りやりたきゃ他所でな。
0191名前は開発中のものです。01/12/07 12:55ID:???
Dualほにゃららマッピングの解説ページ発見したぞ。
OpenGLだが。Kano氏のやり方とはまた違うアプローチのような・・・
http://www.nada.kth.se/~gustavt/dpm/
0192名前は開発中のものです。01/12/07 16:43ID:???
>>191
見たきたけど全く同じに見えるが。
DualParaboloidはHeidrichの論文見るのが一番分かりやすいかと。
実装するのは簡単だから、いちいち日本語で説明するほどの内容じゃないよ。

あと、そこのページだと2パスで描画しているけど、マルチテクスチャ使えば
1パスで済むよ。2パス描画になると半透明にしたときに使えないから駄目。
0193名前は開発中のものです。01/12/07 18:54ID:???
2パスってのは前と後ろのDualParaboloid用の
テクスチャがすでにあった状態で、その2つを
1回の描画でターゲットに貼り付けるって事でよい?
0194名前は開発中のものです。01/12/07 19:30ID:???
ミスった。2パスじゃなくてマルチテクスチャだと
1回の描画で?と聞きたかった。
そういや前誰かがテクスチャ領域の右と左で
前後のテクスチャ用意して1パスで描画するとか
言ってたような気がしたがそれもありか。
0195名前は開発中のものです。01/12/07 19:45ID:???
Heidrichも某氏掲示板の人も動くソースを出してない。
>>191は参考になる。
0196名前は開発中のものです。01/12/07 20:03ID:???
実装は簡単だろうと知らない俺にも参考になる。
>>191はエライよ。
0197名前は開発中のものです。01/12/07 21:31ID:???
>>191の内容って
これと同じ?
http://www.opengl.org/developers/code/sig99/advanced99/notes/node186.html
>>139の次ぎのページだけど
0198名前は開発中のものです。01/12/07 22:20ID:???
>>192
よく見ないで書いてるでしょ。
>>191はマルチテクスチャ版もあるよ。
0199名前は開発中のものです。01/12/07 22:22ID:???
>>197
>>191はそれとHeidrichの論文を参考にしてる。
020019201/12/07 23:45ID:???
下の方はマルチテクスチャだったのね。上しか見てなかった。
ところで、あそこの行列はHeidrichのと少し違うけど、テクスチャが上下逆さま
なのはその影響なのかな?
■ このスレッドは過去ログ倉庫に格納されています