如何子类化 vtkActor

2024-02-09

我希望当我选择一个时能够访问我的底层数据结构vtkActor。一个类派生自vtkActor将 ptr 保存到我的数据结构似乎是最简单的方法。

我让子类编译得很好,但演员似乎没有添加到渲染器中。

所以,这是我的课程:

//.h
#include <vtkActor.h>
#include <vtkObjectFactory.h>

class Node;

struct Actor : public vtkActor {
    static Actor* New();
    vtkTypeMacro(Actor, vtkActor)

    Node* holding_node;
};

//.cpp
#include "actor.h"
vtkStandardNewMacro(Actor)

在我的渲染步骤中:如果我用vtkActor一切都按预期显示,挑选作品等等......

vtkSmartPointer<vtkActor> sphereActor = vtkSmartPointer<vtkActor>::New();

但如果我使用我的,则不会添加演员Actor class

vtkSmartPointer<Actor>    sphereActor = vtkSmartPointer<Actor>::New();

代码中没有其他任何变化。有什么问题的想法吗?


因此,事实证明,有很多函数需要重载,并且需要一些宏魔法才能使其正常工作。

我在下面粘贴了现在对我有用的示例。它主要来自vtkFollower代码(vtkActor的派生类)。希望这可以帮助!

    #include <vtkSmartPointer.h>
    #include <vtkRenderer.h>
    #include <vtkObjectFactory.h>
    #include <vtkRenderingCoreModule.h>
    #include <vtkProperty.h>


    class Node;

    class VTKRENDERINGCORE_EXPORT NodeActor : public vtkActor {
        public:
            vtkTypeMacro(NodeActor, vtkActor);

         static NodeActor *New();

        virtual void ReleaseGraphicsResources(vtkWindow *window) {
            this->Device->ReleaseGraphicsResources(window);
            this->Superclass::ReleaseGraphicsResources(window);
        }

        virtual int RenderOpaqueGeometry(vtkViewport *viewport){
            if ( ! this->Mapper ) {
                return 0;
            }
            if (!this->Property) {
                this->GetProperty();
            }
            if (this->GetIsOpaque()) {
                vtkRenderer *ren = static_cast<vtkRenderer *>(viewport);
                this->Render(ren);
                return 1;
            }
            return 0;
        }

        virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport){
            if ( ! this->Mapper ) {
              return 0;
            }
            if (!this->Property) {
              this->GetProperty();
            }
            if (!this->GetIsOpaque()) {
                vtkRenderer *ren = static_cast<vtkRenderer *>(viewport);
                this->Render(ren);
                return 1;
            }
            return 0;
        }

        virtual void Render(vtkRenderer *ren){
            this->Property->Render(this, ren);
            this->Device->SetProperty (this->Property);
            this->Property->Render(this, ren);
            if (this->BackfaceProperty) {
                this->BackfaceProperty->BackfaceRender(this, ren);
                this->Device->SetBackfaceProperty(this->BackfaceProperty);
            }
            if (this->Texture) {
                this->Texture->Render(ren);
            }
            this->ComputeMatrix();
            this->Device->SetUserMatrix(this->Matrix);
            this->Device->Render(ren,this->Mapper);
        }

        void ShallowCopy(vtkProp *prop) {
            NodeActor *f = NodeActor::SafeDownCast(prop);
            this->vtkActor::ShallowCopy(prop);
        }

        //****************************************//
        //              my member
        //****************************************// 
        Node*   node_i_represent{nullptr};

    protected:
        vtkActor* Device;

        NodeActor() {
            this -> Device = vtkActor::New();
        }

        ~NodeActor() {
            this -> Device -> Delete();
        }
    private:
};

vtkStandardNewMacro(NodeActor)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何子类化 vtkActor 的相关文章

