2008-09-16 2 views
4

GPU 기능을 사용하여 현재 문제를 해결하려고합니다. "포인트 클라우드 P와 포인트 및 일반 (Pp, Np) 비행기에서 EPSILON과 같거나 더 먼 거리에 잿물 구름에있는 점을 반환합니다. "GPU를 사용하여 포인트 클라우드에서 컷 플레인에 인접한 쿼리 포인트

1) 모든 점에서 다른 정점 2) 세트 투영 상태 좌표 갖도록 조정 부착 텍스처 점의 정점 버퍼 준비 : I는 다음과 같은 용액을 향해 수렴 내 동료와 얘기

직교로 3) 평면의 법선이 -z 축과 정렬되도록 메시를 회전하고 x, y, z = 0이 Pp 에 해당하도록 간격 띄우기 4) Z- 클리핑 평면을 z : [EPSONON] 5) 텍스처에 렌더링 6) 그래픽 카드에서 텍스처를 꺼내십시오. 7) 그래픽 카드에서 텍스처를 읽고 어떤 p oint는 원하는 거리 범위 내의 포인트 인 (지표로) 렌더링되었습니다.

이제 문제는 다음과 같습니다. q1) 이러한 작업을 수행하려면 창 프레임을 열어야합니까? MATLAB 내에서 MEX-C++로 작업하고 있습니다. 경험에 의하면, 새로운 프레임을 열 자마자 전체 의상이 비참하게 부서집니다! q2) GLPoint에 텍스처 좌표를 지정하는 프리미티브는 무엇입니까? q3) 텍스처에 렌더링을 구현하는 방법이 너무 명확하지 않습니까? 모든 참조, 튜토리얼은 최고 일 것입니다 ... q4) 카드에서이 텍스처를 어떻게 가져 옵니까? 다시 말하지만, 참조, 튜토리얼은 최고 일 것입니다 ...

GLSL 사양보다는 배워야 할 기술의 이름을 지적 해 주면 아주 기쁩니다. 문서 및 누군가가 한 OpenGL API. 그건 내 질문에 너무 애매한 대답이다.

모든 의견을 제공해 주셔서 감사합니다.

p.s. 가능한 경우 CUDA와 같은 리소스를 사용하지 않으므로 새 셰이더를 쓰지 않아도 가능한 한 많은 OpenGL 요소로 을 사용합니다.

참고 : 십자가는 약간의 부인으로 먼저 확인 http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=245911#Post245911

답변

0

에 게시 : 나는 3D 프로그래밍에 대해 아무것도 몰라.

지금 내 순수한 수학적 개념 :

정상적인 N (부 기간)과 중심면의 거리 L에 의해 평면이 주어 (요지 [0/0/0). 점 X의 평면까지의 거리는 N과 X의 스칼라 곱으로부터 중심까지의 거리 L을 뺀 값입니다. 따라서 체온 만 체크하면됩니다

| n. x - L | < = 엡실론

. 스칼라 제품 및 | | 절대 값 물론

당신은 L.가

어쩌면이 도움이 거리를 얻기 위해 정상 첫째로 비행기를 교차해야합니다.

+0

투표하시는 경우 의견을 남겨주세요. 나는 알고 싶다. – Sarien

1

간단합니다. n을 평면의 법선이라고하고 x를 점으로 봅니다.

n_u = n/norm(n)   //this is a normal vector of unit length 
d = scalarprod(n,x) //this is the distance of the plane to the origin 

for each point p_i 
    d_i = abs(scalarprod(p_i,n) - d) //this is the distance of the point to the plane 

분명히 "scalarprod"는 "스칼라 곱"을 의미하고 "abs"는 "절대 값"을 의미합니다. 위키 피 디아의 스칼라 제품에 대한 기사를 왜 읽어야하는지 궁금하다면.

0

Andrea Tagliasacchi에 대해 한 가지 질문이 있습니다. 이유는 무엇입니까?

1000s의 점과 가능한 100 대의 비행기를보고있는 경우에만 설명 된 방법을 사용하면 도움이 될 것입니다. 포인트 앤 플레인 (pointing and plane)을 프로덕션으로 점 찍기 위해 appointed 한 것처럼, 나는 상병 인 Touchy를 개괄했다.

픽셀의 한정된 특성으로 인해 종종 두 개 이상의 점이 텍스처의 동일한 픽셀로 투영됩니다.

그래도이 작업을 수행하려면 C++에서 샘플 glut 프로그램을 작성할 수 있지만이 방법이 익숙하지 않은 경우 모름지기 MATLAB에서 어떻게 도움이 될지 알아보십시오.

+0

나는 그것이 더 빠를 수있는 방법을 아직 보지 못했지만 계산은 여전히 ​​이루어져야합니다. :) 어쩌면 당신은 그것이 내부적으로 어떻게 이루어 졌는지 알 수있을 것입니다. – Sarien

0

내게는 상병 프로그램과 비슷한 무언가를 for 루프가 아닌 정점 프로그램으로 구현할 수 있어야한다. 아마도 CUDA과 같은 GPU 프로그래밍에 C API를 사용할 수 있습니까?