문제

우리는 그래프를 생성한 거대한 데이터 집합입니다.우리가 말하고 있는 4096samples per 두 번째,그리고 10 분간별 그래프.간단하게 계산 4096 * 60 * 10 =2457600 당 샘플 linegraph.각 샘플이블(8 바이트)의 정밀도 선택하십시오.또한,우리는 렌더링 여러 linegraphs 에서 하나의 스크린까지 사용할 수 있습니다.이것은 우리는 렌더링에 대해 25M 샘플을 하나의 화면에서.를 사용하여 일반적인 감각과 간단한 트릭,우리는 얻을 수 있습니다 이 코드를 고성능 CPU 를 사용하기에 이것을 2D 캔버스입니다.성능이 뛰어,그것은 렌더링 시간 떨어 있습니다. 로 이것은 과학적 데이터,우리는 생략할 수 없습는 모든 샘플입니다.진심으로,이 옵션을 선택하지 않습니다.하지 않더라도 생각하기 시작한다.

자연적으로,우리는 우리를 향상 렌더링 시간을 사용하여 모든 기술을 사용할 수 있다.멀티코어,사전 렌더링,캐싱은 모두 매우 흥미로운 하지만 절단하지 않습니다.우리가 원하는 초당 30 프레임으로 렌더링 이러한 데이터 집합에 최소한 60FPS 바람직하다.우리는 지금 이 야심찬 목표입니다.

자연적인 방법으로 오프로드 그래픽 렌더링은 GPU 를 사용하여 의 시스템입니다.GPU 를 만들어 함께 작동하는 거대한 데이터 집합과 과정을 평행 한.몇 가지 간단한 HelloWorld 테스트에 우리의 차이가 낮과 밤의 속도를 렌더링에 사용하여 의미합니다.

지금 문제는:GPU API 와 같은 OpenGL,DirectX 및 XNA 위해 만들어진 3D 장면에서 마음입니다.따라서,그들을 사용하여 렌더링 2D linegraphs 은 가능하지만,이상하지 않습니다.에서 증거의 개념을 개발했습는 우리를 변환해야 2D3D world.Suddnely 우리는 함께 작동과 x,y,z 좌표 시스템과 함께 다각형,꼭지점과 더 많은 선입니다.는 거리가 멀다 이상적인 개발의 관점에서.코드 얻을 읽을 수 없 유지하는 것은 악몽과 더 문제를 끓인다.

어떤 제안이나 아이디어를 이 3D?은 작업을 수행할 수 있는 유일한 방법이 실제로 변환 두 시스템(2D 좌표 대 3D 좌표 및체)?또는 있는 세련된 방법으로 이를 달성하기 위해?

-그것은 왜 유용한 렌더링 여러 개의 샘플을에 하나의 픽셀? 이후 나타내는 데이터 집합을 더합니다.말하는 한 픽셀,당신은 당신의 값 2,5and8.으로 인해 일부 샘플은 생략 알고리즘,만 5 이 그려집니다.줄 것만 가 5,과하지 않는 8,따라서 데이터를 왜곡될 수 있습니다.주장할 수 있에 대한 반대도 있지만,사실의 문제는 첫 번째 인수수 위해 데이터 수 있습니다.이것은 정확히 이유는 우리가 생략할 수 없습니다.

도움이 되었습니까?

해결책

정말 인기 있는 툴킷에 대한 과학적인 시각화 는 디버깅 심볼이 들어, 고,나는 그것이 귀하의 요구에 맞:

  1. 그것은 높은 수준의 API,그래서 당신은 당신을 사용할 필요가 없 OpenGL(는 디버깅 심볼이 들어에 내장되어 최상의 OpenGL).거기 인터페이스를 위한 C++,Python,Java,Tcl.내 생각에 이것을 유지하는 것 codebase 니다.

  2. 을 가져올 수 있습니다 모든 종류의 데이터 집합으로 디버깅 심볼이 들어(의 톤이있다 예에서 의료 영상을 재무 데이터).

  3. 는 디버깅 심볼이 들어가 빠르고 배포할 수 있는 디버깅 심볼이 들어 그래픽 파이프라인을 통해 여러 시스템을 수행하려는 경우 매우 큰 시각화할 수 있습니다.

  4. 에 관한:

    이것은 우리는 렌더링에 대해 25M 샘플을 하나의 화면에서.

    [...]

    로 이것은 과학적 데이터,우리는 생략할 수 없습는 모든 샘플입니다.진심으로,이 옵션을 선택하지 않습니다.하지 않더라도 생각하기 시작한다.

