2014-06-19 2 views
0

행진 큐브 알고리즘 (행진 사각형?)의 2D 버전을 구현하려고하는데, 내가 겪어 본 주요 장애물 중 하나는 WebGL과 3을 사용하여 성능 문제입니다. js). 나는 품질 (복셀/사각형 크기)과 성능의 거대한 트레이드 오프가있다 통지, 나는 이것에 대한 범인이 metaballs의 중심 (고체 영역)이라고 생각 : 나는 돈 분명히행진 큐브 성능 (2d)

Metaballs

' 메타 볼 내부의 얼굴은 신경 쓰지 않아도된다. 그러나 나는 그것을 내부 표면의 나머지 부분과 똑같이 취급하지 않고 내부 영역을 다색화하는 방법을 잘 모릅니다. 믹스에 더 많은 메타 볼을 추가하면 문제가 악화됩니다.

괜찮은 품질을 유지하고 괜찮은 프레임 속도로 많은 메타 볼을 렌더링 할 수있게하려면이 문제를 어떻게 피할 수 있습니까?

+0

알고리즘 아이디어가 없지만 [이 예] (http://webglsamples.googlecode.com/hg/blob/blob.html) 및 [asm.js/emscripten] (https : //github.com/kripken/emscripten/wiki) 다른 가능한 해결책으로 – gman

+0

코드 (또는 의사 코드)를 제공 할 수 있습니까? 내부 영역은 행진 사각형에 대한 또 다른 경우 일 뿐이며 문제가되지 않아야합니다. –

답변

2

표준 marching squares 기술을 구현하는 경우 표면 내부 및 외부의 케이스가 문제가되지 않아야합니다. 사실, 당신이 계산을 할 필요가 없으므로 가장 값이 쌉니다.

필요하지 않은 영역 (원의 중앙 영역)에서 폴리 카운트를 줄이려면 적응 형 샘플링 기술을 사용해야합니다. 이 경우 아마도 가장 적절한 쿼드 트리 (2d octree)가 될 것입니다.

Marching Cubes가 O (n^3) 알고리즘 (매우 느림)이므로 행진 사각형이 O (n^2) (여전히 매우 느림)이기 때문에 셀 크기를 줄일 때 속도 문제가 항상 발생합니다. 그 주위에 방법이 없습니다. 위에서 언급 한 바와 같이 적응 형 샘플링 데이터 구조를 사용하면 작업 속도가 빨라집니다.

낮은 해상도에서 품질을 향상시킬 수 있다고 생각됩니다. 원이 많은 별명을 표시하는 것 같습니다 (실제로 낮은 화면 해상도이기 때문에 이것이 아니라고 가정). 나는 사각형의 모서리를 어떻게 보간하는지 다시 점검 할 것입니다. (여러분이 모서리의 중심을 사용하지 않기를 바랍니다.)보다 적절한 보간법을 사용하면 더 좋은 근사값을 얻을 수 있으며 낮은 해상도에서 더 나은 결과를 얻을 수 있습니다. Paul Bourke's article on marching cubes을 보시고 보간법을 점검하지 않으셨습니까? 여기

은 (대부분 MC 기준) 3D있는 isosurface 추출 기술에 대한 몇 가지 참고하지만 당신은 당신의 2D 경우, 그들로부터 이익을 얻을 수 :

(Kazdan et al, 2007)
(Manson and Shaefer, 2010)
(Wilhelms and Gleder, 1992)

PS : 또한 더 많은 유사하고 어쩌면 기초 논문에 대한 참조를 확인하십시오!