2014-02-17 3 views
2

WPF 4.5에는 뷰포트 3D의 3D 공간에 순수 선을 그리는 기본 기능이 없습니다.WPF를 사용하여 3D 선 그리기

그리고 WPF 용 3D 툴킷이 있다는 사실을 알고 있습니다. 그러나 나의 masterthesis를 위해 나는 나 자신의 3D 엔진을 만들었다. 거의 완료되었지만 내 객체의 와이어 프레임을 그릴 수 있기를 원합니다 (예 : 구의 테셀레이션을 표시하는 경우). 내 엔진은 거의 모든 기본 기하학적 형태 (큐브, 구형, 원뿔, 원통형, 피라미드, ..)를 렌더링 할 수 있습니다. 선을 그리는 방법을 알고 싶다면 언제든지 사용하십시오.

(내 유일한 아이디어는 매우 얇은 실린더 또는 큐브를 사용하는 것입니다 ...하지만 난 하나의 단일 라인에 대한 적어도 8 포인트 (12 삼각형)을 렌더링해야하기 때문에 그것이 매우 효율적이라고 생각하지 않습니다

+0

실린더 당 6 개 (5 개의 삼각형)의 실린더를 만들 수 있습니다. – AgentFire

+0

맞습니다. 약간의 최적화는 6 포인트의 프리즘을 그릴 것입니다. 하지만 그 경우에는 8 삼각형을 계산합니다.) – xelor

+0

아, 맞습니다. – AgentFire

답변

0

그래서 당신은 색상, 멀티 샘플링, 너비 또는 필요한 모든 정보와 함께 필요한 데이터를 엔진의 픽셀 쉐이더에 전달하고 PS로 그 라인을 그립니다.

0

너비가 균일하고 너가 wireframed을 그다지 좋아하지 않는다면 너는 그렇게 할 수있다.

더 완벽한 대안은 인접한 두 개의 삼각형으로 구성된 사각형을 그립니다. 선을 기본 요소로 사용하고 기하 구조 셰이더의 기능을 활용하여 쿼드를 생성하는 데 사용할 수 있습니다.

각 라인을 형성하는 두 점을 받고 삼각형 목록을 출력하는 지오메트리 셰이더를 만듭니다. 출력 스트림에 4 개의 점을 추가하기 만하면됩니다. NVIDIA의 in this paper으로 표시된 계산을 사용하여 쿼드의 네 좌표를 계산하십시오.

지오메트리 셰이더의 입력이 라인 인 동안 출력은 라인을 형성하도록 올바르게 설정된 두 개의 삼각형입니다. 사실,이 기술은 쿼드가 직사각형 (즉, 각면이 다른 폭을 가질 수 있음)으로 제한되지 않기 때문에 상당한 유연성을 제공합니다.