작성
·
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는 변환된 높이 값의 최대치를 의미하며, 이 값은 필요에 따라 수정될 수 있는 매개변수입니다.
이 과정을 통해 각 픽셀의 높이 정보를 실제 게임이나 시뮬레이션 환경에서 사용할 수 있는 높이 값으로 변환하는 것입니다.