반응형
오늘 사용할 stl 은 아래와 같습니다. 다운받아서 사용하시면 됩니다.
먼저 stl을 불러와봅시다. 코드는 아래와 같습니다.
import os
import pyvista as pv
#stl이 있는 폴더 경로
path="폴더경로"
#폴더 경로를 현재 디렉토리로
os.chdir(converted_path)
#stl 불러오기
cat = pv.read('cat.stl')
데이터를 살펴봅시다. 아래와 같이 콘솔창이 입력합니다.
>>> cat
PolyData (0x229750ded40)
N Cells: 70576
N Points: 35290
X Bounds: -6.278e+03, 6.278e+03
Y Bounds: -2.226e+04, 3.863e+04
Z Bounds: 5.300e+00, 3.761e+04
N Arrays: 0
데이터타입이 PolyData라는 것을 알 수 있습니다.
1. 각 매쉬 별 점 정보를 알고 싶어요!
아마 우리는 각 삼각매쉬를 형성하고 있는 점 정보를 주로 다룰 것입니다. 각 매쉬는 세개의 점으로 구성되어 있습니다. 각 매쉬별 점 정보를 출력하는 방법은 아래와 같습니다. 아래는 첫번째 매쉬를 구성하는 점 정보를 출력하는 방법입니다. cell_points 메소드를 사용합니다.
>>> cat.cell_points(0)
array([[ 613.40002441, -21935.69921875, 31444.09960938],
[ 620.5 , -21854.09960938, 31493.5 ],
[ 553.40002441, -21868.19921875, 31515.90039062]])
괄호 안에 매쉬의 index를 넣어주면 됩니다. 매쉬가 몇개 있는지는 어떻게 알 수 있을까요? n_cells 메소드를 사용합니다.
>>> cat.n_cells
70576
인덱스는 0부터 시작이므로 마지막 인덱스는 70575입니다.
2. 각 매쉬 별 법선벡터를 알고 싶어요!
각 삼각매쉬의 법선벡터를 사용하는 경우도 종종 있습니다. 각 삼각매쉬의 법선벡터를 확인하는 방법은 아래와 같습니다.
>>> cat.face_normals
pyvista_ndarray([[ 0.3669228 , -0.50492173, 0.7812949 ],
[ 0.3570967 , -0.51294166, 0.7806233 ],
[ 0.37418526, -0.3939576 , 0.8395134 ],
...,
[ 0.02671368, -0.6064686 , -0.79465854],
[ 0.00216359, -0.5883112 , -0.8086317 ],
[-0.0128019 , -0.6195362 , -0.78486365]], dtype=float32)
shape은 아래와 같습니다.
>>> cat.face_normals.shape
(70576, 3)
매쉬의 개수와 같다는 것을 알 수 있습니다.
3. 모든 점을 출력하고 싶어요!
매쉬와 상관없이 모델을 구성하는 모든 점들을 출력하고 싶은 경우도 있습니다. points 메소드를 사용합니다.
>>> cat.points
pyvista_ndarray([[ 613.4, -21935.7, 31444.1],
[ 620.5, -21854.1, 31493.5],
[ 553.4, -21868.2, 31515.9],
...,
[ -1025.5, -15684.9, 15649.1],
[ -721.7, -15387.3, 15388.2],
[ -372.2, -15083.9, 15168.4]], dtype=float32)
shape은 아래와 같습니다.
>>> cat.points.shape
(35290, 3)
총 35290개의 점으로 구성된 것을 알 수 있습니다. 점의 개수만 확인하는 메소드도 있습니다. n_points 입니다.
>>> cat.n_points
35290
4. 시각화 해주세요!
마지막으로 시각화를 해봅시다. cat.stl 을 시각화하는 방법은 아래와 같습니다.
import os
import pyvista as pv
#stl이 있는 폴더 경로
path="폴더경로"
#폴더 경로를 현재 디렉토리로
os.chdir(converted_path)
#stl 불러오기
cat = pv.read('cat.stl')
# Create a plot
p = pv.Plotter() # 캔버스 정의
p.add_mesh(cat, opacity=1, color='red')
p.show()
반응형
'STL > 한눈에보기' 카테고리의 다른 글
numpy-stl mesh 데이터를 pyvista PolyData 로 바꾸기가 힘든 이유 (0) | 2023.12.08 |
---|---|
파이썬 STL 시각화 패키지 numpy-stl 글 하나로 끝내기 (0) | 2023.12.08 |
댓글