구조화 된 메쉬 개체를 만들지 않고 STL 파일의 3D 개체에 변형을 적용하려고합니다. 다음은 진행 방법입니다. 법선을 읽고 STL 파일에서 하나씩 정보를 처리하고 각 변형을 각 정점 및면 법선에 적용한 다음 새 계산 된 값을 다른 STL 파일에 다시 작성합니다. 생성 된 파일에서 정점이 정상이지만 법선이 잘못되었습니다. 꼭 vertice에서하는 것처럼 변형을 법선에 적용 할 수없는 것 같습니다. 어떻게 가능합니까 ??3D 모델에 변환 적용 - 법선 pb
1
A
답변
2
transforming normals을보아야합니다.
실제로 Jeff, 당신은 부분적으로 정확합니다. 벡터의 경우, 맞습니다. 그러나 의미가 조금 다른 정상적인 경우, 상위 3x3으로 변형해야하지만 반전 된 다음 전치합니다.
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)이 될 것이라고 가정합니다. 정상은 동일하게 유지되어야하기 때문에 정상화되고 잘못되었습니다.
Jeff의 말에 따르면, 그가 말한 내용은 회전과 같은 강체 변형에 유효하다는 점에 유의해야합니다 (이는 그가 말한 것으로 보입니다). 그리고 Jumar는 "변형"으로 정확히 무엇을 의미 하는지를 말하지 않았습니다 ... – Camille
예 - 회전 (및 반사)의 경우, 전치 *는 역수이므로 역전환은 원래의 행렬입니다. – comingstorm
Yup - 법선을 없앤 이방성 스케일링입니다. 이것이 역전이됩니다. –