3Dグラフィックスプログラミング

このエントリーをはてなブックマークに追加
932デフォルトの名無しさん:2011/06/12(日) 11:14:51.67
3D の温度グラフ、高さマップ
暇だったから、作ってみた。
http://www1.axfc.net/uploader/Sc/so/244032

DirectX9c必須
933デフォルトの名無しさん:2011/06/12(日) 11:17:52.07
アンチウィルスソフトが反応した
934925:2011/06/12(日) 11:24:23.61
アンチウィルスソフト切ればいいだろ
935925:2011/06/12(日) 11:42:22.88
>>932
ondo.exe を実行しようとしたら
「パラメータが間違っています。」とダイアログが表示されるんだが
なにか足りない?

パラメータって何だろ?
936デフォルトの名無しさん:2011/06/12(日) 11:48:22.65
>>935
わからない、私のマシンでは正常に動作してる

テストマシン
WindowsXp,32bit, DirectX9c
937デフォルトの名無しさん:2011/06/12(日) 11:57:34.95
>>707
やっぱunityか
938デフォルトの名無しさん:2011/06/12(日) 14:12:37.71
>>911
遅いレスでスマンが、
データ可視化 とか Data Visualization のスレがシミュレーション板に(昔)あったと思う。
ツールやライブラリだと、 MIPAV ParaView MayaVi gnuplot R matplotlib あたりか。

あとWebサーバを用意できるなら、(質問者のスキルが足りないと思うが)、Java (Applet), Silverlight, WPF, Flash あたりで自作すれば配布の手間が減るよ。
939928:2011/06/12(日) 14:47:18.80
>>930さん
もしかしてサンプル間違えてませんか?
玉が転がる奴ではなくて、一番上のデモの奴です。
940デフォルトの名無しさん:2011/06/12(日) 18:20:21.54
>>939
それを先にいいやがれorz
みんな勘違いしてるじゃんかw

改めて答えると、光の玉は全てビルボードだよ。デモに使われてるライブラリのパーティクル機能だそうだ。
アニメーションしてるように見えるのは、多分ビルボードをくるくる回してるだけ。ライブラリにそういう機能があるし、ゲームでも常套手段だ。
もちろん加算合成な。

ホワイトアウトは、パーティクルで使ってるような、中央が明るいテクスチャを用意して、それをスクリーンサイズで合成。
時間経過で色の係数を上げていってるんだろう。

実際にライブラリを使って試してみ。

>>931
うるせえばーか
941928:2011/06/14(火) 02:12:17.19
ありがとうございます。
あと厳密には3Dとは関係ない質問なのですが、数キロバイトの3Dメガデモでよく使われている、
8ビット音源のような音色の音楽ですが、あれって
win32のwaveoutを使って、圧縮した楽譜データをリアルタイム演奏しているのでしょうか?
942デフォルトの名無しさん:2011/06/14(火) 02:59:07.97
>>940
916 の画像があれなんだから、誰かが勘違いしているのではなく、勝手に違う話をしている奴が紛れ込んでいるだけ。
943940:2011/06/15(水) 06:37:42.73
なんかよくわからんが、まぁいいや。

>>941
>win32のwaveoutを使って、圧縮した楽譜データをリアルタイム演奏しているのでしょうか?
そうだよ。俺は詳しくないから何の解説もできんが。
944デフォルトの名無しさん:2011/06/15(水) 07:52:11.05
>>941
4K,16Kのintro系のデモかな?
あれなら最初にWave合成してメモリに波形生成してからwaveoutつかってるよ。
SONARとかそういう物を想定したツールがある。
詳しく知りたいならメガデモを語れスレの過去ログを探すと良いよ。
945デフォルトの名無しさん:2011/06/22(水) 05:24:23.89
HSP厨がスレを私物化してるな
死ねばいいのに
946デフォルトの名無しさん:2011/06/23(木) 00:40:55.48
>>932
動かんどー


DirectX Error

DirectX 9.0 installed (589824). Requires DirectX 9.0c (October 2006) or later.


---- 環境
VMware+XPSP3+DX9c
DirectX バージョン:DirectX 9.0c (4.09.0000.0904)
947デフォルトの名無しさん:2011/06/23(木) 22:29:44.59
>> DirectX Error
>> DirectX 9.0 installed (589824). Requires DirectX 9.0c (October 2006) or later.

これは、DirectXが最新版になってない事を意味する。最新版に更新する。
DirectX9cに多くの種類がある、最新版を使えば全部を包括する。

マイクロソフトサイトからDLする
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=2DA43D38-DB71-4C1B-BC6A-9B6652CD92A3
ランタイムを最新版にする。

