0

각 픽셀이 높이를 나타내는 이미지 형태로 지형 고도를 나타내는 높이지도가 있다고 가정합니다. 동일한 이미지의 다른 레이어가 지형을 가로 지르는 도로의 경로를 나타내는 데 사용되므로 밝은 픽셀은 도로상의 지점을 나타내며 어두운 픽셀은 도로에서 벗어난 것으로 표시하고 중간 픽셀은 가장자리를 따라있는 장소를 나타냅니다 도로의. 이 상황에서 도로를 나타내는 자연스러운 방법처럼 보이지만 Marching Squares를 사용하여 도로의 다각형 외곽선으로 변환 할 수도 있습니다.지형 높이 맵에서 도로 평준화

질문은 알고리즘이 도로를 좌우로 가로 지르도록 높이지도를 조정하는 방법입니다. 도로의 모든 지점의 고도를 평균하여 도로를 완전히 수평으로 만드는 것은 쉽지만 실제로 도로가 작동하는 방법은 아닙니다. 도로는 언덕을 오르 내릴 수 있어야하지만 왼쪽이나 오른쪽으로 기울어지지 않아야합니다.

도로의 각도를 찾고 픽셀 사이의 높이를 선형으로 보간하는 데는 기하학적 인 해결책이 있어야합니다. 아니면 거기에 열심히 노력하지 않고 연습에서 좋은 결과를주는 더 까다로운 해결책이 있습니까?

답변

0

이 법선을 따라 모든 점과 평균 높이 점에서 도로의 수평 법선을 계산할 수 있습니다. 이렇게하면 법선을 수평으로 유지하는 데 도움이됩니다. 이것이 실제 도로의 작동 방식입니다.

+0

"모든 포인트"는 모든 픽셀의 중심을 의미합니까?한 픽셀의 중심을 통과하는 법선이 두 개 이상의 픽셀 중심을 거의 통과하지 않습니까? 우리가 단순히 법선에 의해 접촉 된 픽셀을 계산하면, 많은 픽셀들이 많은 법선에 의해 영향을 받게 될 것이므로, 각각의 픽셀에 대한 평균을 계산하기 위해 어떤 표준을 사용할 것인가? – Geo

+0

픽셀에 여러 법선이 포함되어있는 경우 가중치 평균을 사용해보세요 ... –

0

도로 축을 따라 픽셀의 높이를 사용하고 축의 법선을 따라 높이 맵에서이 높이를 설정하십시오. 이것은 기술적으로 조금 복잡합니다. 여러분이 할 수있는 것은 작은 사변형에서 길을 메쉬로 만들고 일정한 또는 쌍 선형으로 보간 된 높이로 사변형을 채 웁니다.

현실감을 높이려면 상승면에 약간의 지형을 개척하고 수직 벽을 피하고 제방 경사면을 존중하기 위해 아래쪽을 채워야합니다. 이것은 사면을주는 여분의 사변형으로 도로 외부의 메쉬를 확장하여 수행 할 수 있습니다.

0

도로가 벡터 데이터 (선)로 정의되는 경우 문제에 대한 해결책이 명확 해집니다. Yves가 말했듯이 길을 채우는 데 사용 된 높이는 도로 중심선 (축)의 높이이며 값은 축의 수직 방향으로 전파되어 양쪽의 도로 폭의 절반에 해당합니다. 그것은 계산하기에도 상당히 복잡합니다. 주된 문제는 축선상의 굴곡 (각도)입니다. 이는 측면과 축이 구부러 질 때 길이가 다르기 때문에이 세 선에서 '평행'으로 이동해야하므로주의해야합니다.

축의 일부 점에 수직 인 픽셀을 찾아서 래스터 화 된 문제를 해결할 수 있습니다. 비슷한 속성을 가진 픽셀 집합을 찾는 접근법을 사용할 수 있습니다. 하나의 도로 측면 픽셀을 가져 와서 다른 도로 측면에 대한 가장 짧은 픽셀 경로 인 이 축과 직각을 이루는 (아마도) 수직선을 만듭니다. 최단 경로 선상의 픽셀은 동일한 높이, 중간 픽셀 값 또는 평균값을 사용할 수 있습니다.

이와 같은 접근 방식을 사용하면 내측 도로의 픽셀이 외곽쪽에 더 가까운 픽셀을 가질 수 있기 때문에 동일한 굽힘 문제가 발생합니다. 더 평균화하면 도움이 될지도 모릅니다. 나는 양측의 각 픽셀에서 최단 경로를 찾는 접근법을 사용합니다. 가장 짧은 행마다 사용할 높이 값을 찾으십시오. 한 픽셀은 더 짧은 라인에 있고, 가장 짧은 라인의 평균값을 사용할 수 있습니다. 일부 픽셀이 가장 짧은 라인으로 덮여 있지 않은 경우 인접한 픽셀의 평균값을 사용하십시오.

도로 픽셀로 구성된 최단 경로 찾기에 사용되는 노드에는 8 개의 이웃이 있고 가장자리에는 가중치가 있어야하며 가로/세로 가장자리에는 가중치 1이 있고 대각선 가장자리에는 가중치 sqrt (2)가 있어야한다고 생각합니다.