VTK中的第一人称模式
First person mode in VTK
我在尝试使用 VTK 制作一种 FPS 时遇到问题。我需要的是用户能够使用鼠标(无需单击任何按钮)移动相机进行俯仰、打哈欠等,并使用键盘(您的标准 FPS)向前、向后、向左或向右移动。我虽然使用任何交互方式都很容易,但似乎 none 支持这种功能。有什么想法可以使用吗?
谢谢
有 "flight" 相机 - vtkInteractorStyleFlight
如果它不适合您,您可能必须自己制作。然而,它应该不会太难,只需从 vtkInteractorStyle
派生一个新的交互器,它已经有各种方法,如 OnMouseMove
、OnKeyDown
等,你可以覆盖和填充您的相机移动(即根据鼠标移动计算 roll/pitch/yaw)。您可以通过 <your_vtkInteractorStyle_instance>->GetCurrentRenderer()->GetActiveCamera()
访问当前相机,它已经有 yaw/pitch/roll.
的方法
在 vtkInteractorStyle 中,this->Interactor
会给你一个 vtkRenderWindowInteractor
绑定到 InteractorStyle 的实例,它有你需要的关于鼠标和键盘的所有数据(current/last 鼠标位置、按键等)。它的事件被 vtkInteractorStyle
捕获并触发所有 OnMouseMove
等,所以你需要做的就是覆盖和 "fill" 那些。
一个问题是 vtkInteractorStyle
已经有一些功能绑定到一些键,最显着的是绑定到 'W' 键。您可能必须重写 OnChar
方法,这样就不会以原始 vtkInteractorStyle
的方式处理键。或者您可以直接从抽象派生您的交互器 class vtkInteractorObserver
,但是您将不得不做更多的工作,因为并非所有必要的事件都定义了它们的回调。
我认为最好的方法是简单地查看 vtkInteractorStyle sources 以了解它是如何实现的,然后根据您的目的进行类似的操作。
顺便说一句,一些快速谷歌搜索给了我 this about 1st person camera in VTK,也许它也有一些对你有用的信息。
我在尝试使用 VTK 制作一种 FPS 时遇到问题。我需要的是用户能够使用鼠标(无需单击任何按钮)移动相机进行俯仰、打哈欠等,并使用键盘(您的标准 FPS)向前、向后、向左或向右移动。我虽然使用任何交互方式都很容易,但似乎 none 支持这种功能。有什么想法可以使用吗?
谢谢
有 "flight" 相机 - vtkInteractorStyleFlight
如果它不适合您,您可能必须自己制作。然而,它应该不会太难,只需从 vtkInteractorStyle
派生一个新的交互器,它已经有各种方法,如 OnMouseMove
、OnKeyDown
等,你可以覆盖和填充您的相机移动(即根据鼠标移动计算 roll/pitch/yaw)。您可以通过 <your_vtkInteractorStyle_instance>->GetCurrentRenderer()->GetActiveCamera()
访问当前相机,它已经有 yaw/pitch/roll.
在 vtkInteractorStyle 中,this->Interactor
会给你一个 vtkRenderWindowInteractor
绑定到 InteractorStyle 的实例,它有你需要的关于鼠标和键盘的所有数据(current/last 鼠标位置、按键等)。它的事件被 vtkInteractorStyle
捕获并触发所有 OnMouseMove
等,所以你需要做的就是覆盖和 "fill" 那些。
一个问题是 vtkInteractorStyle
已经有一些功能绑定到一些键,最显着的是绑定到 'W' 键。您可能必须重写 OnChar
方法,这样就不会以原始 vtkInteractorStyle
的方式处理键。或者您可以直接从抽象派生您的交互器 class vtkInteractorObserver
,但是您将不得不做更多的工作,因为并非所有必要的事件都定义了它们的回调。
我认为最好的方法是简单地查看 vtkInteractorStyle sources 以了解它是如何实现的,然后根据您的目的进行类似的操作。
顺便说一句,一些快速谷歌搜索给了我 this about 1st person camera in VTK,也许它也有一些对你有用的信息。