質問編集履歴
2
解決済み
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
解決済みああああああああ
|
body
CHANGED
@@ -1,43 +1,1 @@
|
|
1
|
-
### 前提・実現したいこと
|
2
|
-
|
3
|
-
影の作成のためにメッシュの引き延ばしをしたいのですが、ライトが照らしている方向ではなく、オブジェクトに対して不変の方向にシャドウボリュームができてしまっています。
|
4
|
-
例えば、初期段階でライトが左から照らしていれば、オブジェクトの右側に影ができますが、オブジェクトの方向を変えるとシャドウボリュームの場所も変わってしまいます。
|
5
|
-
画像の白い線がシャドウボリュームです。
|
6
|
-

|
7
|
-
|
8
|
-

|
9
|
-
|
10
|
-
### 発生している問題・エラーメッセージ
|
11
|
-
|
12
|
-
```
|
13
|
-
シャドウボリュームの方向がおかしい
|
14
|
-
```
|
15
|
-
|
16
|
-
### 該当のソースコード
|
17
|
-
|
18
|
-
```ここに言語名を入力
|
19
|
-
//全頂点について、引き延ばしを検討
|
20
|
-
for (int i = 0; i < model.IndexNum; i += 3)
|
21
|
-
{
|
22
|
-
//頂点を3つ使い、面の法線を求める
|
23
|
-
vertex0 = model.VertexArray[i].Position;
|
24
|
-
vertex1 = model.VertexArray[i + 1].Position;
|
25
|
-
vertex2 = model.VertexArray[i + 2].Position;
|
26
|
-
|
27
|
-
D3DXVECTOR3 Normal;
|
28
|
-
D3DXVECTOR3 cross0(vertex2 - vertex1);
|
29
|
-
D3DXVECTOR3 cross1(vertex1 - vertex0);
|
30
|
-
|
31
|
-
|
32
|
-
D3DXVec3Cross(&Normal, &cross0, &cross1);
|
33
|
-
|
34
|
-
|
1
|
+
解決済みああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
|
35
|
-
|
36
|
-
if (D3DXVec3Dot(&Normal, dir) > 0)
|
37
|
-
{
|
38
|
-
//ライト方向に頂点を伸ばす
|
39
|
-
model.VertexArray[i + 2].Position = model.VertexArray[i].Position + *dir * 10000;
|
40
|
-
}
|
41
|
-
}
|
42
|
-
|
43
|
-
```
|
1
タイトル、タグの変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
メッシュの引き延ばし方向について
|
body
CHANGED
File without changes
|