2015-01-01 6 views
0

У меня есть сценарий, чтобы показать нормальную линию на сетке. На минимальном скрипте все работает нормально. Если я использую одну и ту же модель в одном из моих существующих приложений, eveything ошибочно. Перед камерой нормальное обнаружение кажется правильным, но как только я поворачиваю сетку, нормальное обнаружение не очень хорошо. В обоих сценариях, я использую raycaster, чтобы получить пересечение и я использую:Нормы Norm.t.s не соответствуют

   var p = intersects[ 0 ].point; 
       intersection.point.copy(p); 
       var n = intersects[ 0 ].face.normal.clone(); 
       n.multiplyScalar(100); 
       n.add(intersects[ 0 ].point); 
       intersection.normal.copy(intersects[ 0 ].face.normal); 

       line.geometry.vertices[ 0 ].copy(intersection.point); 
       line.geometry.vertices[ 1 ].copy(n); 
       line.geometry.verticesNeedUpdate = true; 

, чтобы получить нормальный.

Что может вызвать эту разницу, поскольку я использую одну и ту же сетку и те же команды для нормального в обоих сценариях, чтобы получить нормали?

+0

Ха, это смешно, я просто разместил это как проблему на своем github. – Hobbes

ответ

0

я узнал происхождение проблемы:

  • в рабочем сценарии, я использовал Orbitcontrols для преобразования сетки;

  • В нерабочем сценарии я сам трансформировал сетку, и, похоже, нормали не были обновлены. Случилось так, что исходная точка была правильной, но нормальная ориентация была такой же, как перед любым преобразованием сетки. Преобразования не применялись к нормалям. Я еще не выкопал и переключился на OrbitControls.