렌더링할 수 있습니다 큰 데이터세트에서는 디버깅 심볼이 들어 의 샘플링을 사용하여 LOD 모델입니다.즉,당신은 모델이 어디에 당신이 볼 낮은 해상도의 버전에서 멀리,하지만 당신은 확대에서 당신을 볼 것이다 높은 해상도의 버전입니다.이 얼마나 많은 크기가 큰 데이터 집합의 렌더링이 수행됩니다.

당신이 필요하지 않을 제거한 포인트에서 당신의 실제 데이터 집합,하지만 당신은 확실히 점진적으로 그것이 구체화할 때 사용자를 확대합니다.그것은 당신에게 아무 소용이 없게 렌더링 25 만 포인트를 한 화면을 때 사용자 수 없습니다 아마도 모든 프로세스는 데이터입니다.는 것이 좋습을 살펴 모두는 디버깅 심볼이 들어 라이브러리 및 디버깅 심볼이 들어 사용자 가이드에 있는 몇몇 소중한 정보에 거하는 방법에 대화형 데이터 집합입니다.

다른 팁

고 싶 의견에 당신의 주장을 생략할 수 없습 샘플의 뒷면에 tgamblin 의 대답이다.

당신을 생각해야한다는 데이터의 당신은 그리기 화면으로 샘플링 문제입니다.당신에 대해 이야기하고 2.4M 포인트의 데이터,그리고 당신은 그리고 그는 화면은 단지 몇 천 포인트너(적어도 나는 가정하에 그것은,당신에 대해 걱정 30fps 율)

그래서 그 의미에 대한 모든 픽셀은 x 축 당신에 렌더링하기 위해 1000 포인트는 필요하지 않습니다.는 경우에도 당신은 경로를 아래로 이동 활용하여 귀하의 gpu(eg.의 사용을 통해 opengl)는 여전히 많은 일이 있는 gpu 를 할 필요가 있는 줄에 대한하지 않을 볼 수 있습니다.

는 기술이 나는 표현에 사용되는 샘플 데이터를 생성된 데이터는 하위 집합의 전체 세트에 대한 렌더링을 수행합니다.지정된 픽셀은 x 축(ie.주 x 축의 화면 좌표)를 렌더링해야 합는 절대 최대 4 개의 포인트는 최소 y,최대 y,왼쪽 및 오른쪽 y.렌더링의 모든할 수 있는 정보를 유용하게 렌더링됩니다.여전히 볼 수 있습 minima and maxima,당신은 유지하는 관계를 이웃 픽셀이 있습니다.

이 마음으로 작업할 수 있습니다 밖으로 샘플의 수를 떨어질 것으로 같은 픽셀을 x 축(그들의 생각으로 데이터"bin").내의 지정된통,당신은 확인할 수 있습 특정한 샘플을 최대,최소값 등.

을 되풀이 하위 집합이 사용되는 디스플레이고 적절한 전시까지 매개 변수를 변경합니다.예를 들어.는 경우 사용자가 스크롤 그래프 또는 확대해야 합산 렌더링 하위 집합.

당신이 할 수 있을 사용하는 경우 이 opengl,하지만 이후 opengl 사용하는 표준 좌표계의(그리고 당신이 관심있는 현실 세계에서 화면 좌표)일해야 할 것이다 조금 더 정확하게 결정하는 데이터를 쓰레기통에 버리지 마십시오.이 쉬울 것입니다 사용하지 않고 opengl,하지만 당신은 전체의 이익을 그래픽 하드웨어가 있습니다.

