primuvconvert( 인풋 , Uv입력(vector2), 프리미티브 번호, 작동 방식);
인풋
: 측정할 지오메트리 경로 혹은 인풋번호 입력
Uv입력
: 변환(수정)을 시도하려는 커브의 Uv 좌표
프리미티브 번호
: 변환하려는 프리미티브의 번호
4번모드 (PRIMUV_UNIT_TO_UNITLEN)
버텍스가 지정 프리미티브에서 상대적으로 위치한 uv좌표를 직접 확인하여 가져오는 방식
인풋
: 측정할 지오메트리 경로 혹은 인풋번호 입력
Uv입력
: 변환(수정)을 시도하려는 커브의 Uv 좌표
프리미티브 번호
: 변환하려는 프리미티브의 번호
4번모드 (PRIMUV_UNIT_TO_UNITLEN)
버텍스가 지정 프리미티브에서 상대적으로 위치한 uv좌표를 직접 확인하여 가져오는 방식
int prim;
vector uv;
xyzdist(0, @P, prim, uv);
// 0번인풋에서 버텍스의 위치를 기준으로 가장 가까운 프리미티브 번호와 uv좌표를 반환
// 이때 커브는 uv가 존재하지 않기 때문에 커브 상에서 버텍스가 찍힌 위치와는 관계없이 갯수를 기준으로 노말라이즈된 uv좌표를 균등하게 나눠 값을 가지게 됨
// 때문에, 갯수에 맞게 균등하게 분배된 포인트의 uv좌표를 실질적인 프리미티브의 길이를 기준으로 0~1 사이에서 어느지점에 배치되어 있는 점인지 명확히 할 필요성이 생김
int mode = 4; // PRIMUV_UNIT_TO_UNITLEN
u@uv_profile = primuvconvert(@OpInput1, set(uv.x, 0.0), prim, mode);
// 이때 primuvconvert 에서 쓸 수 있는 모드 중 하나인 PRIMUV_UNIT_TO_UNITLEN 을 통해 올바른 버텍스 uv위치좌표?를 계산
// 현재 불러올 지오메트리가 커브선이며 뱉어내거나 넣는 형태도 vector2 방식이기 때문에, 사실상 3float vector 타입의 uvw 값에서 uv 만 필요하고
// 때문에 uv_profile 에는 u@ 로, 그리고 두번째 인풋은 강제로 vector2 를 만들기 위해 set(); 을 사용, xyzdist에서 균일하게 나온 uv에는 y값(v)과 z값(w)이 없기때문에
// set(A , B); 에서 A는 uv.x를 적었고 B에는 0 을 적게 됨
// 여기서 3번째 인풋의 prim은 위에서 이미 계산된 xyzdist를 통해 버텍스 스스로가 (가장가까이에)위치한 프리미티브, 즉 자기 자신의 프리미티브 번호가 입력됨
**커브를 2개 그어서 resample하여 점을 균등하게 나누고 edit로 점 하나만 움직여보면서 비교해보기