인프런 커뮤니티 질문&답변

H_dong님의 프로필 이미지
H_dong

작성한 질문수

[게임 프로그래머 도약반] DirectX11 입문

HeightMap

높이보정 식이 이해가 안됩니다

작성

·

90

·

수정됨

0

vector<VertexTextureData>& v = const_cast<vector<VertexTextureData>&>(_geometry->GetVertices());

for (int32 z = 0; z < height; z++)

{

for (int32 x = 0; x < width; x++)

{

int32 idx = width * z + x;

uint8 height = pixelBuffer[idx] / 255.f * 25.f;

v[idx].position.y = height; // 높이 보정

}

}

이 부분을 계속 돌려봐도 이해가 안되는데
높이보정할 때 왜 저 식이 나오는건가요?

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

H_dong님, 코드에서 높이 보정 식이 이해가 되지 않는 부분에 대해 설명드리겠습니다.

높이 보정 식 uint8 height = pixelBuffer[idx] / 255.f * 25.f;는 픽셀 버퍼의 값(해당 위치의 높이 정보)을 가져와서 실제 높이 값으로 변환하는 과정입니다. 여기서 pixelBuffer[idx]는 0에서 255 사이의 값을 가지는데, 이는 8비트로 표현할 수 있는 값의 범위입니다.

이 값을 실제 세계의 높이 값으로 변환하기 위해 255로 나누어 정규화(normalize)합니다. 정규화된 값은 0.0에서 1.0 사이의 값을 가지게 되며, 여기에 실제 높이 범위의 최대값인 25를 곱하여 실제 높이 값을 계산합니다.

즉, pixelBuffer[idx] / 255.f 부분은 픽셀의 밝기 값을 0.0에서 1.0 사이의 비율로 변환하고, 이 비율에 25를 곱해 실제 높이 값을 계산하는 것입니다. 여기서 25는 변환된 높이 값의 최대치를 의미하며, 이 값은 필요에 따라 수정될 수 있는 매개변수입니다.

이 과정을 통해 각 픽셀의 높이 정보를 실제 게임이나 시뮬레이션 환경에서 사용할 수 있는 높이 값으로 변환하는 것입니다.

H_dong님의 프로필 이미지
H_dong

작성한 질문수

질문하기