VTK实现actor和坐标轴 缩放不变
描述
实现滚动鼠标中键(移动相机)时,保持坐标轴或者指定的actor在屏幕上看起来大小不变。
效果如下:视频中,立方体和坐标轴都设置了缩放不变,而旁边的圆柱体正常缩放。
vtk actor 和坐标轴缩放不变(相机距离不影响actor在屏幕上的大小)
源码
//CMakeLists.txt
project(sameDisplaySize)
find_package( VTK REQUIRED )
include( ${
VTK_USE_FILE} )
add_executable(${
PROJECT_NAME} "main.cpp" "customIteractorStyle.h" "customIteractorStyle.cpp" )
target_link_libraries( ${
PROJECT_NAME} ${
VTK_LIBRARIES} )
=========================================================================
//customIteractorStyle.h
#include <iostream>
#include <vtkSmartPointer.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkTransform.h>
#include <vtkAxesActor.h>
class customIteractorStyle: public vtkInteractorStyleTrackballCamera
{
public:
static customIteractorStyle *New(){
return new customIteractorStyle(); }
void OnMouseWheelForward() override;
void OnMouseWheelBackward() override;
void SetFixedRegularActor(vtkActor * actor);
void SetFixedAxesActor(vtkAxesActor * actor);
protected:
customIteractorStyle();
~customIteractorStyle() override;
void ScaleCube( double factor );

本文介绍如何使用VTK实现特定的actor或坐标轴在摄像机移动时保持其在屏幕上的显示大小不变。通过自定义交互样式类,确保在滚轮操作时,指定的actor和坐标轴不会随摄像机的距离变化而改变大小。

638

被折叠的 条评论
为什么被折叠?