随机推荐

  • C++11 标准中的哪一部分规定了基本数据类型大小之间的相对顺序?

    我试图找出C 标准是否规定了各种类型的大小之间的关系 例如 这个答案位于https stackoverflow com a 589599 1175080 https stackoverflow com a 589599 1175080似乎声
  • 从另一个 js 文件中的 javascript 函数调用命名空间函数时出现问题

    在 js 中 命名空间对我来说是新事物 而且我的项目已经变得非常复杂 所以是时候驯服这头野兽了 P 我使用模块模式在 foo js 中创建了一个名称空间 foo var foo function update function alert
  • 如何使用 HTML 发送 SOAP 请求并接收响应?

    我想将号码发送至SOAP 服务器 我不知道是否可以将其称为服务器 如果我错了请纠正我 并使用接收响应HTML 我见过很多问题的答案 其中包含发送 XML 请求的示例 如下所示 但我不知道如何接收和查看响应HTML 抱歉我是新手SOAP P
  • 如何在 Material-UI 中将按钮居中

    我不知道如何在 Material UI 中将按钮居中 这是我的代码 function BigCard props const classes props return div div
  • 将 pandas 数据框渲染为 HTML,其样式与 Jupyter Notebook 相同

    我想以与 Jupyter Notebook 相同的方式将 pandas 数据框渲染为 HTML 即具有漂亮的样式 列突出显示和单击时列排序等所有功能 pandas to html https pandas pydata org pandas
  • 获取 pandas 中每一列的非零值

    我有 pandas 数据框df accel access adviser afpif afp publish afraid verizon 0 00 0 14 0 00 0 00 0 00 0 13 0 00 0 44 0 13 0 00
  • Anypoint studio/Mule 在启动期间挂起

    我是 Mule 和 Anypoint 工作室的新手 我以前和Mule一起工作过 过了一会儿 我又回来处理它了 我升级到 Anypoint Studio March 2015 Release Version 5 1 0 Build Id 20
  • 在选择之前和之后插入文本并设置新文本的样式

    我可以使用以下方法在选择之前和之后插入文本 Selection InsertBefore start Selection InsertAfter end 但我无法控制插入文本的样式 如何将新插入的文本设置为特定样式 并保留原始选定的文本不变
  • 删除 gulp 文件中的 windows 文件只读属性

    如何删除Windows中文件夹下所有文件的只读属性 UPDATE 问题更多是关于如何使用 gulpfile 删除只读属性 我找到了答案 要递归地删除目录下所有文件的只读属性 我们在 windows 命令行中运行以下命令 attrib r
  • Flutter ios 中未找到“flutter_keyboard_visibility_web”的 podspec

    我在 Mac gt Android studio 中使用 Flutter 并且当我在终端中编写 pod install 时 它向我展示 Analyzing dependencies No podspec found for flutter
  • 如何解决 UnicodeDecodeError?

    当尝试从数据存储中读取非 ASCII 码时 我收到一条奇怪的错误消息 ascii codec can t decode byte 0xc3 in position 5 ordinal not in range 128 Traceback m
  • 将数据透视表更新到数据库

    我有一个来自 MySQL 查询的数据透视表 该表源自 submit time form name field name field value file order file 15052703120 Submissions your nam
  • CCcomboBoxEx 图像和文本之间的间距

    有没有什么方法 一些系统指标值或其他任何东西可以给出 CComboBoxEx 控件上图标和图像之间的边距有多少像素 下图中红色标记表示的空间 None
  • .pfx 文件是否可以包含多个私钥?

    我试图了解 pfx 文件是否可能包含多个私钥 如果有多组证书及其私钥 如何在 KeyStore 中找到它们 通过使用别名 对吧 所以答案是肯定的 它可以拥有任意数量的私钥和关联的证书 感谢你们
  • 使用 __gnu_mcount_nc 捕获函数退出时间

    我正在尝试在支持不佳的原型嵌入式平台上进行一些性能分析 我注意到 GCC 的 pg 标志导致 thunks gnu mcount nc在每个函数的入口处插入 没有实施 gnu mcount nc是可用的 并且供应商没有兴趣提供帮助 但是由于
  • 为 Project Tango 开发设备设置开发环境时出现问题

    我有一个 Project Tango 开发套件 我对处理传感器的深度数据感兴趣 我的机器上有 ADB 设置 但 Eclipse android 模拟器未检测到 Tango Development 平板电脑 谁能建议我如何为设备进行设置 先感
  • 使我的文件可读为 Perl 或 HTML

    本着 Perl 序言 https stackoverflow com questions 2308874 explain the deviousness of the perl preamble 无论是由 shell 脚本解释器还是 Per
  • 从文本文件导入数据时 SQL 保留关键字导致错误

    我有以下代码 我正在尝试按照本网站上的一位用户的建议使用 php 将文本文件导入到 sql 表中 不幸的是 由于我的文本文件中包含 最大和最小 单词 我的导入中途出现错误 我试图找出我能做些什么来避免它 我发现的大部分内容都是关于在列名称中
  • nginx既是反向代理又是Web服务器

    我目前使用 nginx 和乘客来为我的 Rails 应用程序提供服务 考虑在方程式中加入缓存反向代理 我可以使用同一个 nginx 实例作为反向代理 在端口 80 上运行 提供静态和电子标记操作 还是需要不同的 nginx 实例或完全不同类
  • 如何子类化 vtkActor

    我希望当我选择一个时能够访问我的底层数据结构vtkActor 一个类派生自vtkActor将 ptr 保存到我的数据结构似乎是最简单的方法 我让子类编译得很好 但演员似乎没有添加到渲染器中 所以 这是我的课程 h include