質問編集履歴

8

画像を差し替え

2021/10/29 10:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -26,19 +26,17 @@
26
26
 
27
27
 
28
28
 
29
- ![イメージ説明](e593cca90764961be7c28446eb20ced7.png)
29
+ ![イメージ説明](c9023e358cdf0eb5d6dc7a1dd378f398.png)
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
41
- mode.cpp
39
+ ##### mode.cpp
42
40
 
43
41
  ```
44
42
 

7

文章を修正

2021/10/29 10:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -20,15 +20,7 @@
20
20
 
21
21
 
22
22
 
23
-
24
-
25
-
26
-
27
-
28
-
29
- Github: [https://github.com/Shigurechan/GL/tree/1cbb996dcd55330beb10f57cbe863d7d24aeb41c](https://github.com/Shigurechan/GL/tree/1cbb996dcd55330beb10f57cbe863d7d24aeb41c)
23
+ Github: [https://github.com/Shigurechan/GL/tree/14b9ed0e2d87eafaae0b3b11fd42660b7d3f07b7](https://github.com/Shigurechan/GL/tree/14b9ed0e2d87eafaae0b3b11fd42660b7d3f07b7)
30
-
31
-
32
24
 
33
25
 
34
26
 

6

文章を修正

2021/10/29 10:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -128,8 +128,6 @@
128
128
 
129
129
  vertex.push_back(vert);
130
130
 
131
- // obj.vertex.push_back(vert);
132
-
133
131
  }
134
132
 
135
133
  else if (strcmp(line, "vt") == 0)
@@ -140,10 +138,6 @@
140
138
 
141
139
  fscanf(file, "%f %fn", &u.x, &u.y);
142
140
 
143
- //u.y = 1.0f - u.y;
144
-
145
- // obj.uv.push_back(u);
146
-
147
141
  uv.push_back(u);
148
142
 
149
143
  }
@@ -152,14 +146,10 @@
152
146
 
153
147
  {
154
148
 
155
-
156
-
157
149
  glm::vec3 norm;
158
150
 
159
151
  fscanf(file, "%f %f %fn", &norm.x, &norm.y, &norm.z);
160
152
 
161
- // obj.normal.push_back(norm);
162
-
163
153
  normal.push_back(norm);
164
154
 
165
155
  }
@@ -168,28 +158,10 @@
168
158
 
169
159
  {
170
160
 
171
-
172
-
173
- std::string vertex1, vertex2, vertex3;
174
-
175
161
  unsigned int v[3], u[3], n[3];
176
162
 
177
163
  int matches = fscanf(file, "%d/%d/%d %d/%d/%d %d/%d/%dn", &v[0], &u[0], &n[0], &v[1], &u[1], &n[1], &v[2], &u[2], &n[2]);
178
164
 
179
- if (matches != 9)
180
-
181
- {
182
-
183
- printf("File can't be read by our simple parser : ( Try exporting with other optionsn");
184
-
185
- assert(0);
186
-
187
- }
188
-
189
-
190
-
191
-
192
-
193
165
 
194
166
 
195
167
  vertexIndex.push_back(v[0]);
@@ -198,7 +170,7 @@
198
170
 
199
171
  vertexIndex.push_back(v[2]);
200
172
 
201
-
173
+
202
174
 
203
175
  uvIndex.push_back(u[0]);
204
176
 
@@ -206,95 +178,75 @@
206
178
 
207
179
  uvIndex.push_back(u[2]);
208
180
 
209
-
181
+
210
182
 
211
183
  normalIndex.push_back(n[0]);
212
184
 
213
185
  normalIndex.push_back(n[1]);
214
186
 
215
- normalIndex.push_back(n[2]);
187
+ normalIndex.push_back(n[2]);
216
-
217
-
218
188
 
219
189
  }
220
190
 
221
191
  }
222
192
 
223
-
224
-
225
- ////////////////////////////////////////////////////////////////////////////////////////////////////
193
+ //////////////////////////////////////////////////////////////////////////////////////
226
-
194
+
227
- for( unsigned int i = 0; i < vertexIndex.size(); i++ )
195
+ for (unsigned int i = 0; i < vertexIndex.size(); i++)
228
196
 
229
197
  {
230
198
 
231
- int v = vertexIndex[i];
199
+ unsigned int vi = vertexIndex[i];
200
+
232
-
201
+ unsigned int ui = uvIndex[i];
202
+
203
+ unsigned int ni = normalIndex[i];
204
+
205
+
206
+
233
- glm::vec3 n = glm::vec3(0,0,0);
207
+ glm::vec3 v = vertex[vi - 1];
234
-
235
- for( unsigned int j = 0; j < vertexIndex.size(); j++ )
208
+
236
-
237
- {
238
-
239
- if(v == vertexIndex[j])
209
+ glm::vec2 u = uv[ui - 1];
240
-
241
- {
210
+
242
-
243
- n += normal[ normalIndex[j] - 1 ];
211
+ glm::vec3 n = normal[ni - 1];
212
+
213
+
214
+
215
+
216
+
244
-
217
+ VertexAttribute attrib;
218
+
219
+
220
+
221
+ attrib.position[0] = v.x;
222
+
223
+ attrib.position[1] = v.y;
224
+
225
+ attrib.position[2] = v.z;
226
+
227
+
228
+
245
- }
229
+ attrib.uv[0] = u.x;
246
-
230
+
247
- }
231
+ attrib.uv[1] = u.y;
232
+
233
+
234
+
248
-
235
+ attrib.normal[0] = n.x;
236
+
249
-
237
+ attrib.normal[1] = n.y;
238
+
250
-
239
+ attrib.normal[2] = n.z;
240
+
241
+
242
+
251
- obj.normal.push_back(glm::normalize(n));
243
+ obj.attribute.push_back(attrib);
252
244
 
253
245
  }
254
246
 
255
- ///////////////////////////////////////////////////////////////////////////////////////////////////
247
+ /////////////////////////////////////////////////////////////////////////////////////
256
-
257
-
258
-
259
- for( unsigned int i = 0; i < vertexIndex.size(); i++ )
248
+
260
-
261
- {
262
-
263
-
264
-
265
- unsigned int vi = vertexIndex[i];
266
-
267
- unsigned int ui = uvIndex[i];
268
-
269
- unsigned int ni = normalIndex[i];
270
-
271
-
272
-
273
-
274
-
275
-
276
-
277
- glm::vec3 v = vertex[ vi - 1];
278
-
279
- glm::vec2 u = uv[ ui - 1];
280
-
281
- glm::vec3 n = normal[ ni - 1];
282
-
283
-
284
-
285
-
286
-
287
- obj.vertex.push_back(v);
288
-
289
- obj.uv.push_back(u);
290
-
291
- //obj.normal.push_back(n);
292
-
293
- }
249
+ }
294
-
295
-
296
-
297
- }
298
250
 
299
251
  attribute = obj;
300
252
 
@@ -302,6 +254,8 @@
302
254
 
303
255
 
304
256
 
257
+
258
+
305
259
  ```
