質問編集履歴
40
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,7 +62,7 @@
|
|
62
62
|
//
|
63
63
|
//f 20400
|
64
64
|
glEnd();
|
65
|
-
4は
|
65
|
+
4は自己責任でお願いします。全体を通して間違えてても責任とれません.間違えていましたら教えてください。
|
66
66
|
|
67
67
|
|
68
68
|
|
39
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -46,7 +46,24 @@
|
|
46
46
|
f[1]=vertex[(3*k)+1];
|
47
47
|
f[2]=vertex[(3*k)+2]; 番号としました。
|
48
48
|
|
49
|
+
4. (例) glVertex3f(v[(3 * (a[0]-1))+0 ], v[(3 * (a[0]-1)) +1], v[(3 * (a[0] -1))+2]);
|
50
|
+
|
51
|
+
// printf("%f=v[3 * 21216 +0],v[3 * (21216) +1] =%f,v[3 * 21216 +2]=%f\n",v[3 * (21216) +0],v[3 * 21216 +1], v[3 * 21216 +2]);
|
52
|
+
//f 21217
|
53
|
+
glVertex3f(v[(3 * (a[1]-1))+0], v[(3 * (a[1]-1))+1], v[(3 * (a[1]-1))+2]);
|
54
|
+
|
55
|
+
// printf("%f=v[3 * 21215 +0],v[3 * (21215) +1] =%f,v[3 * 21215 +2]=%f\n",v[3 * (21215) + 0], v[3 * 21215 + 1], v[3 * 21215 + 2]);
|
56
|
+
//f21216
|
57
|
+
|
58
|
+
|
59
|
+
glVertex3f(v[(3 * (a[2]-1))+0], v[(3 * (a[2]-1)) +1], v[(3 * (a[2]-1)) +2]);
|
60
|
+
// printf("%f=v[3 * 20399 +0],v[3 * (20399) +1] =%f,v[3 * 20399 +2]=%f\n", v[3 * (20399) + 0], v[3 * 20399 + 1], v[3 * 20399 + 2]);
|
61
|
+
//
|
62
|
+
//
|
63
|
+
//f 20400
|
64
|
+
glEnd();
|
65
|
+
4は混乱しているので自己責任でお願いします。全体を通して間違えてても責任とれません.間違えていましたら教えてください。
|
66
|
+
|
49
67
|
|
50
68
|
|
51
69
|
|
52
|
-
|
38
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -44,10 +44,9 @@
|
|
44
44
|
|
45
45
|
3.f[0]=vertex[(3*k)+0];
|
46
46
|
f[1]=vertex[(3*k)+1];
|
47
|
-
f[2]=vertex[(3*k)+2]; 番号
|
47
|
+
f[2]=vertex[(3*k)+2]; 番号としました。
|
48
|
-
|
49
|
-
4.(間違えてたら嫌なので、修正)
|
50
|
-
間違えてても責任とれません.間違えていましたら教えてください。
|
51
48
|
|
52
49
|
|
53
50
|
|
51
|
+
|
52
|
+
|
37
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -46,21 +46,7 @@
|
|
46
46
|
f[1]=vertex[(3*k)+1];
|
47
47
|
f[2]=vertex[(3*k)+2]; 番号
|
48
48
|
|
49
|
-
4. (例) glVertex3f(v[(3 * (a[0]-1))+0 ], v[(3 * (a[0]-1)) +1], v[(3 * (a[0] -1))+2]);
|
50
|
-
|
51
|
-
// printf("%f=v[3 * 21216 +0],v[3 * (21216) +1] =%f,v[3 * 21216 +2]=%f\n",v[3 * (21216) +0],v[3 * 21216 +1], v[3 * 21216 +2]);
|
52
|
-
//f 21217
|
53
|
-
glVertex3f(v[(3 * (a[1]-1))+0], v[(3 * (a[1]-1))+1], v[(3 * (a[1]-1))+2]);
|
54
|
-
|
55
|
-
// printf("%f=v[3 * 21215 +0],v[3 * (21215) +1] =%f,v[3 * 21215 +2]=%f\n",v[3 * (21215) + 0], v[3 * 21215 + 1], v[3 * 21215 + 2]);
|
56
|
-
|
49
|
+
4.(間違えてたら嫌なので、修正)
|
57
|
-
|
58
|
-
glVertex3f(v[(3 * (a[2]-1))+0], v[(3 * (a[2]-1)) +1], v[(3 * (a[2]-1)) +2]);
|
59
|
-
// printf("%f=v[3 * 20399 +0],v[3 * (20399) +1] =%f,v[3 * 20399 +2]=%f\n", v[3 * (20399) + 0], v[3 * 20399 + 1], v[3 * 20399 + 2]);
|
60
|
-
//
|
61
|
-
//
|
62
|
-
//f 20400
|
63
|
-
glEnd();
|
64
50
|
間違えてても責任とれません.間違えていましたら教えてください。
|
65
51
|
|
66
52
|
|
36
文章の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -33,9 +33,8 @@
|
|
33
33
|
chatで調べた。ファイルは確認してない。間違えてたらすいません。自分で調べて。責任とりません。
|
34
34
|
//vやvnなどは読み飛ばすかどうするかは自分でなんかして。
|
35
35
|
|
36
|
-
|
36
|
+
|
37
|
-
頂点から、法線を出したと思うのでわかりません。
|
38
|
-
|
37
|
+
法線は、objファイルなら法線をglNormal関数に直接値をいれても大丈夫です。objファイル以外は知らないです。修正しました。
|
39
38
|
|
40
39
|
1例。fscanf_sのスペースは考慮してない。
|
41
40
|
|
35
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
glVertex3f(v[(3 * (a[1]-1))+0], v[(3 * (a[1]-1))+1], v[(3 * (a[1]-1))+2]);
|
55
55
|
|
56
56
|
// printf("%f=v[3 * 21215 +0],v[3 * (21215) +1] =%f,v[3 * 21215 +2]=%f\n",v[3 * (21215) + 0], v[3 * 21215 + 1], v[3 * 21215 + 2]);
|
57
|
-
//21216
|
57
|
+
//f21216
|
58
58
|
|
59
59
|
glVertex3f(v[(3 * (a[2]-1))+0], v[(3 * (a[2]-1)) +1], v[(3 * (a[2]-1)) +2]);
|
60
60
|
// printf("%f=v[3 * 20399 +0],v[3 * (20399) +1] =%f,v[3 * 20399 +2]=%f\n", v[3 * (20399) + 0], v[3 * 20399 + 1], v[3 * 20399 + 2]);
|
34
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
chatで調べた。ファイルは確認してない。間違えてたらすいません。自分で調べて。責任とりません。
|
34
34
|
//vやvnなどは読み飛ばすかどうするかは自分でなんかして。
|
35
35
|
|
36
|
-
|
36
|
+
また
|
37
37
|
頂点から、法線を出したと思うのでわかりません。
|
38
38
|
頂点から法線をだした場合、わずかな誤差が発生しますが、気になる人は、objファイルなら法線をglNormal関数に直接値をいれても大丈夫です。objファイル以外は知らないです。
|
39
39
|
|
33
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,7 +62,7 @@
|
|
62
62
|
//
|
63
63
|
//f 20400
|
64
64
|
glEnd();
|
65
|
-
間違えてても責任とれません
|
65
|
+
間違えてても責任とれません.間違えていましたら教えてください。
|
66
66
|
|
67
67
|
|
68
68
|
|
32
書式の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -47,10 +47,22 @@
|
|
47
47
|
f[1]=vertex[(3*k)+1];
|
48
48
|
f[2]=vertex[(3*k)+2]; 番号
|
49
49
|
|
50
|
-
4.gl
|
50
|
+
4. (例) glVertex3f(v[(3 * (a[0]-1))+0 ], v[(3 * (a[0]-1)) +1], v[(3 * (a[0] -1))+2]);
|
51
|
-
たぶんこう
|
52
51
|
|
52
|
+
// printf("%f=v[3 * 21216 +0],v[3 * (21216) +1] =%f,v[3 * 21216 +2]=%f\n",v[3 * (21216) +0],v[3 * 21216 +1], v[3 * 21216 +2]);
|
53
|
+
//f 21217
|
54
|
+
glVertex3f(v[(3 * (a[1]-1))+0], v[(3 * (a[1]-1))+1], v[(3 * (a[1]-1))+2]);
|
55
|
+
|
56
|
+
// printf("%f=v[3 * 21215 +0],v[3 * (21215) +1] =%f,v[3 * 21215 +2]=%f\n",v[3 * (21215) + 0], v[3 * 21215 + 1], v[3 * 21215 + 2]);
|
57
|
+
//21216
|
58
|
+
|
59
|
+
glVertex3f(v[(3 * (a[2]-1))+0], v[(3 * (a[2]-1)) +1], v[(3 * (a[2]-1)) +2]);
|
60
|
+
// printf("%f=v[3 * 20399 +0],v[3 * (20399) +1] =%f,v[3 * 20399 +2]=%f\n", v[3 * (20399) + 0], v[3 * 20399 + 1], v[3 * 20399 + 2]);
|
61
|
+
//
|
62
|
+
//
|
63
|
+
//f 20400
|
64
|
+
glEnd();
|
53
|
-
|
65
|
+
間違えてても責任とれません
|
54
|
-
まだ、間違いがありましたら、回答欄に回答をお願いします。
|
55
|
-
それを踏まえて、グローシェーダを順を追うとどうなるのかという質問でした。
|
56
66
|
|
67
|
+
|
68
|
+
|
31
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -34,9 +34,21 @@
|
|
34
34
|
//vやvnなどは読み飛ばすかどうするかは自分でなんかして。
|
35
35
|
|
36
36
|
glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
37
|
-
|
37
|
+
頂点から、法線を出したと思うのでわかりません。
|
38
38
|
頂点から法線をだした場合、わずかな誤差が発生しますが、気になる人は、objファイルなら法線をglNormal関数に直接値をいれても大丈夫です。objファイル以外は知らないです。
|
39
39
|
|
40
|
+
1例。fscanf_sのスペースは考慮してない。
|
41
|
+
|
42
|
+
1.fscanf_s(fp,%f %f %f ,&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);
|
43
|
+
....頂点の数値を読み取る。
|
44
|
+
2.fscanf_s(fp,"%d//%d//%d%d//%d",&vertex[((3*k)+0],&housen[3*k+0],&vertex[(3*k+1)],&housen[.....省略 番号を読み取る
|
45
|
+
|
46
|
+
3.f[0]=vertex[(3*k)+0];
|
47
|
+
f[1]=vertex[(3*k)+1];
|
48
|
+
f[2]=vertex[(3*k)+2]; 番号
|
49
|
+
|
50
|
+
4.glvertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);
|
51
|
+
たぶんこう
|
40
52
|
|
41
53
|
(9*は、3*にしました。)
|
42
54
|
まだ、間違いがありましたら、回答欄に回答をお願いします。
|
30
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
//fscanf_s(fp,%f%f%f ",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);
|
26
26
|
//ファイルに改行があったらfscanf_sにスペースをいれるそう。
|
27
|
-
//(
|
27
|
+
//(やはりわかりません。自分で調べてください)
|
28
28
|
//ファイルに空白があったらfscanf_sにスペースを1個いれるそう。
|
29
29
|
|
30
30
|
//ファイルに,があったら fscanf_sに,をいれるそう。
|
29
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
|
30
30
|
//ファイルに,があったら fscanf_sに,をいれるそう。
|
31
31
|
%[^,]は、カンマ以外の文字列
|
32
|
-
canf_s("%[^,],%d,%lf", s, sizeof(s), &n, &x)
|
32
|
+
fscanf_s("%[^,],%d,%lf", s, sizeof(s), &n, &x)
|
33
33
|
chatで調べた。ファイルは確認してない。間違えてたらすいません。自分で調べて。責任とりません。
|
34
34
|
//vやvnなどは読み飛ばすかどうするかは自分でなんかして。
|
35
35
|
|
28
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,14 +24,13 @@
|
|
24
24
|
|
25
25
|
//fscanf_s(fp,%f%f%f ",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);
|
26
26
|
//ファイルに改行があったらfscanf_sにスペースをいれるそう。
|
27
|
-
|
27
|
+
//(そもそもファイルに改行があるのかしりません。)
|
28
28
|
//ファイルに空白があったらfscanf_sにスペースを1個いれるそう。
|
29
29
|
|
30
30
|
//ファイルに,があったら fscanf_sに,をいれるそう。
|
31
31
|
%[^,]は、カンマ以外の文字列
|
32
32
|
canf_s("%[^,],%d,%lf", s, sizeof(s), &n, &x)
|
33
33
|
chatで調べた。ファイルは確認してない。間違えてたらすいません。自分で調べて。責任とりません。
|
34
|
-
|
35
34
|
//vやvnなどは読み飛ばすかどうするかは自分でなんかして。
|
36
35
|
|
37
36
|
glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
27
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
// printf("%d\n", num); // 読み込んだ整数を表示する
|
23
23
|
//でした。
|
24
24
|
|
25
|
-
//fscanf_s(fp,%f
|
25
|
+
//fscanf_s(fp,%f%f%f ",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);
|
26
26
|
//ファイルに改行があったらfscanf_sにスペースをいれるそう。
|
27
27
|
|
28
28
|
//ファイルに空白があったらfscanf_sにスペースを1個いれるそう。
|
26
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,6 +21,17 @@
|
|
21
21
|
//を読み込む
|
22
22
|
// printf("%d\n", num); // 読み込んだ整数を表示する
|
23
23
|
//でした。
|
24
|
+
|
25
|
+
//fscanf_s(fp,%f //%f%f ",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);
|
26
|
+
//ファイルに改行があったらfscanf_sにスペースをいれるそう。
|
27
|
+
|
28
|
+
//ファイルに空白があったらfscanf_sにスペースを1個いれるそう。
|
29
|
+
|
30
|
+
//ファイルに,があったら fscanf_sに,をいれるそう。
|
31
|
+
%[^,]は、カンマ以外の文字列
|
32
|
+
canf_s("%[^,],%d,%lf", s, sizeof(s), &n, &x)
|
33
|
+
chatで調べた。ファイルは確認してない。間違えてたらすいません。自分で調べて。責任とりません。
|
34
|
+
|
24
35
|
//vやvnなどは読み飛ばすかどうするかは自分でなんかして。
|
25
36
|
|
26
37
|
glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
25
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
//を読み込む
|
22
22
|
// printf("%d\n", num); // 読み込んだ整数を表示する
|
23
23
|
//でした。
|
24
|
+
//vやvnなどは読み飛ばすかどうするかは自分でなんかして。
|
24
25
|
|
25
26
|
glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
26
27
|
a[0]は f[0]で、b[0]は、頂点から、法線を出したと思うのでわかりません。
|
24
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,9 +16,11 @@
|
|
16
16
|
で修正したものが、fscanf_s(fp,%f %f%f",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);とな
|
17
17
|
|
18
18
|
り、(ここ何でこうなるか分かっていないところだった。数値の読み取りを書きたい。)
|
19
|
+
|
19
|
-
|
20
|
+
//使い方 fscanf_s(fp, "%d", &num) // ファイルから整数
|
21
|
+
//を読み込む
|
20
|
-
printf("%d\n", num); // 読み込んだ整数を表示する
|
22
|
+
// printf("%d\n", num); // 読み込んだ整数を表示する
|
21
|
-
でした。
|
23
|
+
//でした。
|
22
24
|
|
23
25
|
glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
24
26
|
a[0]は f[0]で、b[0]は、頂点から、法線を出したと思うのでわかりません。
|
23
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,7 +16,9 @@
|
|
16
16
|
で修正したものが、fscanf_s(fp,%f %f%f",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);とな
|
17
17
|
|
18
18
|
り、(ここ何でこうなるか分かっていないところだった。数値の読み取りを書きたい。)
|
19
|
-
|
19
|
+
例 (fscanf_s(fp, "%d", &num) == 1) { // ファイルから整数を読み込む
|
20
|
+
printf("%d\n", num); // 読み込んだ整数を表示する
|
21
|
+
でした。
|
20
22
|
|
21
23
|
glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
22
24
|
a[0]は f[0]で、b[0]は、頂点から、法線を出したと思うのでわかりません。
|
22
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
で修正したものが、fscanf_s(fp,%f %f%f",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);とな
|
17
17
|
|
18
|
-
り、(ここ何でこうなるか分かっていないところだった。)
|
18
|
+
り、(ここ何でこうなるか分かっていないところだった。数値の読み取りを書きたい。)
|
19
19
|
|
20
20
|
|
21
21
|
glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
21
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,7 +15,10 @@
|
|
15
15
|
|
16
16
|
で修正したものが、fscanf_s(fp,%f %f%f",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);とな
|
17
17
|
|
18
|
+
り、(ここ何でこうなるか分かっていないところだった。)
|
19
|
+
|
20
|
+
|
18
|
-
|
21
|
+
glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
19
22
|
a[0]は f[0]で、b[0]は、頂点から、法線を出したと思うのでわかりません。
|
20
23
|
頂点から法線をだした場合、わずかな誤差が発生しますが、気になる人は、objファイルなら法線をglNormal関数に直接値をいれても大丈夫です。objファイル以外は知らないです。
|
21
24
|
|
20
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -17,6 +17,9 @@
|
|
17
17
|
|
18
18
|
り、glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
19
19
|
a[0]は f[0]で、b[0]は、頂点から、法線を出したと思うのでわかりません。
|
20
|
+
頂点から法線をだした場合、わずかな誤差が発生しますが、気になる人は、objファイルなら法線をglNormal関数に直接値をいれても大丈夫です。objファイル以外は知らないです。
|
21
|
+
|
22
|
+
|
20
23
|
(9*は、3*にしました。)
|
21
24
|
まだ、間違いがありましたら、回答欄に回答をお願いします。
|
22
25
|
それを踏まえて、グローシェーダを順を追うとどうなるのかという質問でした。
|
19
質問の背景を書いた。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,19 +1,23 @@
|
|
1
1
|
[リンク先を参考に、実装したいのですが]
|
2
|
-
|
3
2
|
[リンク](http://gameprogrammingunit.web.fc2.com/math/gouraud.htm)
|
4
|
-
|
5
3
|
グーローシェーダーらしいので、このコードを試してみたかったです。
|
6
4
|
|
7
|
-
|
8
|
-
|
9
5
|
追記:一定時間たって、質問のコードが正しくないのと進展がないという理由
|
10
|
-
|
11
6
|
から、ソースコードは、削除します。
|
12
|
-
|
13
7
|
追記: }は忘れてました。
|
14
8
|
|
9
|
+
追記...何を聞ききたいか分からなくなったので削除。
|
10
|
+
隣接する面の法線を平均したものになるって普通だと思うけど。
|
15
11
|
|
12
|
+
意図的に内容が抹消された質問とありましたので追記します。
|
16
13
|
|
17
|
-
|
14
|
+
最後に読み込むデータが2列ぐらいあるのですが、printfしても表記されません。forループをこれ以上増やすと、アプリケーションが落ちます。とありますように、データの読み取りにミスがあると思います。
|
18
15
|
|
16
|
+
で修正したものが、fscanf_s(fp,%f %f%f",&v[(i*3)+0],&v[(i*3)+1],&v[(i*3)+2]);とな
|
17
|
+
|
18
|
+
り、glVertex3fは、glVertex3f(v[3*f[0]-3],v[3*f[0]-2],v[3*f[0]-1]);にしました。
|
19
|
+
a[0]は f[0]で、b[0]は、頂点から、法線を出したと思うのでわかりません。
|
20
|
+
(9*は、3*にしました。)
|
19
|
-
|
21
|
+
まだ、間違いがありましたら、回答欄に回答をお願いします。
|
22
|
+
それを踏まえて、グローシェーダを順を追うとどうなるのかという質問でした。
|
23
|
+
|
18
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,3 +15,5 @@
|
|
15
15
|
|
16
16
|
|
17
17
|
追記...何を聞ききたいか分からなくなったので削除。
|
18
|
+
|
19
|
+
隣接する面の法線を平均したものになるって普通だと思うけど。
|
17
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,6 +14,4 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
追記...
|
17
|
+
追記...何を聞ききたいか分からなくなったので削除。
|
18
|
-
|
19
|
-
さすがに平均法と正規化は違うか。
|
16
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,3 +15,5 @@
|
|
15
15
|
|
16
16
|
|
17
17
|
追記...平均法と正規化は違うものなのでしょうか?教えてください。
|
18
|
+
|
19
|
+
さすがに平均法と正規化は違うか。
|
15
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,8 +14,4 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
追記...いまさら気づいたのですが、
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
平均法と正規化は違うものなのでしょうか?教えてください。
|
17
|
+
追記...平均法と正規化は違うものなのでしょうか?教えてください。
|
14
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,10 +14,8 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
上のリンクのグーローシェーダーの説明でもいいのでわかる方お願いします。
|
18
|
-
|
19
|
-
|
17
|
+
追記...いまさら気づいたのですが、
|
20
18
|
|
21
19
|
|
22
20
|
|
23
|
-
|
21
|
+
平均法と正規化は違うものなのでしょうか?教えてください。
|
13
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,85 +21,3 @@
|
|
21
21
|
|
22
22
|
|
23
23
|
結局わからなかったので、消す。
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
上のリンクから正規化だけやってないですけど、4すべての法線の正規化はどうしたら解けるでしょうか。
|
28
|
-
|
29
|
-
(1から3までやったのですが、同じ画像が出てるので、心配です。)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
```opengl
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
Normal_F[9*i+0]=0.0; //2 subeteno chouten no housenwo kuria suru
|
38
|
-
|
39
|
-
Normal_F[9*i+1]=0.0;
|
40
|
-
|
41
|
-
Normal_F[9*i+2]=0.0;
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
Normal_K[9*i+0]=V_X; //1 subetenohousenwo keisansuru
|
46
|
-
|
47
|
-
Normal_K[9*i+1]=V_Y;
|
48
|
-
|
49
|
-
Normal_K[9*i+2]=V_Z;
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
for(int j=0; j<2503;++j){
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
if( v[j]!=v[i] )//3zahyou ga ixtuti shitara menno housenn wo chouten nikazan suru
|
60
|
-
|
61
|
-
{
|
62
|
-
|
63
|
-
Normal_F[9*i+0]=Normal_K[9*i+0];
|
64
|
-
|
65
|
-
Normal_F[9*i+1]=Normal_K[9*i+1];
|
66
|
-
|
67
|
-
Normal_F[9*i+2]=Normal_K[9*i+2];
|
68
|
-
|
69
|
-
}
|
70
|
-
|
71
|
-
else{
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
Normal_F[9*i+0]+=Normal_K[9*i+0];
|
76
|
-
|
77
|
-
Normal_F[9*i+1]+=Normal_K[9*i+1];
|
78
|
-
|
79
|
-
Normal_F[9*i+2]+=Normal_K[9*i+2];
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
}
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
}//j
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
// forループで下に。
|
96
|
-
|
97
|
-
printf("Normal_F[9*i+0]=%f,Normal_F[9*i+1]=%f,Normal_F[9*i+2]=%f",
|
98
|
-
|
99
|
-
Normal_F[9*i+0],Normal_F[9*i+1],Normal_F[9*i+2]);
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
```
|
12
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
}
|
87
|
+
}//j
|
88
88
|
|
89
89
|
|
90
90
|
|
@@ -92,7 +92,7 @@
|
|
92
92
|
|
93
93
|
|
94
94
|
|
95
|
-
|
95
|
+
// forループで下に。
|
96
96
|
|
97
97
|
printf("Normal_F[9*i+0]=%f,Normal_F[9*i+1]=%f,Normal_F[9*i+2]=%f",
|
98
98
|
|
11
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,3 +21,85 @@
|
|
21
21
|
|
22
22
|
|
23
23
|
結局わからなかったので、消す。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
上のリンクから正規化だけやってないですけど、4すべての法線の正規化はどうしたら解けるでしょうか。
|
28
|
+
|
29
|
+
(1から3までやったのですが、同じ画像が出てるので、心配です。)
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
```opengl
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
Normal_F[9*i+0]=0.0; //2 subeteno chouten no housenwo kuria suru
|
38
|
+
|
39
|
+
Normal_F[9*i+1]=0.0;
|
40
|
+
|
41
|
+
Normal_F[9*i+2]=0.0;
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
Normal_K[9*i+0]=V_X; //1 subetenohousenwo keisansuru
|
46
|
+
|
47
|
+
Normal_K[9*i+1]=V_Y;
|
48
|
+
|
49
|
+
Normal_K[9*i+2]=V_Z;
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
for(int j=0; j<2503;++j){
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
if( v[j]!=v[i] )//3zahyou ga ixtuti shitara menno housenn wo chouten nikazan suru
|
60
|
+
|
61
|
+
{
|
62
|
+
|
63
|
+
Normal_F[9*i+0]=Normal_K[9*i+0];
|
64
|
+
|
65
|
+
Normal_F[9*i+1]=Normal_K[9*i+1];
|
66
|
+
|
67
|
+
Normal_F[9*i+2]=Normal_K[9*i+2];
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
else{
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
Normal_F[9*i+0]+=Normal_K[9*i+0];
|
76
|
+
|
77
|
+
Normal_F[9*i+1]+=Normal_K[9*i+1];
|
78
|
+
|
79
|
+
Normal_F[9*i+2]+=Normal_K[9*i+2];
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
printf("Normal_F[9*i+0]=%f,Normal_F[9*i+1]=%f,Normal_F[9*i+2]=%f",
|
98
|
+
|
99
|
+
Normal_F[9*i+0],Normal_F[9*i+1],Normal_F[9*i+2]);
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
```
|
10
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,4 +20,4 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
結局わからなかったので、
|
23
|
+
結局わからなかったので、消す。
|
9
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,14 +20,4 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
//その頂点で初めての登録の場合は法線ベクトルただ登録する
|
24
|
-
|
25
|
-
else //すでに登録してあった頂点に追加する場合は、
|
26
|
-
|
27
|
-
ベクトルの足し算をする と書けばよかったのかもしれません。
|
28
|
-
|
29
|
-
あまりにも自分のソースコードとかけ離れていたので、追記しました。
|
30
|
-
|
31
|
-
|
23
|
+
結局わからなかったので、編集ということで消す。
|
32
|
-
|
33
|
-
if(!normalAtVertex[index]) {が実現できなかったので、間違えたかもしれません。
|
8
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,10 +20,6 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
~~[リンク](http://nmi.jp/archives/642)のページの
|
24
|
-
|
25
|
-
最後のリンクにあるように、
|
26
|
-
|
27
23
|
//その頂点で初めての登録の場合は法線ベクトルただ登録する
|
28
24
|
|
29
25
|
else //すでに登録してあった頂点に追加する場合は、
|
7
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
[リンク](http://nmi.jp/archives/642)のページの
|
23
|
+
~~[リンク](http://nmi.jp/archives/642)のページの
|
24
24
|
|
25
25
|
最後のリンクにあるように、
|
26
26
|
|
@@ -32,4 +32,6 @@
|
|
32
32
|
|
33
33
|
あまりにも自分のソースコードとかけ離れていたので、追記しました。
|
34
34
|
|
35
|
-
あまり読んでないし、難しそうなので解けないと思いますが。
|
35
|
+
あまり読んでないし、難しそうなので解けないと思いますが。~~
|
36
|
+
|
37
|
+
if(!normalAtVertex[index]) {が実現できなかったので、間違えたかもしれません。
|
6
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
[リンク先を参考に、実装したいのですが]
|
2
2
|
|
3
|
-
(http://gameprogrammingunit.web.fc2.com/math/gouraud.htm)
|
3
|
+
[リンク](http://gameprogrammingunit.web.fc2.com/math/gouraud.htm)
|
4
4
|
|
5
5
|
グーローシェーダーらしいので、このコードを試してみたかったです。
|
6
6
|
|
@@ -17,3 +17,19 @@
|
|
17
17
|
上のリンクのグーローシェーダーの説明でもいいのでわかる方お願いします。
|
18
18
|
|
19
19
|
グローシェーダーのコードの手がかりでもいいです。
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
[リンク](http://nmi.jp/archives/642)のページの
|
24
|
+
|
25
|
+
最後のリンクにあるように、
|
26
|
+
|
27
|
+
//その頂点で初めての登録の場合は法線ベクトルただ登録する
|
28
|
+
|
29
|
+
else //すでに登録してあった頂点に追加する場合は、
|
30
|
+
|
31
|
+
ベクトルの足し算をする と書けばよかったのかもしれません。
|
32
|
+
|
33
|
+
あまりにも自分のソースコードとかけ離れていたので、追記しました。
|
34
|
+
|
35
|
+
あまり読んでないし、難しそうなので解けないと思いますが。
|
5
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,96 +2,18 @@
|
|
2
2
|
|
3
3
|
(http://gameprogrammingunit.web.fc2.com/math/gouraud.htm)
|
4
4
|
|
5
|
-
グーローシェーダーらしいので、
|
5
|
+
グーローシェーダーらしいので、このコードを試してみたかったです。
|
6
|
-
|
7
|
-
上のリンクのように組みたいのですが、手順4の正規化がわからなかったのと
|
8
6
|
|
9
7
|
|
10
8
|
|
11
|
-
|
9
|
+
追記:一定時間たって、質問のコードが正しくないのと進展がないという理由
|
10
|
+
|
11
|
+
から、ソースコードは、削除します。
|
12
|
+
|
13
|
+
追記: }は忘れてました。
|
12
14
|
|
13
15
|
|
14
16
|
|
17
|
+
上のリンクのグーローシェーダーの説明でもいいのでわかる方お願いします。
|
15
18
|
|
16
|
-
|
17
|
-
```opengl
|
18
|
-
|
19
|
-
for (int i=0;i<(12439-7472)/3)+1;++i){
|
20
|
-
|
21
|
-
-----------省略--------------------
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Normal_F[9*i+0]=V_X/la; //➀V_Xが流れてくる。面の法線を計算したものを用意。
|
26
|
-
|
27
|
-
Normal_F[9*i+1]=V_Y/la; //➀V_Yが流れてくる。面の法線を計算したものを用意。
|
28
|
-
|
29
|
-
Normal_F[9*i+2]=V_Z/la; //➀V_Zが流れてくる。面の法線を計算したものを用意。
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
Normal_K[9*i+0]=0.0; //➁すべての頂点の法線を一旦クリアする。
|
34
|
-
|
35
|
-
Normal_K[9*i+1]=0.0;
|
36
|
-
|
37
|
-
Normal_K[9*i+2]=0.0;
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
for(int j=0;j<2503;++j){//v no kosuu
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
if(v[j] == v[3*a[0]-3]){ //流れるv座標と、faceのxを比較。
|
50
|
-
|
51
|
-
Normal_K[9*i+0]+=Normal_F[9*i+0]; //+V_X/l //頂点の法線に面の法線を加算する。
|
52
|
-
|
53
|
-
}
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
if(v[j] == v[3*a[0]-2]){//流れるv座標と、faceのyを比較。
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
Normal_K[9*i+1]+=Normal_F[9*i+1];
|
64
|
-
|
65
|
-
}
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
if(v[j] == v[3*a[0]-1]){//流れるv座標と、faceのzを比較。
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
Normal_K[9*i+2]+=Normal_F[9*i+2];
|
74
|
-
|
75
|
-
}
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
}
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
//glNormal3f(V_X/la,V_Y/la,V_Z/la);
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
glNormal3f(Normal_K[9*i+0],Normal_K[9*i+1],Normal_K[9*i+2]);
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
追記 }
|
94
|
-
|
95
|
-
```
|
96
|
-
|
97
|
-
|
19
|
+
グローシェーダーのコードの手がかりでもいいです。
|
4
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,10 +1,16 @@
|
|
1
|
-
[リンク先を参考に、実装したい
|
1
|
+
[リンク先を参考に、実装したいのですが]
|
2
2
|
|
3
3
|
(http://gameprogrammingunit.web.fc2.com/math/gouraud.htm)
|
4
4
|
|
5
|
-
|
5
|
+
グーローシェーダーらしいので、
|
6
6
|
|
7
|
-
|
7
|
+
上のリンクのように組みたいのですが、手順4の正規化がわからなかったのと
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
➀と➁が合ってるか知りたいです。手順通りに書いたつもりなので、何をしていてるかわからないです。
|
12
|
+
|
13
|
+
|
8
14
|
|
9
15
|
|
10
16
|
|
@@ -16,15 +22,15 @@
|
|
16
22
|
|
17
23
|
|
18
24
|
|
19
|
-
Normal_F[9*i+0]=V_X/la;
|
25
|
+
Normal_F[9*i+0]=V_X/la; //➀V_Xが流れてくる。面の法線を計算したものを用意。
|
20
26
|
|
21
|
-
Normal_F[9*i+1]=V_Y/la;
|
27
|
+
Normal_F[9*i+1]=V_Y/la; //➀V_Yが流れてくる。面の法線を計算したものを用意。
|
22
28
|
|
23
|
-
Normal_F[9*i+2]=V_Z/la;
|
29
|
+
Normal_F[9*i+2]=V_Z/la; //➀V_Zが流れてくる。面の法線を計算したものを用意。
|
24
30
|
|
25
31
|
|
26
32
|
|
27
|
-
Normal_K[9*i+0]=0.0;
|
33
|
+
Normal_K[9*i+0]=0.0; //➁すべての頂点の法線を一旦クリアする。
|
28
34
|
|
29
35
|
Normal_K[9*i+1]=0.0;
|
30
36
|
|
@@ -40,9 +46,9 @@
|
|
40
46
|
|
41
47
|
|
42
48
|
|
43
|
-
if(v[j] == v[3*a[0]-3]){
|
49
|
+
if(v[j] == v[3*a[0]-3]){ //流れるv座標と、faceのxを比較。
|
44
50
|
|
45
|
-
Normal_K[9*i+0]+=Normal_F[9*i+0]; //+V_X/l
|
51
|
+
Normal_K[9*i+0]+=Normal_F[9*i+0]; //+V_X/l //頂点の法線に面の法線を加算する。
|
46
52
|
|
47
53
|
}
|
48
54
|
|
@@ -50,7 +56,7 @@
|
|
50
56
|
|
51
57
|
|
52
58
|
|
53
|
-
if(v[j] == v[3*a[0]-2]){//
|
59
|
+
if(v[j] == v[3*a[0]-2]){//流れるv座標と、faceのyを比較。
|
54
60
|
|
55
61
|
|
56
62
|
|
@@ -60,7 +66,7 @@
|
|
60
66
|
|
61
67
|
|
62
68
|
|
63
|
-
if(v[j] == v[3*a[0]-1]){//
|
69
|
+
if(v[j] == v[3*a[0]-1]){//流れるv座標と、faceのzを比較。
|
64
70
|
|
65
71
|
|
66
72
|
|
@@ -88,4 +94,4 @@
|
|
88
94
|
|
89
95
|
```
|
90
96
|
|
91
|
-
としてみたのですがオブジェクトが黒くなりました。
|
97
|
+
としてみたのですがオブジェクトが黒くなりうまくいきませんでした。
|
3
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
|
52
52
|
|
53
|
-
if(v[j] == v[3*a[0]-2]){//y
|
53
|
+
if(v[j] == v[3*a[0]-2]){//y座標
|
54
54
|
|
55
55
|
|
56
56
|
|
@@ -60,7 +60,7 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
-
if(v[j] == v[3*a[0]-1]){//z
|
63
|
+
if(v[j] == v[3*a[0]-1]){//z座標
|
64
64
|
|
65
65
|
|
66
66
|
|
@@ -88,4 +88,4 @@
|
|
88
88
|
|
89
89
|
```
|
90
90
|
|
91
|
-
としてみた
|
91
|
+
としてみたのですがオブジェクトが黒くなりました。
|
2
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -82,6 +82,10 @@
|
|
82
82
|
|
83
83
|
|
84
84
|
|
85
|
+
|
86
|
+
|
87
|
+
追記 }
|
88
|
+
|
85
89
|
```
|
86
90
|
|
87
91
|
としてみたところオブジェクトが黒くなりました。
|
1
文の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
if(v[j] == v[3*a[0]-3]){
|
44
44
|
|
45
|
-
Normal_K[9*i+0]+=Normal_F[9*i+0]; //+V_X/l housen wo tasu
|
45
|
+
Normal_K[9*i+0]+=Normal_F[9*i+0]; //+V_X/l seikikasareta housen wo tasu
|
46
46
|
|
47
47
|
}
|
48
48
|
|