2008-11-10 8 views
1

구조화 된 메쉬 개체를 만들지 않고 STL 파일의 3D 개체에 변형을 적용하려고합니다. 다음은 진행 방법입니다. 법선을 읽고 STL 파일에서 하나씩 정보를 처리하고 각 변형을 각 정점 및면 법선에 적용한 다음 새 계산 된 값을 다른 STL 파일에 다시 작성합니다. 생성 된 파일에서 정점이 정상이지만 법선이 잘못되었습니다. 꼭 vertice에서하는 것처럼 변형을 법선에 적용 할 수없는 것 같습니다. 어떻게 가능합니까 ??3D 모델에 변환 적용 - 법선 pb

답변

2

transforming normals을보아야합니다.

실제로 Jeff, 당신은 부분적으로 정확합니다. 벡터의 경우, 맞습니다. 그러나 의미가 조금 다른 정상적인 경우, 상위 3x3으로 변형해야하지만 반전 된 다음 전치합니다.

+0

Jeff의 말에 따르면, 그가 말한 내용은 회전과 같은 강체 변형에 유효하다는 점에 유의해야합니다 (이는 그가 말한 것으로 보입니다). 그리고 Jumar는 "변형"으로 정확히 무엇을 의미 하는지를 말하지 않았습니다 ... – Camille

+0

예 - 회전 (및 반사)의 경우, 전치 *는 역수이므로 역전환은 원래의 행렬입니다. – comingstorm

+0

Yup - 법선을 없앤 이방성 스케일링입니다. 이것이 역전이됩니다. –

1

벡터 변환은 점 변환과 다릅니다. 변환은 적용 할 수 없으며 회전 만 적용 할 수 있습니다.

-1

원래 행렬을 사용하는 대신 행렬의 역 전치를 법선에 적용해야합니다.

또한 변환 할 때 법선의 w 좌표를 0으로 간주해야합니다 (점과 같이 1이 아님).

2

당신은 거의 모두에 대해 동일한 변환을 적용하지만, 마음에이 두 가지를 유지할 수 있습니다 :

  • 법선 방향, 그래서 4 × 4 행렬의 위치 부분은 적용 할 수 없습니다. 이를 적용하지 않으려면 행렬에 곱하기 전에 Vector를 Vector (x, y, z, 0)로 포맷하거나 전용 TransformVector() 함수를 사용하여 0으로 곱셈되는 지시를 피하십시오.
  • 이 적용되는 행렬은 규모가 포함 된 경우
  • , 당신의 정상이 당신이 전형적인 N.L 조명 내적을 할 경우 결과 그것이 해야보다 밝거나 어두운 것, 의미뿐만 아니라 크기가 조정됩니다. 보통은 변환을 적용한 후 다시 정상화를 원하거나 확인하려는 정상을 해제 정상화하지 않는 변환 (행렬의 역 트랜스가 바로 이것이다.)
1

견적 드리고 로페즈 : 법선 방향이므로 재 정규화 어쨌든 고칠 것이지만 4 × 4 행렬의 위치 부분은 실제로 적용되지 않아야한다.

일반화가 그것을 수정하지 않습니다 : 정규식이 (1,0,0)이라고 가정하고 (-2,0,0) => 정규식이 (-1,0,0)이 될 것이라고 가정합니다. 정상은 동일하게 유지되어야하기 때문에 정상화되고 잘못되었습니다.