これでもよい
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8109
948デフォルトの名無しさん:2011/06/27(月) 18:41:28.64
回転軸を表すのに(1,0.0.0)はOKで(1,0.-0.0)が強制終了するんだけど
+0.0と-0.0ってバイナリでは異なるの?
不動少数のフォーマットがいまいちわからん
949925:2011/06/27(月) 19:24:34.36
お前のフォーマットが分からん
950925:2011/06/27(月) 19:30:04.86
バイナリレベルでは異なっているのは確か

異なってなければ、例えば次の計算ができない
x/+0 = +∞
x/-0 = -∞

ただ、強制終了の根本原因はまず間違いなくそこじゃないと思うぞ
もっと前だ
951925:2011/06/27(月) 19:35:13.73
>>950
ごめん、この計算結果は x の値の符号に依存するな
ともかく、+0 と -0 で異なる計算結果が得られるんだから
バイナリレベルで異なっているって事だ

浮動小数点のフォーマットは Wikipedia でも見れば分かる

しかし、繰り返すがバグの原因はそこじゃない
952デフォルトの名無しさん:2011/06/27(月) 22:06:29.32
それ、オイラー角かなんかなんだよね?もしかして方向ベクトル?

アークタンジェント関数(atan2)とか、
ライブラリによってはゼロの符号次第で劇的な差異が出る関数もあるけど…
953デフォルトの名無しさん:2011/06/27(月) 23:15:23.46
normalize(A)=A/sqrt(A)
これであってる?
954948:2011/06/27(月) 23:55:46.37
Wikipediaをじっくり見ましたが、+0.0と-0.0では仮数部と指数部が両方共0でサインビットだけが異なるようです。
これで何で違いが出るのかはさっぱりわかりませんが、そう言うものとしてあきらめます。
私の完璧な推理によればぐりぐり視点を動かしてたまたま-0.0を食わすと死ぬです。

955デフォルトの名無しさん:2011/06/27(月) 23:57:59.58
不連続点
956デフォルトの名無しさん:2011/06/28(火) 02:58:36.74
なんかでアサートかけてんのかねえ
957デフォルトの名無しさん:2011/06/28(火) 08:47:21.06
0じょさん
958デフォルトの名無しさん:2011/06/28(火) 20:31:41.30
>>935
Windows7sp1の対策をしてみた
http://www1.axfc.net/uploader/Sc/so/249735
959デフォルトの名無しさん:2011/06/30(木) 16:08:16.70
>>947
ごめん。返事忘れてたけどそれで動きました。

XP用はもう2008年くらいのしかないと思ってた。
960デフォルトの名無しさん:2011/07/01(金) 23:42:10.92
2Dの等高線に高さを与えて3Dの形状を作成したいのですが、
参考になる資料、ライブラリはありますか?
matlib使えば出来そうなのですが、
他に良さそうなのを探してます。
961デフォルトの名無しさん:2011/07/02(土) 16:53:16.37
それぐらいなら自分で作れない?
962デフォルトの名無しさん:2011/07/02(土) 21:39:49.24
カクカクの形状なら出来そう。
963デフォルトの名無しさん:2011/07/02(土) 22:25:59.59
>>960
2Dの元データの等高線はどういう記述なのかわからんのじゃ堪えようもないじゃろ
ハイトマップ->3Dメッシュなら参考資料いくらでもあるし。
964デフォルトの名無しさん:2011/07/02(土) 22:27:46.14
こんな感じですか?
http://www1.axfc.net/uploader/He/so/330477

Height Map : ビットマップファイルの色の濃淡により、標高を示す。
965デフォルトの名無しさん:2011/07/02(土) 22:40:24.07
2Dの元形状はポリラインで高さを与えて3Dメッシュにしたいです。
966 忍法帖【Lv=16,xxxPT】 :2011/07/02(土) 23:19:30.06
>>965
2Dメッシュをポリラインとの交点で分割して、できた四角形、五角形を必要なら更に分割するんじゃダメなの?
967デフォルトの名無しさん:2011/07/02(土) 23:45:15.29
分割して出来た頂点の高さを補間しなければいけないので、
何処かに良いライブラリや参考資料があればうれしいのですが。
968デフォルトの名無しさん:2011/07/02(土) 23:56:21.19
>>967
元データと、利用目的を明確に提示せよ、
 そうしなければ曖昧な回答しかできない。
また、ビジネスなのか? 娯楽趣味の範囲なのか?

