質問編集履歴

6

文章を修正

2021/11/06 02:34

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- OpenGL 鏡面反射マップが実装出来無い。
1
+ OpenGL 鏡面反射マップが赤色に表示されてしまう原因が知りたい。
test CHANGED
@@ -1,6 +1,4 @@
1
- 提示コードですが鏡面反射のライトマップを実装したいのですが上手く実装できません。提示画像マップの画像描画されてしまいます。
1
+ 提示コードですが鏡面反射のライトマップを実装したいのですが上手く実装できません。これは何が原因なでしょか? 一番怪らしいフグメンシェーダーですなぜ赤色に表示されてしまうのでしょうか?
2
-
3
- これは何が原因なのでしょうか? 試したこと下記のようにスペキュラーにライトマップ画像を設定しているになぜライトマップの画像のみが表示されてしまうのでしょうか?
4
2
 
5
3
 
6
4
 
@@ -12,14 +10,22 @@
12
10
 
13
11
 
14
12
 
15
-
13
+ ライトマップ: [https://imgur.com/a/FK28Hke](https://imgur.com/a/FK28Hke)
16
-
14
+
17
- ![イメージ説明](df8fe004d89d83671773ed4e3a3cdf36.png)
15
+ テクスチャ: [https://imgur.com/a/TNbWEEy](https://imgur.com/a/TNbWEEy)
16
+
17
+
18
18
 
19
19
  参考サイト: [https://learnopengl.com/code_viewer_gh.php?code=src/2.lighting/4.2.lighting_maps_specular_map/lighting_maps_specular.cpp](https://learnopengl.com/code_viewer_gh.php?code=src/2.lighting/4.2.lighting_maps_specular_map/lighting_maps_specular.cpp)
20
20
 
21
21
 
22
22
 
23
+ ![イメージ説明](8eabe79b5f1967f8170588836cea542a.png)
24
+
25
+
26
+
27
+
28
+
23
29
  ##### Fragment Shader
24
30
 
25
31
  ```

5

文章を修正

2021/11/06 02:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,242 +1,24 @@
1
- 提示画像ですが参考サイトより鏡面反射マップを使って木箱の鉄の部分を強調て反射させたいのですがなぜか赤色になってしいますこれはなぜでしょか?コメンコード該当するコードなのですがなぜ赤色に描画されるのか参考サイトを参考にしましたが理由がわかりせん
1
+ 提示コードですが鏡面反射のライトマップを実装したいのですが上手く実装できせん提示画像のよにライマップ画像が描画されしま
2
+
3
+ これは何が原因なのでしょうか? 試したこと下記のようにスペキュラーにライトマップ画像を設定しているになぜライトマップの画像のみが表示されてしまうのでしょうか?
2
4
 
3
5
 
4
6
 
5
- 参考サイト: [https://learnopengl.com/Lighting/Lighting-maps](https://learnopengl.com/Lighting/Lighting-maps)
7
+ #####試したこと
6
8
 
7
-
8
-
9
- ##### 試したこと
10
-
11
- テクスチャの順番を入れ替える。
12
-
13
- テクスチャの一つを無効にする。
14
-
15
- ペキュー、アンビエン、ディフーズの三つの値変更
9
+ diffuse にテクチャ、specularにマップテクスチャ設定
16
10
 
17
11
 
18
12
 
19
13
 
20
14
 
21
- ![イメージ説明](8b2569ffaa795c32f54552888800a487.png)
22
15
 
23
16
 
17
+ ![イメージ説明](df8fe004d89d83671773ed4e3a3cdf36.png)
24
18
 
25
- ##### Model.cpp
26
-
27
- ```
28
-
29
- #include "../header/Model.hpp"
19
+ 参考サイト: [https://learnopengl.com/code_viewer_gh.php?code=src/2.lighting/4.2.lighting_maps_specular_map/lighting_maps_specular.cpp](https://learnopengl.com/code_viewer_gh.php?code=src/2.lighting/4.2.lighting_maps_specular_map/lighting_maps_specular.cpp)
30
20
 
31
21
 
32
-
33
- #include <iostream>
34
-
35
- #include <sstream>
36
-
37
- #include <fstream>
38
-
39
- #include <assert.h>
40
-
41
- #include <vector>
42
-
43
- #include <assimp/Importer.hpp>
44
-
45
- #include <assimp/scene.h>
46
-
47
- #include <assimp/postprocess.h>
48
-
49
- #include <glm/glm.hpp>
50
-
51
- #include <GL/glew.h>
52
-
53
- #include "../lib/stb/stb_image.h"
54
-
55
-
56
-
57
- #include "../header/Resource.hpp"
58
-
59
- #include "../header/Camera.hpp"
60
-
61
- #include "../header/Window.hpp"
62
-
63
- #include "../header/Camera.hpp"
64
-
65
-
66
-
67
- FrameWork::D3::Object::Object(ObjFile *o, short type) : Render()
68
-
69
- {
70
-
71
- renderType = type;
72
-
73
- obj = o; //オブジェクトファイル
74
-
75
- }
76
-
77
-
78
-
79
- void FrameWork::D3::Object::setTexture(GLuint tex)
80
-
81
- {
82
-
83
- textureID.push_back(tex);
84
-
85
- }
86
-
87
-
88
-
89
- void FrameWork::D3::Object::setVertexAttribute(const char *str, int num)
90
-
91
- {
92
-
93
- glBindVertexArray(vao);
94
-
95
- glBindBuffer(GL_ARRAY_BUFFER, vbo);
96
-
97
-
98
-
99
- shader->setVertexAttribute(str, num);
100
-
101
-
102
-
103
- glBindVertexArray(0);
104
-
105
- glBindBuffer(GL_ARRAY_BUFFER, 0);
106
-
107
- }
108
-
109
-
110
-
111
- void FrameWork::D3::Object::setVertexBuffer()
112
-
113
- {
114
-
115
- glBindVertexArray(vao);
116
-
117
- glBindBuffer(GL_ARRAY_BUFFER, vbo);
118
-
119
-
120
-
121
- glBufferData(GL_ARRAY_BUFFER, obj->attribute.size() * sizeof(VertexAttribute), obj->attribute.data(), GL_STATIC_DRAW); //頂点属性
122
-
123
-
124
-
125
- glBindBuffer(GL_ARRAY_BUFFER, 0);
126
-
127
- glBindVertexArray(0);
128
-
129
- }
130
-
131
-
132
-
133
- void FrameWork::D3::Object::setIndexBuffer()
134
-
135
- {
136
-
137
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, eao);
138
-
139
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, obj->index.size() * sizeof(unsigned int), obj->index.data(), GL_STATIC_DRAW); //頂点インデックス
140
-
141
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
142
-
143
- }
144
-
145
-
146
-
147
- void FrameWork::D3::Object::Renderer()
148
-
149
- {
150
-
151
- // shader->setEnable();
152
-
153
- glBindVertexArray(vao);
154
-
155
- glBindBuffer(GL_ARRAY_BUFFER, vbo);
156
-
157
-
158
-
159
- glActiveTexture(GL_TEXTURE0); //テクスチャ有効
160
-
161
- glBindTexture(GL_TEXTURE_2D, textureID.at(0)); // IDバインド
162
-
163
-
164
-
165
- glActiveTexture(GL_TEXTURE1); //テクスチャ有効
166
-
167
- glBindTexture(GL_TEXTURE_2D, textureID.at(1)); // IDバインド
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
- //描画
176
-
177
- shader->setUniformMatrix4fv("uTranslate", getMatTranslation());
178
-
179
- shader->setUniformMatrix4fv("uRotate", getMatRotate());
180
-
181
- shader->setUniformMatrix4fv("uScale", getMatScale());
182
-
183
- shader->setUniformMatrix4fv("uViewProjection", FrameWork::Camera::getViewProjection());
184
-
185
-
186
-
187
- if (obj->index.size() > 0)
188
-
189
- {
190
-
191
- // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, eao);
192
-
193
- // glDrawElements(GL_TRIANGLES, obj->index.size(), GL_UNSIGNED_INT,(void*)0); //描画
194
-
195
- // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
196
-
197
- }
198
-
199
- else
200
-
201
- {
202
-
203
- }
204
-
205
-
206
-
207
- glDrawArrays(GL_TRIANGLES, 0, obj->attribute.size()); //描画
208
-
209
-
210
-
211
- //バインド解除
212
-
213
- glBindVertexArray(0);
214
-
215
- glBindBuffer(GL_ARRAY_BUFFER, 0);
216
-
217
- glBindTexture(GL_TEXTURE_2D, 0);
218
-
219
- glBindTexture(GL_TEXTURE_2D, 1);
220
-
221
-
222
-
223
- // shader->setDisable();
224
-
225
- }
226
-
227
-
228
-
229
- FrameWork::D3::Object::~Object()
230
-
231
- {
232
-
233
-
234
-
235
- }
236
-
237
-
238
-
239
- ```
240
22
 
241
23
  ##### Fragment Shader
242
24
 
@@ -281,6 +63,8 @@
281
63
  {
282
64
 
283
65
  vec3 position;
66
+
67
+
284
68
 
285
69
  vec3 ambient;
286
70
 
@@ -342,7 +126,9 @@
342
126
 
343
127
  float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);
344
128
 
345
- vec3 specular = light.specular * spec * texture(material.specular , vUV).rgb;
129
+ vec3 specular = light.specular * spec * texture(material.specular, vUV).rgb;
130
+
131
+
346
132
 
347
133
 
348
134
 
@@ -360,165 +146,17 @@
360
146
 
361
147
 
362
148
 
363
-
364
-
365
149
  ##### Main.cpp
366
150
 
367
151
  ```
368
152
 
369
- #include "../header/FrameWork.hpp"
153
+ cube.shader->setEnable();
370
154
 
155
+ cube.setEnableTexture(0);//テクスチャ
156
+
371
- #include "../header/Resource.hpp"
157
+ cube.setEnableTexture(1);//ライトマップ
372
158
 
373
159
 
374
-
375
- #include <iostream>
376
-
377
- #include "../header/Camera.hpp"
378
-
379
- #include "../header/VertexData.hpp"
380
-
381
-
382
-
383
-
384
-
385
- int main()
386
-
387
- {
388
-
389
- FrameWork::Init(glm::ivec2(800, 600), glm::ivec2(4, 2), "FrameWork"); //初期化
390
-
391
- FrameWork::Camera::Init(); //カメラ初期化
392
-
393
-
394
-
395
-
396
-
397
-
398
-
399
- // FrameWork::Shader shaderCube("Shader/3D/BasicMono.vert","Shader/3D/BasicMono.frag");
400
-
401
- //FrameWork::Shader shaderCube("Shader/3D/BasicMaterial.vert","Shader/3D/BasicMaterial.frag");
402
-
403
-
404
-
405
- // FrameWork::Shader shaderCube("Shader/3D/BasicTexture.vert","Shader/3D/BasicTexture.frag");
406
-
407
- FrameWork::Shader shaderCube("Shader/3D/BasicLightMap.vert","Shader/3D/BasicLightMap.frag");
408
-
409
-
410
-
411
- // FrameWork::Shader shaderCube("Shader/3D/BasicPhong.vert","Shader/3D/BasicPhong.frag");
412
-
413
- FrameWork::Shader shaderGround("Shader/3D/BasicMono.vert","Shader/3D/BasicMono.frag");
414
-
415
- FrameWork::Shader shaderLightCube("Shader/3D/BasicMono.vert","Shader/3D/BasicMono.frag");
416
-
417
-
418
-
419
- //FrameWork::TextureFile texture = FrameWork::LoadTexture("Model/debug.png");
420
-
421
- //FrameWork::TextureFile texture = FrameWork::LoadTexture("Model/CubeTexture.png");
422
-
423
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
424
-
425
- GLuint texture2 = FrameWork::LoadTexture("Model/LightMap.png");
426
-
427
-
428
-
429
- GLuint texture1 = FrameWork::LoadTexture("Model/CubeTexture.png");
430
-
431
-
432
-
433
- FrameWork::ObjFile cubeFile;
434
-
435
- FrameWork::D3::LoadObj("Model/TextureCube.obj", cubeFile);
436
-
437
- FrameWork::D3::Object cube(&cubeFile,GL_STATIC_DRAW);
438
-
439
- cube.shader = &shaderCube;
440
-
441
- cube.shader->setVertexAttributeSize(sizeof(FrameWork::D3::VertexAttribute));
442
-
443
- cube.setVertexAttribute("vertexPosition",3);
444
-
445
- cube.setVertexAttribute("vertexUV",2);
446
-
447
- cube.setVertexAttribute("vertexNormal",3);
448
-
449
- cube.setVertexBuffer();
450
-
451
-
452
-
453
- cube.shader->setEnable();
454
-
455
- cube.shader->setUniform1i("material.diffuse",0);
456
-
457
- cube.shader->setUniform1i("material.specular", 1);
458
-
459
- cube.shader->setDisable();
460
-
461
-
462
-
463
- cube.setTexture(texture2);
464
-
465
- cube.setTexture(texture1);
466
-
467
-
468
-
469
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////
470
-
471
-
472
-
473
- float z = 0;
474
-
475
- float x = 0;
476
-
477
-
478
-
479
-
480
-
481
- float angleY = 0;
482
-
483
- float angleX = 0;
484
-
485
- float cameraLookSpeed = PI / 100; //視点移動速度
486
-
487
- float cameraMoveSpeed = 10.0f; //移動速度
488
-
489
- glm::vec3 cameraLook = glm::vec3(PI /2,PI,0);
490
-
491
- glm::ivec3 cameraPos = glm::ivec3(0, 0, 100);
492
-
493
-
494
-
495
-
496
-
497
- glm::vec3 cubePos = glm::vec3(0,0,-1);
498
-
499
- glm::vec3 lightPos = glm::vec3(0,100,-1);
500
-
501
- glm::vec3 groundPos = glm::vec3(0,0,-100);
502
-
503
-
504
-
505
- bool switchShader = false;
506
-
507
-
508
-
509
- while (*FrameWork::windowContext)
510
-
511
- {
512
-
513
- FrameWork::windowContext->FrameUpdate(glm::vec4(0, 0, 0, 255));
514
-
515
-
516
-
517
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
518
-
519
- // Cube
520
-
521
- cube.shader->setEnable();
522
160
 
523
161
  cube.setPosition(cubePos);
524
162
 
@@ -534,13 +172,15 @@
534
172
 
535
173
  cube.shader->setUniform3f("light.specular", glm::vec3(1.0f, 1.0f, 1.0f));
536
174
 
537
-
175
+
538
176
 
539
177
  cube.shader->setUniform1f("material.shininess", 64.0f);
540
178
 
179
+ cube.shader->setUniform1i("material.diffuse",0);
180
+
181
+ cube.shader->setUniform1i("material.specular",1);
182
+
541
183
  cube.shader->setUniform3f("uViewPosition", FrameWork::Camera::getPosition());
542
-
543
-
544
184
 
545
185
 
546
186
 
@@ -548,21 +188,7 @@
548
188
 
549
189
  cube.shader->setDisable();
550
190
 
551
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
552
191
 
553
-
554
-
555
- FrameWork::windowContext->Wait();
556
-
557
- FrameWork::windowContext->SwapBuffers();
558
-
559
- }
560
-
561
-
562
-
563
- return 0;
564
-
565
- }
566
192
 
567
193
 
568
194
 

4

文章を修正

2021/11/06 02:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 提示画像ですが参考サイトより鏡面反射マップを使って木箱の鉄の部分を強調して反射させたいのですがなぜか赤色になってしまいます。これはなぜでしょうか?コメント部のコードが該当するコードなのですがなぜ赤色に描画されるのか理由がわかりません。
1
+ 提示画像ですが参考サイトより鏡面反射マップを使って木箱の鉄の部分を強調して反射させたいのですがなぜか赤色になってしまいます。これはなぜでしょうか?コメント部のコードが該当するコードなのですがなぜ赤色に描画されるのか参考サイトを参考にしましたが理由がわかりません。
2
2
 
3
3
 
4
4
 

3

文章を修正

2021/11/06 01:53

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 0OpenGL 鏡面反射マップが実装出来無い。
1
+ OpenGL 鏡面反射マップが実装出来無い。
test CHANGED
File without changes

2

文章を修正

2021/11/06 01:32

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- OpenGL 鏡面反射マップが実装出来無い。
1
+ 0OpenGL 鏡面反射マップが実装出来無い。
test CHANGED
@@ -18,10 +18,6 @@
18
18
 
19
19
 
20
20
 
21
-
22
-
23
-
24
-
25
21
  ![イメージ説明](8b2569ffaa795c32f54552888800a487.png)
26
22
 
27
23
 

1

文章を追記

2021/11/05 08:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 提示画像ですが参考サイトより鏡面反射マップを使って木箱の鉄の部分を強調して反射させたいのですがなぜか赤色になってしまいます。これはなぜでしょうか?
1
+ 提示画像ですが参考サイトより鏡面反射マップを使って木箱の鉄の部分を強調して反射させたいのですがなぜか赤色になってしまいます。これはなぜでしょうか?コメント部のコードが該当するコードなのですがなぜ赤色に描画されるのか理由がわかりません。
2
2
 
3
3
 
4
4
 
@@ -12,6 +12,8 @@
12
12
 
13
13
  テクスチャの一つを無効にする。
14
14
 
15
+ スペキュラー、アンビエント、ディフーズの三つの値を変更
16
+
15
17
 
16
18
 
17
19