원하지 않는다면 z 축에 대해 걱정할 필요가 없습니다. OpenGL (예를 들어)에서는 XY Vertices (암시 적 z = 0), Zbuffer의 회전, 비영격 투사-매트릭스를 사용하고 2D에있는 hey presto를 지정할 수 있습니다.

Mark Bessey는 그래프를 표시 할 픽셀이 부족할 수 있다고 언급했습니다. 그러나 당신의 설명을 감안할 때, 나는 당신이 무엇을하고 있는지 알고 있다고 가정합니다.

OpenGL에는 직교 모드가 있습니다 내부 (0; 1) 내부에 z 좌표가 있습니다. 관점 투영은 없으며, 당신이 그리는 다각형은 화면 클리핑 영역에 대한 평면이 될 것입니다.

DirectX는 비슷합니다. OpenGL에서는 gluortho2d ()라고합니다.

OpenGL 은 행복을 렌더링 2D 는 경우 설치 프로젝션을 직교(no z).또한 당해야 죽 데이터입니다.렌더링은 동일한 픽셀 1000 시간을 낭비의 의미합니다.시간을 할애와 선행 performat 멀티-스레드 decimator.는지 확인하는 폭발을 큰 배열에 GPU 를 사용하여 정점을 배열 또는 꼭지점 버퍼체(명확하게 나 OpenGL 도의 남자)

이로 인해 단일 화면에서 약 25m 샘플을 렌더링합니다.

아니요, 당신은 당신이 가지고 있지 않는 한 아닙니다 정말 정말 큰 화면. 화면 해상도가 아마도 1,000-2,000 픽셀과 비슷하다는 점을 감안할 때, 그래프를 그래프하기 전에 데이터를 소멸시키는 것을 고려해야합니다. 라인 당 1,000 포인트로 100 줄을 그래프하면 성능이 현명한 문제가되지 않을 것입니다.

3D 재료를 직접 다루기 때문에 코드를 읽을 수없는 경우 3D OpenGL 항목을 모두 캡슐화하는 얇은 어댑터 레이어를 작성하고 응용 프로그램에 편리한 양식으로 2D 데이터를 가져와야합니다.

내가 뭔가를 놓쳤다면 용서하고, 합창단에게 기본적인 대상 지향 디자인을 설교하고 있습니다. 그냥 말해 ...

당신이 필요하지 않을 제거한 포인트에서 당신의 실제 데이터 집합,하지만 당신은 확실히 점진적으로 그것이 구체화할 때 사용자를 확대합니다.그것은 당신에게 아무 소용이 없게 렌더링 25 만 포인트를 한 화면을 때 사용자 수 없습니다 아마도 모든 프로세스는 데이터입니다.는 것이 좋습을 살펴 모두는 디버깅 심볼이 들어 라이브러리 및 디버깅 심볼이 들어 사용자 가이드에 있는 몇몇 소중한 정보에 거하는 방법에 대화형 데이터 집합입니다.

대단히 감사합니다.이것은 정확히 무엇을 찾고 있었습니다.그것은 보인다는 디버깅 심볼이 들어 하드웨어를 사용하는 오프로드 이러한 종류의 렌더링,too.Btw,내 생각을 말 귀중 ;).둘째,사용자가 정보를 얻을 수의 예에서 나는 했다.그러나 정말 간결한 개요 데이터의 수 있습니다 정말 순수한 금 대한 과학자입니다.그것은 처리하는 방법은 모든 데이터는 사용자를 위해,그것은에 대한 귀중한 정보를 얻을 밖의 렌더링이 가능합니다.사용자는 것도 아주'축소'의 표현합니다.

더 많은 어떤 제안이 있습니까?

VTK를 직접 사용하는 것 외에도 VTK를 기반으로 구축 된 두 가지 제품이 귀하에게 관심을 가질 수 있음을 지적하고 싶었습니다.

