カメラ#
pyvista.Camera
クラスは, vtk.vtkCamera
クラスに追加機能とPython APIを追加します. pyvista.vtkCamera
オブジェクトには,ほとんどの場合に適切に機能するデフォルトのライトセットが付属していますが,多くの場合,より実践的なカメラへのアプローチが必要です.
簡単な例#
カメラの視錐台を作成してから,視錐台内のシーンを作成します.
import pyvista as pv
import numpy as np
import vtk
from pyvista import examples
pv.set_plot_theme("document")
camera = pv.Camera()
near_range = 0.3
far_range = 0.8
camera.clipping_range = (near_range, far_range)
unit_vector = np.array(camera.direction) / np.linalg.norm(
np.array([camera.focal_point]) - np.array([camera.position])
)
frustum = camera.view_frustum(1.0)
position = camera.position
focal_point = camera.focal_point
line = pv.Line(position, focal_point)
bunny = examples.download_bunny()
xyz = camera.position + unit_vector * 0.6 - np.mean(bunny.points, axis=0)
bunny.translate(xyz, inplace=True)
pl = pv.Plotter(shape=(2, 1))
pl.subplot(0, 0)
pl.add_text("Camera Position")
pl.add_mesh(bunny)
pl.add_mesh(frustum, style="wireframe")
pl.add_mesh(bunny)
pl.add_mesh(line, color="b")
pl.add_point_labels(
[
position,
camera.position + unit_vector * near_range,
camera.position + unit_vector * far_range,
focal_point,
],
["Camera Position", "Near Clipping Plane", "Far Clipping Plane", "Focal Point"],
margin=0,
fill_shape=False,
font_size=14,
shape_color="white",
point_color="red",
text_color="black",
)
pl.camera.position = (1.1, 1.5, 0.0)
pl.camera.focal_point = (0.2, 0.3, 0.3)
pl.camera.up = (0.0, 1.0, 0.0)
pl.camera.zoom(1.4)
pl.subplot(1, 0)
pl.add_text("Camera View")
pl.add_mesh(bunny)
pl.camera = camera
pl.show()
カメラの回転をコントロールする#
pyvista.Camera.position
プロパティを介してカメラ位置を直接設定することに加えて,カメラの pyvista.Camera.roll
, pyvista.Camera.elevation
,および pyvista.Camera.azimuth
を直接制御することもできます.
たとえば,回転を修正できます.最初に,カメラ位置を 'yz'
を見るように設定しながら,方向立方体のプロットを生成します.
import pyvista
from pyvista import demos
pl = demos.orientation_plotter()
pl.camera_position = 'yz'
pl.show()
ここでは,回転をそのまま修正します.
import pyvista
from pyvista import demos
pl = demos.orientation_plotter()
pl.camera_position = 'yz'
pl.camera.roll += 10
pl.show()
ここで,カメラの方位角を45度オフセットして, X+
と Y+
の面を見ます.
import pyvista
from pyvista import demos
pl = demos.orientation_plotter()
pl.camera_position = 'yz'
pl.camera.azimuth = 45
pl.show()
ここでは,カメラの仰角を45度に設定して上方に移動し, X+
と Z+
のフェースを確認します.
import pyvista
from pyvista import demos
pl = demos.orientation_plotter()
pl.camera_position = 'yz'
pl.camera.elevation = 45
pl.show()
APIリファレンス#
|
VTK CameraクラスのPyVistaラッパー. |