이중 윤곽선을 설명 할 수 있습니까?


9

복셀 렌더링을 이해하려고 노력했으며 이중 윤곽 (DC)을보고 있습니다.

지금까지 나는 이것을 많이 이해한다.

  1. 그리드 포인트 세트에 대해 밀도 기능을 실행합니다 (예 : 노이즈 기능)
  2. 끝점 사이에 변경 사항이 포함 된 거더의 모서리 찾기
  3. 이 가장자리에서 교차점 (예 : 벡터)을 만듭니다.

이제 이것은 내가 붙어있는 곳입니다. 다음은 법선을 생성하는 것이지만 어떻게? 이 주제를 볼 때 일반적으로이 이미지가 잘립니다.

                                                   Hermite 데이터로 태그가 지정된 가장자리가있는 서명 된 그리드

연구를 통해 법선은 등면에서 생성 될 것입니다. 노이즈에서 등위면, 법선으로 이동한다고 생각하는 것이 맞습니까? 그렇다면 각 단계를 어떻게 수행 할 수 있습니까?

내 이해를 위해 다음 단계는 DC 논문 에서 다음과 같습니다 .

부호 변화를 나타내는 각 모서리에 대해 모서리를 포함하는 4 개의 큐브의 최소화 정점을 연결하는 쿼드를 생성합니다.

이 인용문은 위의 이미지로 표시됩니까?

마지막으로 다음 단계는 교차점과 법선으로 QEF를 실행하는 것입니다. 그러면 정점 데이터가 생성됩니다. 이 올바른지?


이 프로세스를 이해함에 따라 ... 소음> 포인트 클라우드> ISO 표면> 법선과 같은 것입니다.
War

답변:


3

모서리와 표면 사이의 교차점을 얻는 동시에 밀도 함수의 기울기를 기반으로 법선이 생성됩니다. 구와 같이 단순하고 닫힌 형태의 경우 법선을 분석적으로 계산할 수 있지만 노이즈를 사용하면 샘플을 가져와야합니다.

잘못된 순서로 다음 단계가 있습니다. 먼저 각 셀에 대한 정점을 생성합니다 부호 변화를 나타내는 . 최소화하려는 QEF는 단순히 해당 셀의 교점 / 정상 쌍으로 정의 된 각 평면까지의 총 거리입니다. 그런 다음 부호 변경을 나타내는 모서리를 따라 걷고 4 개의 인접한 정점 (마지막 단계에서 생성 된 것)을 사용하여 쿼드를 만듭니다.

이것을 구현하는데있어 가장 큰 장애물은 QEF를 해결하는 것이 었습니다. 실제로 GPU와 병렬로 잘 작동하는 간단한 반복 솔루션을 생각해 냈습니다. 기본적으로 셀 중심에서 정점을 시작합니다. 그런 다음 정점에서 각 평면으로 가져온 모든 벡터의 평균을 계산하고 그 결과를 따라 정점을 이동하고이 단계를 고정 된 횟수만큼 반복합니다. 결과를 따라 ~ 70 % 이동하면 최소한의 반복 횟수로 안정화됩니다.


따라서 부호 변화 (예 : MC와 같은 경우)를 나타내는 셀 / 복셀이 있다고 가정하면 셀의 각 8 모서리마다 노이즈 함수를 실행하여 밀도를 찾습니다. 내가 이해하는 데 어려움이 있는 것은 QEF 의 변수 x , np 를 어떻게 찾 습니까?
Soapy

x 는 꼭짓점 위치입니다. 각 교차점마다 p (위치)와 n (정상)이 있는데, 내가 말했던 평면을 구성합니다.
jmegaffin

p 는 가장자리를 따라 두 밀도의 가중 평균이 0 인 곳을 찾아서 구합니다. 그런 다음 p 에서 밀도 함수의 기울기를 가져 와서 n 을 계산 합니다 .
jmegaffin

그래서 기본적으로 각각의 큐브 나는 계산 n은 각각 12 개 에지, 다음 각 셀에 대한 QEF가 가장자리 실행 PN을X 당신의 예제에있는로 시작하는 복셀 / 셀의 중심에,? 4 개 개의 셀이 같은 에지를 공유하는 경우, I는 각 4 개의 셀을 연결하는 쿼드 생성 X를 ? 그리고 결과 쿼드는 다각형 데이터입니까?
Soapy

모든 모서리에 교차점이있는 것은 아니므로 12 개 평면에 대한 QEF를 반드시 해결할 필요는 없습니다. 그 외에는 당신이 가지고 있습니다!
jmegaffin

