numpy-stl mesh 데이터를 pyvista PolyData 로 바꾸기가 힘든 이유
numpy-stl 의 mesh 모듈에서 stl 을 생성하는 방식을 먼저 알아보겠습니다. mesh 모듈에서는 하나의 face 를 구성하는 점의 좌표만을 이용하여 face 를 정의합니다. 어떤 face1 을 구성하는 점의 좌표가 p1,p2,p2 라고 한다면 아래와 같이 정의되는 것입니다. face1=[p1,p2,p3] p1,p2,p3는 각각 크기가 3인 벡터입니다. 반면! pyvista 는 사용할 점들을 모아놓은 배열을 정의하고, 배열의 인덱스를 가져다가 face 를 정의합니다. 예를들어 face1 을 구성하는 점이, 점들을 모아놓은 배열에서 각각 2,8,4 번째라면 face1 은 아래와 같이 정의됩니다. face1=[2,8,4] 자, 이제 numpy-mesh 로 정의된 stl 을 pyvista 로 변환해야..
2023. 12. 8.
[numpy-stl] stl 생성 원리
numpy-stl 에서 정사면체를 생성하는 예제는 아래와 같습니다. import numpy as np from stl import mesh # mesh points vertices = np.array([[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]]) # mesh faces faces = np.array([[0,1,2], # square [0,1,3], # triangle [0,2,3], [1,2,3]]) # triangle # Create the mesh cube = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype)) for i, f in enumerate(faces): for j in range(3): cube.vec..
2023. 5. 26.
[파이썬] 3차원 공간에 라벨 표시하기 (pyvista)
3차원 공간에 라벨을 표시하는 방법은 아래와 같습니다. 다양한 옵션 적용이 가능합니다. import pyvista as pv #라벨 위치 정의 x_label=pv.PolyData([0,0,0]) y_label=pv.PolyData([0,10,0]) z_label=pv.PolyData([0,20,0]) # 캔버스 정의 p = pv.Plotter() #라벨 그리기 p.add_point_labels(x_label, ["x"],point_color='yellow',text_color='red', point_size=20, font_size=40,render_points_as_spheres=True,always_visible=True,show_points=False) p.add_point_labels(y_labe..
2022. 1. 18.
[파이썬] 3차원에 선 그리기 (pyvista)
3차원 공간에 선을 그리는 방법은 아래와 같습니다. import pyvista as pv #선 정의 x_axis=pv.Line((0,0,0),(150,0,0)) y_axis=pv.Line((0,0,0),(0,150,0)) z_axis=pv.Line((0,0,0),(0,0,150)) # 캔버스 정의 p = pv.Plotter() # 선 그리기 p.add_mesh(x_axis,color='yellow') p.add_mesh(y_axis,color='yellow') p.add_mesh(z_axis,color='yellow') #그래프 보이기 p.show()
2022. 1. 18.
[파이썬] 점 3차원 그래프 그리고 크기,색 설정 (pyvista)
넘파이를 이용하여 점을 생성합니다. import numpy as np import pyvista as pv point = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [0.5, 0.5, -1]]) 그래프를 그려봅시다. p = pv.Plotter() # 캔버스 정의 p.add_mesh(point) p.show() 설정할 수 있는 옵션은 아래와 같습니다. add_mesh(self, mesh, color=None, style=None, scalars=None, clim=None, show_edges=None, edge_color=None, point_size=5.0, line_width=None, opacity=1.0, flip_scalars=False, l..
2021. 11. 8.