개발/three.js / / 2023. 2. 17. 15:56

[Capstone Project] 템플릿 vertex 적용 테스트 환경 만들기 - 5

반응형
※ 해당 글은 capstone 종합설계 프로젝트를 하면서 적었던 일지를 돌아보며 작성한 것입니다.

개발일지 2022.10.11

leftSleeveVertexIndexList.forEach((element, index)=>{
        // resultVertexPos = origin + (sleeveVertexPos - CenterPos) * adjustValue
        vertexArrayFilter.filtedVertexVectorArray[element].x = leftSleeveCenterVertex.x + (sleeveValue.leftSleeveVertexVectorList[index].x - leftSleeveCenterVertex.x) * sleeveValue.endPointValue
        vertexArrayFilter.filtedVertexVectorArray[element].y = leftSleeveCenterVertex.y + (sleeveValue.leftSleeveVertexVectorList[index].y - leftSleeveCenterVertex.y) * sleeveValue.endPointValue
        vertexArrayFilter.filtedVertexVectorArray[element].z = leftSleeveCenterVertex.z + (sleeveValue.leftSleeveVertexVectorList[index].z - leftSleeveCenterVertex.z) * sleeveValue.endPointValue
    })

    rightSleeveVertexIndexList.forEach((element, index)=>{
        // resultVertexPos = origin + (sleeveVertexPos - CenterPos) * adjustValue
        vertexArrayFilter.filtedVertexVectorArray[element].x = rightSleeveCenterVertex.x + (sleeveValue.rightSleeveVertexVectorList[index].x - rightSleeveCenterVertex.x) * sleeveValue.endPointValue
        vertexArrayFilter.filtedVertexVectorArray[element].y = rightSleeveCenterVertex.y + (sleeveValue.rightSleeveVertexVectorList[index].y - rightSleeveCenterVertex.y) * sleeveValue.endPointValue
        vertexArrayFilter.filtedVertexVectorArray[element].z = rightSleeveCenterVertex.z + (sleeveValue.rightSleeveVertexVectorList[index].z - rightSleeveCenterVertex.z) * sleeveValue.endPointValue
    })

소매의 각각 vertex들의 center 좌표를 구하고, (소매의 vertex - center vertex)로 구한 vector에 scalar를 곱하여 center를 중심으로 떨어져있는 거리를 조절한다. 이 방식으로 둘레를 조절하는 코드이다.

 

여기서 주의할 점은

vertexArrayFilter.filtedVertexVectorArray[element].x =
	(leftSleeveCenterVertex.x + sleeveValue.leftSleeveVertexVectorList[index].x - leftSleeveCenterVertex.x) * sleeveValue.endPointValue

위처럼 괄표를 origin까지 감싸면 origin 좌표에서 subtracted 벡터를 더해야하는데, origin 좌표 자체에 sleeveValue가 곱해서 origin 좌표가 변형된다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유