質問編集履歴
5
文章を修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,21 +14,19 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
|
17
|
+
github: [https://github.com/Shigurechan/GL/tree/2d0637094ec1ec58d84288422b3e9db3b88e97d8](https://github.com/Shigurechan/GL/tree/2d0637094ec1ec58d84288422b3e9db3b88e97d8)
|
18
18
|
|
19
19
|
|
20
20
|
|
21
21
|
参考サイト:[http://www.opengl-tutorial.org/jp/beginners-tutorials/tutorial-7-model-loading/](http://www.opengl-tutorial.org/jp/beginners-tutorials/tutorial-7-model-loading/)
|
22
22
|
|
23
|
-
|
24
|
-
|
25
23
|
![イメージ説明](cedb5ca90f9f3a4633bc6e483220144d.png)
|
26
24
|
|
27
25
|
|
28
26
|
|
29
27
|
|
30
28
|
|
31
|
-
|
29
|
+
|
32
30
|
|
33
31
|
##### Mode.cpp
|
34
32
|
|
4
文章を修正しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
[OpenGL] 頂点インデックス、法線、UVに対応したOBJローダーを作りたい。
|
test
CHANGED
@@ -1,4 +1,14 @@
|
|
1
|
-
提示コードの下部のコメント部ですが。法線とUV座標の設定方法がわかりません。
|
1
|
+
提示コードの下部のコメント部内部ですが。頂点インデックスに対応した場合での法線とUV座標の設定方法がわかりません。頂点インデックスの実装はできているのですが法線やUV座標がおかしいため以下の画像のうなライティングになってしまいます。提示サイトを参考にOBJローダーを作成したのですが
|
2
|
+
|
3
|
+
どうすればUV座標、法線を正しく設定できるのでしょうか?OBJファイルはブレンダーで作成しました。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
##### 試したこと
|
8
|
+
|
9
|
+
試しにインデックスの値を使わず直接法線と。UVを設定。
|
10
|
+
|
11
|
+
ブレンダーでテクスチャを設定してインポート
|
2
12
|
|
3
13
|
|
4
14
|
|
3
文章を修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
opengl objローダー
|
1
|
+
opengl objローダーを作りたい。
|
test
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
提示コードの下部のコメント部ですが。法線とUV座標の設定方法がわかりません。参考サイトを参考に objローダーを作成したのですが下記のコメント部のコードはどうしたらいいのでしょうか?色々触りましたがどれも正しく設定されません。
|
1
|
+
提示コードの下部のコメント部ですが。法線とUV座標の設定方法がわかりません。参考サイトを参考に objローダーを作成したのですが下記のコメント部のコードはどうしたらいいのでしょうか?色々触りましたがどれも正しく設定されません。コメント部の内部のコードは頂点インデックスを用いる場合どうやって設定すればいいのでしょうか?
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
|
2
8
|
|
3
9
|
|
4
10
|
|
2
文章を修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,6 +12,8 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
+
github: [https://github.com/Shigurechan/GL/tree/2d0637094ec1ec58d84288422b3e9db3b88e97d8](https://github.com/Shigurechan/GL/tree/2d0637094ec1ec58d84288422b3e9db3b88e97d8)
|
16
|
+
|
15
17
|
##### Mode.cpp
|
16
18
|
|
17
19
|
```
|
1
文章を修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
opengl objローダーで法線とUV座標
|
1
|
+
opengl objローダーで法線とUV座標の設定方法が知りたい。
|
test
CHANGED
@@ -1,20 +1,18 @@
|
|
1
|
-
提示コードの下部のコメント部
|
1
|
+
提示コードの下部のコメント部ですが。法線とUV座標の設定方法がわかりません。参考サイトを参考に objローダーを作成したのですが下記のコメント部のコードはどうしたらいいのでしょうか?色々触りましたがどれも正しく設定されません。
|
2
|
-
|
3
|
-
|
2
|
+
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
|
4
|
+
|
11
|
-
参考サイト:
|
5
|
+
参考サイト:[http://www.opengl-tutorial.org/jp/beginners-tutorials/tutorial-7-model-loading/](http://www.opengl-tutorial.org/jp/beginners-tutorials/tutorial-7-model-loading/)
|
12
|
-
|
6
|
+
|
7
|
+
|
8
|
+
|
13
|
-
![イメージ説明](e
|
9
|
+
![イメージ説明](cedb5ca90f9f3a4633bc6e483220144d.png)
|
14
|
-
|
15
|
-
|
10
|
+
|
16
|
-
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
17
|
-
##### Mode
|
15
|
+
##### Mode.cpp
|
18
16
|
|
19
17
|
```
|
20
18
|
|
@@ -60,9 +58,9 @@
|
|
60
58
|
|
61
59
|
{
|
62
60
|
|
63
|
-
shader->Input(FrameWork::LoadShader("Shader/3D/Phong.vert")->data(), FrameWork::LoadShader("Shader/3D/Phong.frag")->data());
|
61
|
+
//shader->Input(FrameWork::LoadShader("Shader/3D/Phong.vert")->data(), FrameWork::LoadShader("Shader/3D/Phong.frag")->data());
|
64
|
-
|
62
|
+
|
65
|
-
|
63
|
+
shader->Input(FrameWork::LoadShader("Shader/3D/BasicMono_3D.vert")->data(), FrameWork::LoadShader("Shader/3D/BasicMono_3D.frag")->data());
|
66
64
|
|
67
65
|
//shader->Input(FrameWork::LoadShader("Shader/3D/BasicTexture_3D.vert")->data(), FrameWork::LoadShader("Shader/3D/BasicTexture_3D.frag")->data());
|
68
66
|
|
@@ -98,7 +96,7 @@
|
|
98
96
|
|
99
97
|
|
100
98
|
|
101
|
-
|
99
|
+
/*
|
102
100
|
|
103
101
|
//法線
|
104
102
|
|
@@ -110,7 +108,7 @@
|
|
110
108
|
|
111
109
|
shader->setBindAttribLocation("vertexNormal");
|
112
110
|
|
113
|
-
|
111
|
+
*/
|
114
112
|
|
115
113
|
/*
|
116
114
|
|
@@ -128,13 +126,15 @@
|
|
128
126
|
|
129
127
|
|
130
128
|
|
129
|
+
glBufferData(GL_ARRAY_BUFFER, obj.vertex.size() * sizeof(obj.vertex[0]), NULL, GL_STATIC_DRAW); //頂点
|
130
|
+
|
131
|
-
glBufferData(GL_ARRAY_BUFFER, obj.vertex.size() * sizeof(obj.vertex[0]) + obj.normal.size() * sizeof(obj.normal[0]), NULL, GL_STATIC_DRAW); //頂点
|
131
|
+
//glBufferData(GL_ARRAY_BUFFER, obj.vertex.size() * sizeof(obj.vertex[0]) + obj.normal.size() * sizeof(obj.normal[0]), NULL, GL_STATIC_DRAW); //頂点
|
132
|
-
|
133
|
-
|
134
|
-
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
-
glBufferSubData(GL_ARRAY_BUFFER, 0, obj.vertex.size() * sizeof(obj.vertex[0]), obj.vertex.data()); //頂点データ
|
135
|
+
glBufferSubData(GL_ARRAY_BUFFER, 0, obj.vertex.size() * sizeof(obj.vertex[0]), obj.vertex.data()); //頂点データ
|
136
|
-
|
136
|
+
|
137
|
-
glBufferSubData(GL_ARRAY_BUFFER, obj.vertex.size() * sizeof(obj.vertex[0]), obj.normal.size() * sizeof(obj.normal[0]), obj.normal.data()); //法線データ
|
137
|
+
// glBufferSubData(GL_ARRAY_BUFFER, obj.vertex.size() * sizeof(obj.vertex[0]), obj.normal.size() * sizeof(obj.normal[0]), obj.normal.data()); //法線データ
|
138
138
|
|
139
139
|
|
140
140
|
|
@@ -264,7 +264,7 @@
|
|
264
264
|
|
265
265
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
266
266
|
|
267
|
-
glBindTexture(GL_TEXTURE_2D, 0);
|
267
|
+
//glBindTexture(GL_TEXTURE_2D, 0);
|
268
268
|
|
269
269
|
//shader->setDisable();
|
270
270
|
|
@@ -372,7 +372,7 @@
|
|
372
372
|
|
373
373
|
//u.y = 1.0f - u.y;
|
374
374
|
|
375
|
-
obj.uv.push_back(u);
|
375
|
+
// obj.uv.push_back(u);
|
376
376
|
|
377
377
|
uv.push_back(u);
|
378
378
|
|
@@ -388,7 +388,7 @@
|
|
388
388
|
|
389
389
|
fscanf(file, "%f %f %fn", &norm.x, &norm.y, &norm.z);
|
390
390
|
|
391
|
-
|
391
|
+
obj.normal.push_back(norm);
|
392
392
|
|
393
393
|
normal.push_back(norm);
|
394
394
|
|
@@ -460,7 +460,7 @@
|
|
460
460
|
|
461
461
|
}
|
462
462
|
|
463
|
-
////////////////////////////////////////////////////////////////////////////////////
|
463
|
+
////////////////////////////////////////////////////////////////////////////////////
|
464
464
|
|
465
465
|
for( unsigned int i = 0; i < vertexIndex.size(); i++ )
|
466
466
|
|
@@ -484,26 +484,26 @@
|
|
484
484
|
|
485
485
|
glm::vec2 u = uv[ ui - 1];
|
486
486
|
|
487
|
-
glm::vec3 n = normal[ ni
|
487
|
+
glm::vec3 n = normal[ ni- 1];
|
488
488
|
|
489
489
|
|
490
490
|
|
491
491
|
//obj.vertex.push_back(v);
|
492
492
|
|
493
|
-
|
493
|
+
//obj.uv.push_back(u);
|
494
|
-
|
494
|
+
|
495
|
-
obj.normal.push_back(n);
|
495
|
+
//obj.normal.push_back(n);
|
496
496
|
|
497
497
|
}
|
498
498
|
|
499
499
|
}
|
500
500
|
|
501
|
+
//////////////////////////////////////////////////////////////////////////////////
|
502
|
+
|
501
503
|
attribute = obj;
|
502
504
|
|
503
505
|
}
|
504
506
|
|
505
|
-
/////////////////////////////////////////////////////////////////////////////////////
|
506
|
-
|
507
507
|
|
508
508
|
|
509
509
|
```
|