質問編集履歴
5
文章を修正しました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
opnegl objローダーの
|
1
|
+
opnegl objローダーのUV座標の設定方法が知りたい。
|
body
CHANGED
@@ -1,17 +1,13 @@
|
|
1
|
-
提示コードの下部の
|
1
|
+
提示コードの下部の`LoadObj()`関数部ですがobjロードの正しい書き方がわからずモデルに上手くUV座標を設定できません。これは何が原因なのでしょうか?objファイルの中にあるuv座標を`std::vector<glm::vec2> uv `に代入してそれを`Object`クラスでロードして設定しても座標おかしく正常に描画されません。これはなぜでしょうか?原因がわかりません。
|
2
2
|
|
3
|
-
##### 試したこと、確認したこと。
|
4
|
-
uv座標を考えないただの頂点描画でフラグメントシェーダーで単色をつける描画では正常に立方体が描画できているのでobjファイルには問題はないです。
|
5
|
-
描画できているため。opengl側は問題ないです。
|
6
3
|
|
7
4
|
|
8
5
|
|
9
|
-
|
10
6
|
Github: [https://github.com/Shigurechan/GL](https://github.com/Shigurechan/GL)
|
11
7
|
参考サイト: [https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108](https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108)
|
8
|
+

|
12
|
-

|
13
10
|
|
14
|
-
|
15
11
|
##### Mode.cpp
|
16
12
|
```
|
17
13
|
#include "../header/Model.hpp"
|
@@ -109,7 +105,7 @@
|
|
109
105
|
|
110
106
|
//glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * 3 * obj.vertex.size(), obj.vertex.data());
|
111
107
|
|
112
|
-
glActiveTexture(GL_TEXTURE0);
|
108
|
+
glActiveTexture(GL_TEXTURE0); //テクスチャ有効
|
113
109
|
|
114
110
|
//Transform
|
115
111
|
setPosition(glm::vec3(0, 0, -50)); //座標
|
@@ -138,7 +134,7 @@
|
|
138
134
|
{
|
139
135
|
|
140
136
|
}
|
141
|
-
|
137
|
+
|
142
138
|
// ##################################### .objファイル読み込み #####################################
|
143
139
|
void FrameWork::D3::LoadObj(const char *fileName, ObjFile &attribute)
|
144
140
|
{
|
@@ -242,9 +238,10 @@
|
|
242
238
|
unsigned int ni = normalIndex[i];
|
243
239
|
|
244
240
|
obj.vertexIndex.push_back(vi - 1);
|
241
|
+
|
245
242
|
// Get the attributes thanks to the index
|
246
243
|
glm::vec3 v = vertex[ vi - 1 ];
|
247
|
-
glm::vec2 u = uv[ ui - 1
|
244
|
+
glm::vec2 u = uv[ ui - 1];
|
248
245
|
glm::vec3 n = normal[ ni - 1 ];
|
249
246
|
|
250
247
|
// Put the attributes in buffers
|
@@ -265,5 +262,7 @@
|
|
265
262
|
|
266
263
|
attribute = obj;
|
267
264
|
}
|
268
|
-
|
265
|
+
|
266
|
+
|
267
|
+
|
269
268
|
```
|
4
URLを修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,7 +8,6 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
Github: [https://github.com/Shigurechan/GL](https://github.com/Shigurechan/GL)
|
11
|
-
](https://github.com/Shigurechan/GL/tree/ecfd824056923a0e44a46cc983211cb189c275f7)
|
12
11
|
参考サイト: [https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108](https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108)
|
13
12
|

|
14
13
|
|
3
文章を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
|
10
|
-
Github: [https://github.com/Shigurechan/GL/
|
10
|
+
Github: [https://github.com/Shigurechan/GL](https://github.com/Shigurechan/GL)
|
11
11
|
](https://github.com/Shigurechan/GL/tree/ecfd824056923a0e44a46cc983211cb189c275f7)
|
12
12
|
参考サイト: [https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108](https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108)
|
13
13
|

|
@@ -177,14 +177,14 @@
|
|
177
177
|
glm::vec3 vert;
|
178
178
|
fscanf(file, "%f %f %fn", &vert.x, &vert.y, &vert.z);
|
179
179
|
vertex.push_back(vert);
|
180
|
-
|
180
|
+
obj.vertex.push_back(vert);
|
181
181
|
}
|
182
182
|
else if (strcmp(line, "vt") == 0)
|
183
183
|
{
|
184
184
|
|
185
185
|
glm::vec2 u;
|
186
186
|
fscanf(file, "%f %fn", &u.x, &u.y);
|
187
|
-
|
187
|
+
obj.uv.push_back(u);
|
188
188
|
uv.push_back(u);
|
189
189
|
}
|
190
190
|
else if (strcmp(line, "vn") == 0)
|
@@ -192,7 +192,7 @@
|
|
192
192
|
|
193
193
|
glm::vec3 norm;
|
194
194
|
fscanf(file, "%f %f %fn", &norm.x, &norm.y, &norm.z);
|
195
|
-
|
195
|
+
obj.normal.push_back(norm);
|
196
196
|
normal.push_back(norm);
|
197
197
|
}
|
198
198
|
else if (strcmp(line, "f") == 0)
|
@@ -210,9 +210,9 @@
|
|
210
210
|
vertexIndex.push_back(v[0]);
|
211
211
|
vertexIndex.push_back(v[1]);
|
212
212
|
vertexIndex.push_back(v[2]);
|
213
|
-
obj.vertexIndex.push_back(v[0]);
|
213
|
+
//obj.vertexIndex.push_back(v[0] - 1);
|
214
|
-
|
214
|
+
// obj.vertexIndex.push_back(v[1] - 1);
|
215
|
-
obj.vertexIndex.push_back(v[2]);
|
215
|
+
//obj.vertexIndex.push_back(v[2] - 1);
|
216
216
|
|
217
217
|
|
218
218
|
uvIndex.push_back(u[0]);
|
@@ -234,7 +234,7 @@
|
|
234
234
|
}
|
235
235
|
|
236
236
|
|
237
|
-
for( unsigned int i = 0; i<vertexIndex.size(); i++ )
|
237
|
+
for( unsigned int i = 0; i < vertexIndex.size(); i++ )
|
238
238
|
{
|
239
239
|
|
240
240
|
// Get the indices of its attributes
|
@@ -242,15 +242,16 @@
|
|
242
242
|
unsigned int ui = uvIndex[i];
|
243
243
|
unsigned int ni = normalIndex[i];
|
244
244
|
|
245
|
+
obj.vertexIndex.push_back(vi - 1);
|
245
246
|
// Get the attributes thanks to the index
|
246
247
|
glm::vec3 v = vertex[ vi - 1 ];
|
247
248
|
glm::vec2 u = uv[ ui - 1 ];
|
248
249
|
glm::vec3 n = normal[ ni - 1 ];
|
249
250
|
|
250
251
|
// Put the attributes in buffers
|
251
|
-
|
252
|
+
// obj.vertex.push_back(v);
|
252
|
-
|
253
|
+
// obj.uv.push_back(u);
|
253
|
-
|
254
|
+
// obj.normal .push_back(n);
|
254
255
|
|
255
256
|
}
|
256
257
|
}
|
2
文章を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
##### 試したこと、確認したこと。
|
4
4
|
uv座標を考えないただの頂点描画でフラグメントシェーダーで単色をつける描画では正常に立方体が描画できているのでobjファイルには問題はないです。
|
5
|
+
描画できているため。opengl側は問題ないです。
|
5
6
|
|
6
7
|
|
7
8
|
|
8
9
|
|
9
|
-
|
10
10
|
Github: [https://github.com/Shigurechan/GL/tree/ecfd824056923a0e44a46cc983211cb189c275f7
|
11
11
|
](https://github.com/Shigurechan/GL/tree/ecfd824056923a0e44a46cc983211cb189c275f7)
|
12
12
|
参考サイト: [https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108](https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108)
|
1
文章を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,14 +1,19 @@
|
|
1
|
-
提示コードの下部のLoadObj()関数部ですがobjロードの正しい書き方がわからずモデルを上手くロードできません。これは何が原因なのでしょうか?
|
2
|
-
objインデックスは1から始めるでそこから1引いてるます。参考サイトを参考にobjローダーを記述したのですがモデルの形がおかしくテクスチャの位置もおかしいです。
|
1
|
+
提示コードの下部のコメント部の`LoadObj()`関数部ですがobjロードの正しい書き方がわからずモデルを上手くロードできません。これは何が原因なのでしょうか?objインデックスは1から始めるでそこから1引いてるます。参考サイトを参考にobjローダーを記述したのですがモデルの形がおかしくテクスチャの位置もおかしいです。
|
3
2
|
|
3
|
+
##### 試したこと、確認したこと。
|
4
|
+
uv座標を考えないただの頂点描画でフラグメントシェーダーで単色をつける描画では正常に立方体が描画できているのでobjファイルには問題はないです。
|
4
5
|
|
5
6
|
|
6
7
|
|
7
8
|
|
9
|
+
|
8
10
|
Github: [https://github.com/Shigurechan/GL/tree/ecfd824056923a0e44a46cc983211cb189c275f7
|
9
11
|
](https://github.com/Shigurechan/GL/tree/ecfd824056923a0e44a46cc983211cb189c275f7)
|
10
12
|
参考サイト: [https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108](https://github.com/opengl-tutorials/ogl/blob/master/common/objloader.cpp#L91-L108)
|
11
13
|

|
14
|
+
|
15
|
+
|
16
|
+
##### Mode.cpp
|
12
17
|
```
|
13
18
|
#include "../header/Model.hpp"
|
14
19
|
|
@@ -134,7 +139,7 @@
|
|
134
139
|
{
|
135
140
|
|
136
141
|
}
|
137
|
-
|
142
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
138
143
|
// ##################################### .objファイル読み込み #####################################
|
139
144
|
void FrameWork::D3::LoadObj(const char *fileName, ObjFile &attribute)
|
140
145
|
{
|
@@ -260,5 +265,5 @@
|
|
260
265
|
|
261
266
|
attribute = obj;
|
262
267
|
}
|
263
|
-
|
268
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
264
269
|
```
|