teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

文章を修正しました。

2021/10/22 08:16

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- opnegl objローダーの書き方が知りたい。
1
+ opnegl objローダーのUV座標の設定が知りたい。
body CHANGED
@@ -1,17 +1,13 @@
1
- 提示コードの下部のコメント部の`LoadObj()`関数部ですがobjロードの正しい書き方がわからずモデル上手くロードできません。これは何が原因なのでしょうか?objインデックスは1から始めでそこから1引いてるます。参考サイト参考objローダーを記述たのですがモデルの形がおかくテクスチャの位置もおかし
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
+ ![イメージ説明](64f40c8d83e0b005b77c1bccba3235ec.png)
12
- ![イメージ説明](993951cd540343571374c762854893a9.png)
9
+ ![イメージ説明](3cff5d103ae817b3e4f99757d66d45fc.png)
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を修正

2021/10/22 08:16

投稿

退会済みユーザー
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
  ![イメージ説明](993951cd540343571374c762854893a9.png)
14
13
 

3

文章を修正

2021/10/22 02:12

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
 
9
9
 
10
- Github: [https://github.com/Shigurechan/GL/tree/ecfd824056923a0e44a46cc983211cb189c275f7
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
  ![イメージ説明](993951cd540343571374c762854893a9.png)
@@ -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
- // obj.vertex.push_back(vert);
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
- //obj.uv.push_back(u);
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
- //obj.normal.push_back(norm);
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
- obj.vertexIndex.push_back(v[1]);
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
- obj.vertex.push_back(v);
252
+ // obj.vertex.push_back(v);
252
- obj.uv.push_back(u);
253
+ // obj.uv.push_back(u);
253
- obj.normal .push_back(n);
254
+ // obj.normal .push_back(n);
254
255
 
255
256
  }
256
257
  }

2

文章を修正

2021/10/22 02:12

投稿

退会済みユーザー
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

文章を修正

2021/10/22 01:52

投稿

退会済みユーザー
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
  ![イメージ説明](993951cd540343571374c762854893a9.png)
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
  ```