최근에 2D jpeg 이미지가 텍스처로 제공되는 Turbosquid에서 3D 삼각형 메쉬 (.obj 형식)가 다운로드되었습니다. 이 메쉬를 프로그램에서 사용하려고합니다. 처음에는 .obj 파일을 파싱 한 다음 텍스쳐와 메쉬를 렌더링하기 위해 코드를 처음부터 작성하고 있습니다.2 차원 jpeg 텍스처가있는 삼각형 메쉬에 대한 UVW 매핑
내 프로그램은 현재 대부분의 경우이 작업을 처리 할 수 있지만이 특정 .obj 파일을 처리하는 방법을 모르는 몇 가지 문제가 있습니다.
1) UV 좌표가 [0,1] 범위에 없습니다. 0은 여전히 최소값이지만 상한이없는 것 같습니다. 이것은 텍스처가 메쉬 주위에 여러 번 감싸는 것을 나타내는 것으로 가정하므로 각 좌표에 대해 십진수 값을 추출하여 사용하기로 결정했습니다. 각 I는 현재 다음과 같은 일을 해요 좌표 정도 :
double u = ReadInValue();
double v = ReadInValue();
u = u - (int)u;
v = v - (int)v;
은 그래서 자외선 COORD은 [1.35, 3.29]는 [0.35, 0.29]이된다. 적용 할 때 텍스처가 여전히 약간 보입니다. 이렇게해야 제대로 작동하는지 확실하지 않습니다.
2) 추가 W 좌표가 있습니다. 3D 체적 텍스처 파일을 다루는 경우 W 좌표는 UV 좌표와 동일한 방식으로 작동하고 단순히 3 차원에서 값을 조회하는 데 사용된다는 것을 알고 있습니다. 그러나 주어진 질감 파일은 입니다. 그래서이 여분의 W 좌표는 어떻게해야합니까? 나는 그것을 무시할 수 있습니까? W 용어로 UV 좌표를 나눌 필요가 있습니까 (마치 동질적인 좌표 인 것처럼). 어떻게해야할지 잘 모르겠습니다.
1) 어떻게하면 "가지고있는 것을 사용합니까"? UV [5,5]를 그대로 [0,1] 범위로 변환하지 않고 어떻게 사용합니까? 4000 x 4000 픽셀의 텍스처를 가지고 있다면 [5,5]는 무엇에 해당합니까? [0,1]의 범위에 UV가있는 경우 좌표를 백분율로 생각할 수 있으므로 uv [0.5, 0.5]는 픽셀 x = 2000, y = 2000이됩니다. 분수 부분. – user1855952
텍스쳐 공간을'[0,0] -> [1,1]'이 아닌 무한 공간으로 상상해보십시오. 삼각형은이 공간에 나란히 놓여 있습니다. 예를 들어, 모래 해변을 렌더링 할 때 큰 모래 텍스처가 필요하지 않습니다. 작은 '4x4/8x8' 텍스처를 사용할 수 있지만 좌표를 크게 설정하십시오 (예 : [0,0] -> [100,100]). 그래서 텍스처는 여러 번 반복됩니다. 텍스처 내용에 따라 모델에 동일한 내용이 적용될 수 있습니다. – kolenda