回答編集履歴
2
未解決に戻ったので文言を変更
answer
CHANGED
@@ -102,7 +102,7 @@
|
|
102
102
|
|
103
103
|
---
|
104
104
|
|
105
|
-
[
|
105
|
+
[編集:コメント欄の内容のうち,質問内容への回答的な要素がある部分を以下に移植しておく]
|
106
106
|
|
107
107
|
### 質問文記載の法線計算方法の話について
|
108
108
|
|
1
コメント欄の内容を回答へ移植
answer
CHANGED
@@ -96,4 +96,47 @@
|
|
96
96
|
}
|
97
97
|
return 0;
|
98
98
|
}
|
99
|
-
```
|
99
|
+
```
|
100
|
+
|
101
|
+
---
|
102
|
+
|
103
|
+
---
|
104
|
+
|
105
|
+
[解決後の編集:コメント欄の内容のうち,質問内容への回答的な要素がある部分を以下に移植しておく]
|
106
|
+
|
107
|
+
### 質問文記載の法線計算方法の話について
|
108
|
+
|
109
|
+
> 1と2どちらがただしいでしょうか。
|
110
|
+
|
111
|
+
とのことですが…
|
112
|
+
|
113
|
+
> 1.追記ベクトルA=(2,-1,3)のベクトルAを正規化しなさい
|
114
|
+
|
115
|
+
これは,単なる ベクトルの単位化 の話ですね.
|
116
|
+
L2ノルムで全要素を除すことで単位ベクトルが得られる,という普通の話です.
|
117
|
+
|
118
|
+
> 2.ポリゴンの3頂点をv1=(1,0,0),v2=(0,1,0),v3=(0,0,1)として法線を正規化しなさい
|
119
|
+
|
120
|
+
こっちは,三角形の法線方向ベクトルを外積で求めて,
|
121
|
+
その後でそれを前記1の話で単位化する,という話.
|
122
|
+
|
123
|
+
…なので,1と2の関係性というのは「2の計算は1の話を用いている」であり,「どちらが正しいか」という関係性ではないですよね.
|
124
|
+
|
125
|
+
1, 2 の話自体はごくごく普通の内容と見えます.
|
126
|
+
|
127
|
+
### glScale の影響の話
|
128
|
+
|
129
|
+
glSacle のスケーリングが,glNormal3f で設定している値にまで効果を及ぼしてしまう,ということなんだと思います.
|
130
|
+
例えば,
|
131
|
+
|
132
|
+
```
|
133
|
+
glScalef( 2, 2, 2 );
|
134
|
+
...
|
135
|
+
glNormal3f( /*単位法線ベクトルのx,y,z*/ );
|
136
|
+
```
|
137
|
+
|
138
|
+
という形で書くと,結果として法線が長さ2になってしまうんでしょうね.
|
139
|
+
(で,変な単位ベクトルでない変な値で計算されてしまって,結果の色がおかしくなる,と.)
|
140
|
+
|
141
|
+
`GL_NOMALIZE` とかいうのはこの嫌らしい効果に対抗するための手段…ということなのかな.
|
142
|
+
(ライティング処理の前に法線を正規化してくれる機能っぽい)
|