삼각형 (꼭지점과 법선으로 지정됨)이 true이면 'True'를 반환하는 함수를 작성하고 싶습니다. 공간에서 다른 삼각형이 점에서 지정된 삼각형을 보지 못하도록하는 '차단 자'역할을 할 수 있다고 가정 할 때, 3D 공간에서 주어진 점으로부터 (x, y 및 z 좌표로 지정된) 3D 공간에서 볼 수 있습니다. '보고'에 의해3 차원 공간의 특정 삼각형이 잠재적으로 다른 삼각형이있는 임의의 점에서 특정 점에서 볼 수 있는지 알아보십시오
내가 어떤 차단 삼각형 교차하지 않는 직선 선으로 관찰 지점에있는 삼각형에 어떤 점을 연결할 수 있습니다 의미 '볼'.
나는, 'Z 버퍼링'과 '가시성 문제'를 해결하기위한 다른 기술 살펴 보았다 hopefully this shows what I mean 나는 내가 믿는 특정 뷰 포트를 통해 화면에 표시하기 위해 픽셀에 삼각형을 렌더링하고 있지 않다 그러나 이후 이것들은 관련이 없습니다.
내 두 가지 접근 방법은 다음과 같습니다.
1) 잠재적 인 '차단'삼각형의 각 꼭지점을 관측점에서부터 매우 큰 반경까지 투영하십시오 (내 응용 프로그램의 경우 삼각형은 관측점에서 1000 단위 이상 떨어지지 않습니다. 1001 단위 선택). 그런 다음 오브젝트가 보이지 않는 곳에 투영 된 선에 의해 설명 된 모서리가있는 단차 뒤에있는 영역을 갖게됩니다. 모든 차단제에 대해이 작업을 수행 한 다음이 모든 영역의 조합을 찾고 테스트중인 삼각형이 (잠재적으로 많은) 영역 중 하나에 속하는지 확인합니다.
또는
2
) 다시 말하지만, 모든 차단 삼각형의 정점에 선 촬영이 선이 테스트중인 삼각형 평면에서 각 차단제의 예상 삼각형을 얻을 위치한 평면을 교차하는 지점을 찾을 수 있습니다. 겹쳐진 투영 된 삼각형을 단일 다각형으로 융합하십시오. 그런 다음 테스트중인 삼각형이 투영 된 삼각형 또는 융합 된 다각형 안에 완전히 들어 있지 않은지 확인하십시오.방법 1)의 문제점은 모양이 3D 볼륨으로 완전히 둘러싸여 있고 교차하는 3D 볼륨을 하나의 큰 3D 볼륨으로 결합하는 것이 더 어렵다는 것입니다.
방법 2)의 문제는 삼각형의 꼭지점을 가로 지르는 투영 된 선이 삼각형의 평면에 결코 부딪치지 않는 경우가 있습니다. 이 중 하나를 무시할 수는 없으며, 관심있는 삼각형을 여전히 가릴 수 있습니다. 비행기에서 무한히 긴 그림자를 드리 우게됩니다.
나는 방법 2에 의지하고있다. 그러나 나는이 방법이 조금 순진 해 보인 것처럼 누군가가 더 훌륭한 해결책을 제안 할 수 있다면 나에게 큰 관심이 될 것이라고 말한다. 설명이나 의사 코드가 이상적입니다, 결국 나는 이것을 matlab 또는 C++에서 구현하기를 희망합니다.하지만 지금은 일반적인 것들을 유지할 수 있습니다!