回答編集履歴
2
タプルを使わないコードに変更
test
CHANGED
@@ -144,7 +144,7 @@
|
|
144
144
|
|
145
145
|
var tempEdgeList = edges.ToList();
|
146
146
|
|
147
|
-
var edgePairs = new List<
|
147
|
+
var edgePairs = new List<EdgePair>();
|
148
148
|
|
149
149
|
try
|
150
150
|
|
@@ -162,7 +162,7 @@
|
|
162
162
|
|
163
163
|
tempEdgeList.Remove(second);
|
164
164
|
|
165
|
-
edgePairs.Add(
|
165
|
+
edgePairs.Add(new EdgePair {First = first, Second = second});
|
166
166
|
|
167
167
|
}
|
168
168
|
|
@@ -182,17 +182,17 @@
|
|
182
182
|
|
183
183
|
var additionalIndices = new List<int>();
|
184
184
|
|
185
|
-
foreach (var
|
185
|
+
foreach (var edgePair in edgePairs)
|
186
|
-
|
186
|
+
|
187
|
-
{
|
187
|
+
{
|
188
|
-
|
188
|
+
|
189
|
-
var i0 =
|
189
|
+
var i0 = edgePair.First.From.Index;
|
190
|
-
|
190
|
+
|
191
|
-
var i1 =
|
191
|
+
var i1 = edgePair.First.To.Index;
|
192
|
-
|
192
|
+
|
193
|
-
var i2 =
|
193
|
+
var i2 = edgePair.Second.From.Index;
|
194
|
-
|
194
|
+
|
195
|
-
var i3 =
|
195
|
+
var i3 = edgePair.Second.To.Index;
|
196
196
|
|
197
197
|
|
198
198
|
|
@@ -282,6 +282,18 @@
|
|
282
282
|
|
283
283
|
}
|
284
284
|
|
285
|
+
|
286
|
+
|
287
|
+
private struct EdgePair
|
288
|
+
|
289
|
+
{
|
290
|
+
|
291
|
+
public Edge First;
|
292
|
+
|
293
|
+
public Edge Second;
|
294
|
+
|
295
|
+
}
|
296
|
+
|
285
297
|
}
|
286
298
|
|
287
299
|
```
|
1
共平面ポリゴンに面を張らないよう変更、メッシュ更新タイミングをLateUpdateに変更
test
CHANGED
@@ -194,6 +194,28 @@
|
|
194
194
|
|
195
195
|
var i3 = second.To.Index;
|
196
196
|
|
197
|
+
|
198
|
+
|
199
|
+
if (normals[i0] == normals[i3])
|
200
|
+
|
201
|
+
{
|
202
|
+
|
203
|
+
// このエッジペアを挟んだ2枚の面が真っ平らになっているなら
|
204
|
+
|
205
|
+
// 引き伸ばし過程でこのペアが引き離されることはないだろうから
|
206
|
+
|
207
|
+
// (つまり、一方の三角形が光源に対して表を向いているなら
|
208
|
+
|
209
|
+
// それと同じ平面上にあるもう一方の三角形も表を向いている
|
210
|
+
|
211
|
+
// はずだから)面を張る必要はない
|
212
|
+
|
213
|
+
continue;
|
214
|
+
|
215
|
+
}
|
216
|
+
|
217
|
+
|
218
|
+
|
197
219
|
additionalIndices.Add(i0);
|
198
220
|
|
199
221
|
additionalIndices.Add(i3);
|
@@ -388,7 +410,13 @@
|
|
388
410
|
|
389
411
|
|
390
412
|
|
413
|
+
// Updateだと、このスクリプトがメッシュを更新した後で他のスクリプトによって
|
414
|
+
|
415
|
+
// オブジェクトの位置その他が書き換えられた場合にずれが生じてしまうため、
|
416
|
+
|
417
|
+
// LateUpdateを使うようにしてそうなる可能性を低減した
|
418
|
+
|
391
|
-
private void Update()
|
419
|
+
private void LateUpdate()
|
392
420
|
|
393
421
|
{
|
394
422
|
|