2D−CADデータから3D−CADデータへ変換して、ポリゴンへと変換する。
日本地図などは、実測標高データから変換する。
目的によって方法が異なる。
969デフォルトの名無しさん:2011/07/06(水) 22:07:42.50
http://jsbin.com/ubiyay/3/edit#source
こっから引っこ抜いてきたレンダリングのためのグラデーションコードだけど、
グラデーションって再帰じゃなく、ループで綺麗に書けないの?
 Gradient:function(plotter,vert1,vert2,vert3)
 {
  var Subdivision = function(deeps,vertex1,vertex2,vertex3)
  {
   if(0 >= deeps)
   {
    var mcolor = Torigon.ColorMix(vertex1.Color(),vertex2.Color(),vertex3.Color());
    Torigon.Solid(plotter,mcolor,vertex1,vertex2,vertex3);
    return;
   }
   var half_vertex =
   [
    vertex1.Add(vertex2.ToVector(vertex1).ScalaDiv(2)),
    vertex2.Add(vertex3.ToVector(vertex2).ScalaDiv(2)),
    vertex3.Add(vertex1.ToVector(vertex3).ScalaDiv(2))
   ];
   half_vertex[0].color = Torigon.HalfColorS(vertex1,vertex2);
   half_vertex[1].color = Torigon.HalfColorS(vertex2,vertex3);
   half_vertex[2].color = Torigon.HalfColorS(vertex3,vertex1);

   --deeps;
   Subdivision(deeps,vertex1,half_vertex[0],half_vertex[2]);
   Subdivision(deeps,half_vertex[0],vertex2,half_vertex[1]);
   Subdivision(deeps,half_vertex[2],half_vertex[1],vertex3);
   Subdivision(deeps,half_vertex[0],half_vertex[1],half_vertex[2]);
  }
  Subdivision(5,vert1,vert2,vert3);
 }
970デフォルトの名無しさん:2011/07/09(土) 15:41:04.81
>>969
君にとっての綺麗の条件はわからんが、例えばビデオチップでポリゴンを書くときに再帰で実装されているわけがない。
http://en.wikipedia.org/wiki/Digital_differential_analyzer_%28graphics_algorithm%29
971デフォルトの名無しさん:2011/07/10(日) 02:48:56.02
>>970
綺麗ってのは分岐が少ないことかな。

ま、それはともかく、再帰なしで書くことが理屈上可能なのは解るが、
現実どう書けばいいか解からんのよ。
972デフォルトの名無しさん:2011/07/10(日) 12:30:20.79
グラデーションを再帰でかいたことないな、、、
973デフォルトの名無しさん:2011/07/10(日) 13:07:01.53
>>971
リンク先読んでもわからないの?
ブレゼンハムはわかるの?
ブレゼンハムを検索して理解できないなら、説明には小冊子を書くくらいの分量は必要になるから、掲示板で質問して答えを期待するのは難しい。面識のある人に聞くべき。
974 忍法帖【Lv=22,xxxPT】 :2011/07/10(日) 13:29:49.86
面識のある、見識のある人に聞かなくちゃだね。
975デフォルトの名無しさん:2011/07/10(日) 14:16:49.04
>>971
せめて線形補間が分かれば遅くとも書けるぞ
976デフォルトの名無しさん:2011/07/10(日) 18:34:43.21
とりあえずスクリーン座標で x1 < x2 かつ y0 < y1 = y2 な場合で
for y in [y0..y1] {
r_y = (y - y0) / (y1 - y0)
x_left = terp(x0, x1, r_y)
x_right = terp(x0, x2, r_y)
col_left = terp(col0, col1, r_y)
col_right = terp(col0, col2, r_y)
for x in [x_left..x_right] {
r_x = (x - x_left) / (x_right - x_left)
col = terp(col_left, col_right)
}
}
terp じゃなくてプレゼンハム (DDA) を使えば除算を減らせるので速くなるぞ
977976:2011/07/10(日) 18:44:33.11
969はそういう質問じゃないような気がしてきた。
三角形を細かいメッシュにして色をつけたいなら 969 みたいな subdivision が簡単だし綺麗。
すでに細かくなっていて 3点の色をアンカーにして色を補完したいなら、距離で重み付け補完。
978デフォルトの名無しさん:2011/07/10(日) 20:35:12.09
979デフォルトの名無しさん:2011/07/10(日) 22:26:21.89
>>973
ブレゼンハムは解るよ。元のコードにも書いて(応用したShellingが)あるのも分かるし。
でもグラデーションとは関係なくない?ブレゼンハムで線形のグラデーションは分かるけど、
3頂点のグラデーションて聞かないしさ。
980976:2011/07/10(日) 23:51:33.03
ぅぉぁぅ全然気付かんかった >lerp

981デフォルトの名無しさん
>>979
ポリゴンのラスタライズ、グーローシェーディング辺りを調べるといいぞ
線形補間を3つ同時にやればグラデーションできる
3つ同時ってのは、頂点→頂点の補間を2つと、その間の補間で1つ
まずはラスタライズからだな