1) paraview (paraview.org)는 VTK 위에 구축 된 사용자 인터페이스로 과학적 시각화 제품을 훨씬 쉽게 할 수 있습니다. 처리 할 하드웨어가있는 경우 원하는 모든 데이터를 렌더링 할 수 있으며 여러 프로세서 / 코어 / 클러스터의 MPI를 지원합니다. 사용자가 만든 플러그인을 통해 확장 가능하며 프로젝트 구축 및 컴파일에 자동화 된 도구를 사용합니다.

2) Paraviewgeo (Paraviewgeo.mirarco.org)는 내가 일하는 회사가 제작 한 Paraview의 지질학 및 채굴 탐사 파생물입니다. GoCAD, Datamine, Geosoft, SGEMS 및 기타와 같이 ParaView가하지 않는 파일 형식을 읽는 데 대한 지원이 내장되어 있습니다. 더 중요한 것은, 우리는 종종 유한 한/이산 요소 모델링을 수행하는 그룹과의 최근 작업과 같이 느슨하게 채광 할 수있는 과학적 viz에 관심이있는 다른 그룹과 협력합니다. 체크 아웃 할 가치가 있습니다.

두 경우 (PV 및 PVG) 모두 데이터는 해당 데이터에 대한 관점과 분리되어 있으므로 모든 데이터를 "렌더링"하지 않습니다 (이를 위해 충분히 큰 모니터가 없을 가능성이 높기 때문에). 그러나 예상대로 데이터 세트에서 처리 된 모든 것이 "거기에있을 것"이라고 확신합니다. 데이터에서 추가 필터를 실행하면 볼 수있는 것만 "렌더링"되지만 필터는 모든 데이터에서 계산됩니다.이 모든 데이터에서 모두가 보이지는 않지만 모두 메모리에 존재합니다.

숫자를 찾고 있다면 오늘 나는 PVG에서 8 백만 개의 셀의 3 개의 일반 그리드를 계산했습니다. 하나는 7- 튜플 벡터 특성 (7 배 8 백만 이중 값)을 포함하고, 다른 두 개는 메모리의 총 7,200 만 이중 값에 대해 스칼라 속성 (각각 1 배 8 백만 이중 값)을 포함했습니다. 메모리 풋 프린트가 500MB에 가깝다고 생각하지만 각 지점에 7 튜플 벡터 특성이 있고 다른 기타 데이터도 사용 가능한 400,000 포인트 세트가있었습니다.

이것이 도움이되는지 확실하지 않지만 시간 시간을 크기로 사용할 수 있습니까? 즉, 하나의 프레임이 하나의 z입니까? 아마도 상황이 더 명확해질 수 있습니까? 그렇다면 아마도 이미지를 쌓기 위해 델타를 효과적으로 적용 할 수 있습니까?

아니요, 정말 큰 화면이 없다면 그렇지 않습니다. 화면 해상도가 아마도 1,000-2,000 픽셀과 비슷하다는 점을 감안할 때, 그래프를 그래프하기 전에 데이터를 소멸시키는 것을 고려해야합니다. 라인 당 1,000 포인트로 100 줄을 그래프하면 성능이 현명한 문제가되지 않을 것입니다.

우선, 우리는 렌더링시 샘플을 생략 할 수 없습니다. 이건 불가능 해. 이것은 그래프가 기반으로 한 데이터에 렌더링이 정확하지 않다는 것을 의미합니다. 이것은 정말로 고고 지역입니다. 기간.

둘째, 우리 ~이다 모든 샘플을 렌더링합니다. 여러 샘플이 동일한 픽셀로 끝날 수 있습니다. 그러나 여전히 우리는 그것을 렌더링하고 있습니다. 샘플 데이터는 화면에서 변환됩니다. 따라서 렌더링됩니다. 이 시각화 된 데이터의 유용성을 의심 할 수 있습니다. 그리고 그들은 좋은 지적을 가지고 있습니다, IMHO.

z와 회전이 모두 0으로 설정된 부드러운 킨더 2D 라이브러리로 라이브러리를 감싸십시오.

-아담

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top