306
260
 
307
261
 

5

文章を修正

2021/10/29 09:55

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -16,6 +16,8 @@
16
16
 
17
17
  また頂点データ等を正しくopenglに渡せていることを確認しました。
18
18
 
19
+ objファイルのデータは面法線
20
+
19
21
 
20
22
 
21
23
 

4

文章を修正

2021/10/29 09:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
 
4
4
 
5
+ ##### 知りたいこと
6
+
7
+ 面法線から頂点法線を算出したい。
8
+
9
+
10
+
5
11
 
6
12
 
7
13
  ##### 確認したこと
@@ -16,6 +22,8 @@
16
22
 
17
23
 
18
24
 
25
+
26
+
19
27
  Github: [https://github.com/Shigurechan/GL/tree/1cbb996dcd55330beb10f57cbe863d7d24aeb41c](https://github.com/Shigurechan/GL/tree/1cbb996dcd55330beb10f57cbe863d7d24aeb41c)
20
28
 
21
29
 

3

文章を修正

2021/10/29 09:22

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,14 @@
28
28
 
29
29
 
30
30
 
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
31
39
  mode.cpp
32
40
 
33
41
  ```
@@ -285,3 +293,103 @@
285
293
 
286
294
 
287
295
  ```
296
+
297
+
298
+
299
+ ##### Cube.obj
300
+
301
+ ```
302
+
303
+ # Blender v2.93.5 OBJ File: ''
304
+
305
+ # www.blender.org
306
+
307
+ mtllib Cube.mtl
308
+
309
+ o Cube
310
+
311
+ v 1.000000 1.000000 -1.000000
312
+
313
+ v 1.000000 -1.000000 -1.000000
314
+
315
+ v 1.000000 1.000000 1.000000
316
+
317
+ v 1.000000 -1.000000 1.000000
318
+
319
+ v -1.000000 1.000000 -1.000000
320
+
321
+ v -1.000000 -1.000000 -1.000000
322
+
323
+ v -1.000000 1.000000 1.000000
324
+
325
+ v -1.000000 -1.000000 1.000000
326
+
327
+ vt 0.875000 0.500000
328
+
329
+ vt 0.625000 0.750000
330
+
331
+ vt 0.625000 0.500000
332
+
333
+ vt 0.375000 1.000000
334
+
335
+ vt 0.375000 0.750000
336
+
337
+ vt 0.625000 0.000000
338
+
339
+ vt 0.375000 0.250000
340
+
341
+ vt 0.375000 0.000000
342
+
343
+ vt 0.375000 0.500000
344
+
345
+ vt 0.125000 0.750000
346
+
347
+ vt 0.125000 0.500000
348
+
349
+ vt 0.625000 0.250000
350
+
351
+ vt 0.875000 0.750000
352
+
353
+ vt 0.625000 1.000000
354
+
355
+ vn 0.0000 1.0000 0.0000
356
+
357
+ vn 0.0000 0.0000 1.0000
358
+
359
+ vn -1.0000 0.0000 0.0000
360
+
361
+ vn 0.0000 -1.0000 0.0000
362
+
363
+ vn 1.0000 0.0000 0.0000
364
+
365
+ vn 0.0000 0.0000 -1.0000
366
+
367
+ usemtl Material
368
+
369
+ s off
370
+
371
+ f 5/1/1 3/2/1 1/3/1
372
+
373
+ f 3/2/2 8/4/2 4/5/2
374
+
375
+ f 7/6/3 6/7/3 8/8/3
376
+
377
+ f 2/9/4 8/10/4 6/11/4
378
+
379
+ f 1/3/5 4/5/5 2/9/5
380
+
381
+ f 5/12/6 2/9/6 6/7/6
382
+
383
+ f 5/1/1 7/13/1 3/2/1
384
+
385
+ f 3/2/2 7/14/2 8/4/2
386
+
387
+ f 7/6/3 5/12/3 6/7/3
388
+
389
+ f 2/9/4 4/5/4 8/10/4
390
+
391
+ f 1/3/5 3/2/5 4/5/5
392
+
393
+ f 5/12/6 1/3/6 2/9/6
394
+
395
+ ```

2

文章を編集

2021/10/29 07:27

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,6 @@
1
- 提示コードですがコメント部内部のコードなのですがobjファイルにある面法線から頂点法線を求める方法が知りたいです。以下のように考えて実装してみたのですが提示画像のように正しい頂点法線を実装できません。これはどういったアルゴリズムなのでしょうか?
1
+ 提示コードですがコメント部内部のコードなのですがobjファイルにある面法線から頂点法線を求める方法が知りたいです。以下のように考えて実装してみたのですが提示画像のように正しい頂点法線を実装できません。これはどういったアルゴリズムなのでしょうか? objファイルはブレンダーで出力しました。
2
+
3
+
2
4
 
3
5
 
4
6
 
@@ -14,7 +16,7 @@
14
16
 
15
17
 
16
18
 
17
- Github: https://github.com/Shigurechan/GL/tree/1cbb996dcd55330beb10f57cbe863d7d24aeb41c
19
+ Github: [https://github.com/Shigurechan/GL/tree/1cbb996dcd55330beb10f57cbe863d7d24aeb41c](https://github.com/Shigurechan/GL/tree/1cbb996dcd55330beb10f57cbe863d7d24aeb41c)
18
20
 
19
21
 
20
22
 

1

文章を修正

2021/10/29 07:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
 
4
4
 
5
+ ##### 確認したこと
6
+
7
+ Phongのシェーディングを行っているのですがシェーダーコードは問題ありません。
8
+
9
+ また頂点データ等を正しくopenglに渡せていることを確認しました。
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ Github: https://github.com/Shigurechan/GL/tree/1cbb996dcd55330beb10f57cbe863d7d24aeb41c
18
+
5
19
 
6
20
 
7
21