VTK5 [rendering]depthmap & focal, position, viewup 저번 시간에 불러왔던 teapot을 데려오자. 이번엔 반만 있는 애가 아니고 완전한 teapot이다. 그냥 렌더링 하면 이렇게 생겼다. 3D 물체는 3D로 보는게 맞지만, 공유하기에는 불편하다. 마우스로 빙글빙글 회전시킬 수 있지만 그걸 이런 텍스트로 공유하기는 어렵지 않은가? 그래서 이렇게 3D로 그리지 않고 2D로 그리면서, 입체감을 살릴 수도 있다. 렌더링의 기법 중 하나가 바로 그 depth map이다. 위 teapot의 depthmap이다. 카메라 렌즈로부터 빛을 쏘아서 반사되는 길이? 를 가지고 2D 이미지에 깊이를 반영한다. filter = vtk.vtkWindowToImageFilter() filter.SetInput(renWin) filter.SetScale(1) filter.SetInp.. 2022. 2. 8. [Mesh] vtk 라이브러리로 STL 파일 scratch 부터 rendering 하기 STL 파일은 렌더링될 모델에 대한 정보를 담고 있는 파일이다! 저번 포스팅에서도 말했다 싶이 모델의 기본은 보통 삼각형(polygon)인데, 이 STL 파일에서는 어떻게 들어가 있는지 한번 살펴보도록 하자. 이 3D 에 대한 정보를 담고 있는 STL 파일은 ascii 로 인코딩 된 경우만 이렇게 메모 패드로 열어볼 수 있다. 만약 binary 로 인코딩 된 경우 절대 메모 패드를 통해 열어볼 수 없다. 설령 python의 open 을 이용해서 바이러니 파일을 열었다고 쳐도, 첫번째 문장인 solid teaset 말고는 읽을 수 있는 것이 하나도 없을 것이다. 그러니까 꼭 이 포스팅을 참고하기 전에 STL 파일이 ascii 파일인지, binary 파일인지 확인해보길 바란다... 만약 binary 파일인데.. 2022. 1. 14. [Mesh]vtk 라이브러리로 polydata 만들기 그러니까 mesh 만들기! 일단 vtk 에서는 적절한 polydata를 만들어주면 그거를 rendering 해준다 렌더링에 대한 코딩은 접어두고 적절한 polydata를 어떻게 만들 것인지에 먼저 집중해보자 #1. mesh의 기본이 되는 삼각형(polygon) 혹은 사각형 2차원에서 간단한 삼각형을 만들어보자 이 삼각형이 쌓여서 우리는 mesh data를 만들게 된다. 쉽게 생각하자면. vtkPoints()를 통해서 포인트의 위치 정보를 저장 vtkTriangle()을 통해서 포인트의 순서 정보를 저장(하나의 cell) vtkCellArray()을 통해서 cell을 뭉텅이화 points = vtk.vtkPoints() points.InsertNextPoint(0.0, 0.0, 0.0) points.Ins.. 2022. 1. 12. [Mesh]vtk 라이브러리 전 normal이란 빛에 따라 반딱반딱거리는... normal? [reference] http://rapapa.net/?p=2419 https://gusdnd852.tistory.com/280?category=775072 [본문] 우리가 물체를 볼때, 어떤 부분은 어둡고 어떤 부분은 밝게 보인다. 렌더링을 할 때에 normal까지 생각해주어야 입체감이 생기기 시작한다. 밝게 보이는 건 어떨 때인가? vertex/cell의 norm 과 빛의 방향이 일치할 때 이다. 그렇다면 norm은 무엇인가? 수직이고 길이가 1 인 norm이랑 비슷하다고 생각하면 된다. 여러 개의 polygon이 뭉쳐서 만들어진 mesh에서는 이렇게 되겠지? 이것도 cell 마다 norm을 계산한 것 계산 방법은 그냥 cross product 해서 벡터의.. 2022. 1. 12. 이전 1 2 다음