VTK实现actor和坐标轴 缩放不变

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

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 );
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值