WPF에서 Viewport3d의 다음과 같은 이상한 크기 조정/재배치 동작을 비활성화하려면 어떻게합니까? 나는 창 높이를 변경하지 마십시오 주의 사항 : (? 또는 왜 이렇게 않음)Viewport3D 재배치/크기 조정 비활성화
가 어떻게 WPF의 "기능"을 해제 할 수 있습니다를 다른 사람에게
WPF에서 Viewport3d의 다음과 같은 이상한 크기 조정/재배치 동작을 비활성화하려면 어떻게합니까? 나는 창 높이를 변경하지 마십시오 주의 사항 : (? 또는 왜 이렇게 않음)Viewport3D 재배치/크기 조정 비활성화
가 어떻게 WPF의 "기능"을 해제 할 수 있습니다를 다른 사람에게
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/642253a6-e7a5-4ce2-bc08-e91f2634605b/
이 :이 질문에 걸림돌, 여기에 마이크 덴마크로 답이다 자동 크기 조정은 원근법 작동의 결과입니다.
기본 시야는 45이고 기본 근거리 평면 거리는 0.125입니다. 즉, x 좌표가 tan (45/2) * 0.125 = 0.051776 일 때 포인트 (x, 0, 0.125)가 뷰포트의 오른쪽에 표시됩니다. 이 계산에서 뷰포트 너비가 어떻게 작동하지 않는지주의하십시오. 포인트 (0.051776, 0, 0.125)가 넓어지면 이 여전히 뷰포트의 오른쪽에 표시됩니다. 그 이유는 주전자가 더 크게 나타나는 이유입니다.
당신은이 라인을 따라 보기의 필드와 가까운 평면 거리, 뭔가 변경하여 폭의 증가를 보상 할 수:이 이전 게시물 알고
double newWidth = grid.ActualWidth;
double originalWidth = 509.0;
double originalNearPlaneDistance = 0.125;
double originalFieldOfView = 45.0;
double scale = newWidth/originalWidth;
double fov = Math.Atan(Math.Tan(originalFieldOfView/2.0/180.0 * Math.PI) * scale) * 2.0;
camera.FieldOfView = fov/Math.PI * 180.0;
camera.NearPlaneDistance = originalNearPlaneDistance * scale;
을,하지만 난 왔어요 이 몇 번에 걸쳐, 나는 받아 들여진 응답이 정확하다는 것을 모른다. near Plane Distance는 오브젝트가 너무 가까워 렌더링되는 지점을 정의합니다. viewport3d와 그 자식의 규모에 어떤 영향을 미칠지 잘 모르겠습니다. 내가봤을 때 Viewport3d.Width를 수정하면 3D 장면의 스케일에 영향을 미치고 Height 만 수정하면 클리핑이 발생하거나 커지면 공백이 추가됩니다. 이것은 제 의견으로는 직관적이지 않지만, 아마도 제가 인식하지 못하는 3D 프로그래밍 컨벤션 일 것입니다.
위의 문제에 대한 해결책은 Grid에서 Viewport3D를 제거하고 대신 캔버스 안에 배치하는 것입니다. 이렇게하면 창 크기가 뷰포트의 너비를 변경하지 못하며 동일한 크기를 유지해야합니다.
링크 썩음 현상이 발생합니다. 여기 중요한 비트를 요약하거나 인용하십시오. 링크 전용 답변은 삭제 될 수 있습니다. –