1

논문을 읽는 것부터 2 페이지까지는 일반적인 Marching Cubes 스타일 알고리즘에서 선호하는 것처럼 큐브 자체의 무게 대신 볼륨의 무게가 그리드의 모서리에 저장되어있는 것으로 보입니다. 이 모퉁이 가중치는 모서리 간 부호 변경이있는 두 모퉁이 사이의 모서리를 따라 점을 정의합니다. 부호 변경이있는 모서리는 OP의 2D 표현에 각진 선인 모서리의 법선도 저장합니다. 해당 일반 정보는 Marching Cubes 스타일 알고리즘에 의해 예상되는 등위면이 생성 된 후가 아니라 볼륨을 작성하는 동안 (편집 도구 또는 절차 적 볼륨 작성 방법을 사용하여) 정의됩니다. 이 법선 데이터는 점을 통과하는 선 / 표면이 사전 정의 된 법선 값을 가져야한다는 것을 "상태"로 나타냅니다. 행진 큐브가 해당 지점에서 선을 구부려 인접 모서리에있는 다른 점과 짝을 이루는 경우 확장 행진 큐브 및 이중 윤곽선은 선 / 표면이 점을 통과하는 선 / 표면과 교차 할 때까지 선 / 표면을 확장합니다. 법선 값이 다른 인접 모서리. 이를 통해 기본 Marching Cubes 알고리즘이 표면을 약간 반올림하는 볼륨 데이터에서 날카로운 모서리를 만들 수 있습니다. QEF (이차 오류 함수)가 코너에서 위치하는 큐브 내에서 확장 점을 더 쉽게 계산할 수 있다는 점을 제외 하고는이 점에서 어떻게 작동하는지 잘 모르겠습니다. 확장 된 마칭 큐브와 이중 윤곽선은 서로 다른 법선 값을 가진 인접한 가장자리의 점을 통과하는 선 / 표면과 교차 할 때까지 선 / 표면을 확장합니다. 이를 통해 기본 Marching Cubes 알고리즘이 표면을 약간 반올림하는 볼륨 데이터에서 날카로운 모서리를 만들 수 있습니다. QEF (이차 오류 함수)가 코너에서 위치하는 큐브 내에서 확장 점을 더 쉽게 계산할 수 있다는 점을 제외 하고는이 점에서 어떻게 작동하는지 잘 모르겠습니다. 확장 된 마칭 큐브와 이중 윤곽선은 서로 다른 법선 값을 가진 인접한 가장자리의 점을 통과하는 선 / 표면과 교차 할 때까지 선 / 표면을 확장합니다. 이를 통해 기본 Marching Cubes 알고리즘이 표면을 약간 반올림하는 볼륨 데이터에서 날카로운 모서리를 만들 수 있습니다. QEF (이차 오류 함수)가 코너에서 위치하는 큐브 내에서 확장 점을 더 쉽게 계산할 수 있다는 점을 제외 하고는이 점에서 어떻게 작동하는지 잘 모르겠습니다.

OP의 표현으로 묘사 된 것처럼 2D 의미에서 선과 모서리에 대해 이야기하고 있습니다. 볼륨 메시 생성을 위해 이것을 3D로 확장하기 위해 더 많은 독서와 생각을해야 할 것입니다.

법선 생성 방법과 노이즈 중심 절차 관점에서 생각하는 방법에 대한 질문의 후반부를 해결하려면 볼륨을 노이즈 데이터로 채운 다음 부호 변경이있는 가장자리를 찾은 다음 4 개의 큐브를 검사하는 것처럼 보입니다. 가장자리를 공유하여 어떤 삼각형이 생성 될지를 알아 내고 정점을 공유하는 각 삼각형의 법선 평균을 취하여 여러 삼각형의 다른 교차점에서와 같이 정점 법선을 계산합니다. 이 논문은 스캔 변환 메쉬에서 생성 된 CSG 작업 및 볼륨을 처리하기 때문에이 부분은 매우 투기 적입니다. 둘 다 표면에 법선이 잘 정의되어 있습니다.

이 답변의 적어도 첫 번째 부분이 가중치 데이터가 기본 Marching Cubes와는 상당히 다른 방식으로 표현되고 사용되는 방식의 차이와 볼륨 생성 프로세스 초기에 일반 데이터가 상당히 일찍 생성되어야하는 이유를 다루기를 바랍니다. 기본 마칭 큐브를 사용하면 보통 노멀이 메시 생성 프로세스의 마지막 단계로 생성됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.