paraview探索视图与关联表达:vtkPVRenderView与vtkPVDataRepresentation

 

目录

 vtkPVRenderView与vtkPVDataRepresentation关联表达

***表示用来传递表示数据的方便方法

在使用有序合成时表示如何参与必要的数据重新分布

***请求视图将repr生成的片段传递到所有进程

请求视图始终将数据传递给客户端

仅支持远程渲染或本地渲染

支持硬件选择的表达

ParaView中查看电影数据库


vtkPVRenderView与vtkPVDataRepresentation关联表达

***表示用来传递表示数据的方便方法

//@{
  /**
   * Convenience methods used by representations to pass represented data.
   * If trueSize is non-zero, then that's the size used in making decisions
   * about LOD/remote rendering etc and not the actual size of the dataset.
   */
  static vtkAlgorithmOutput* GetPieceProducer(
    vtkInformation* info, vtkPVDataRepresentation* repr, int port = 0);
  static vtkAlgorithmOutput* GetPieceProducerLOD(
    vtkInformation* info, vtkPVDataRepresentation* repr, int port = 0);
  static void SetRedistributionMode(
    vtkInformation* info, vtkPVDataRepresentation* repr, int mode, int port = 0);
  static void SetRedistributionModeToSplitBoundaryCells(
    vtkInformation* info, vtkPVDataRepresentation* repr, int port = 0);
  static void SetRedistributionModeToDuplicateBoundaryCells(
    vtkInformation* info, vtkPVDataRepresentation* repr, int port = 0);
  static void SetRedistributionModeToUniquelyAssignBoundaryCells(
    vtkInformation* info, vtkPVDataRepresentation* repr, int port = 0);
  static void SetGeometryBounds(vtkInformation* info, vtkPVDataRepresentation* repr,
    const double bounds[6], vtkMatrix4x4* transform = nullptr, int port = 0);
  static void SetStreamable(vtkInformation* info, vtkPVDataRepresentation* repr, bool streamable);
  static void SetNextStreamedPiece(
    vtkInformation* info, vtkPVDataRepresentation* repr, vtkDataObject* piece);
  static vtkDataObject* GetCurrentStreamedPiece(
    vtkInformation* info, vtkPVDataRepresentation* repr);
  //@}

表示用来传递表示数据的方便方法。

如果trueSize不为零,那么这是在决定LOD/远程渲染等时使用的大小,而不是数据集的实际大小。

在使用有序合成时表示如何参与必要的数据重新分布

  enum
  {
    USE_BOUNDS_FOR_REDISTRIBUTION = 0x01,
    DATA_IS_REDISTRIBUTABLE = 0x02,
    USE_DATA_FOR_LOAD_BALANCING = 0x40,
  };
  static void SetOrderedCompositingConfiguration(vtkInformation* info,
    vtkPVDataRepresentation* repr, int config, const double* bounds = nullptr, int port = 0);

OrderedCompositingConfiguration`让表示向视图指示在使用有序合成时表示如何参与必要的数据重新分布。

这些标志意味着要使用按位或组合在一起。

如果未指定,则默认值为0,即表示数据将保持不变。除了在所有渲染列上都有完整渲染几何体的普通表示或表示之外,不建议这样做。

`DATA_IS_REDISTRIBUTABLE`表示视图可以根据需要重新分发此表示中的渲染数据。这是典型的表示渲染多边形数据或非结构化网格。

`USE_DATA _FOR _LOAD_BALANCING`表示在为数据构建可排序分布时,应该使用此表示数据。如果未设置,则表示将不会有助于构建用于在渲染列组之间分割数据的kd树的算法。

当数据太重而无法移动(即DATA_IS_REDISTRIBUTABLE is not true)并且已经以可排序的方式在列组之间拆分时,可以使'USE_BOUNDS_FOR_ REDISTRIBUTION'。在这种情况下,这表示视图必须使用此表示的数据的空间分区,并相应地移动其他数据。此标志不能与DATA_IS_REDISTRIBUTABLE or USE_BOUNDS_FOR_REDISTRIBUTION一起使用。 

  VTK_LEGACY(static void MarkAsRedistributable(
    vtkInformation* info, vtkPVDataRepresentation* repr, bool value = true, int port = 0));
  VTK_LEGACY(static void SetOrderedCompositingInformation(vtkInformation* info,
    vtkPVDataRepresentation* repr, vtkExtentTranslator* translator, const int whole_extents[6],
    const double origin[3], const double spacing[3]));
  VTK_LEGACY(
    static void SetOrderedCompositingInformation(vtkInformation* info, const double bounds[6]));

*从ParaView 5.9开始,这些方法被替换为“SetOrderedCompositingConfiguration”,它为

*向视图指示此表示如何参与使用有序合成时需要重新分配数据。

***请求视图将repr生成的片段传递到所有进程

请求视图将\\c repr生成的片段在聚集到根节点后,传递给所有进程,从而合并每个进程生成的数据集。

static void SetDeliverToAllProcesses(
    vtkInformation* info, vtkPVDataRepresentation* repr, bool clone);

请求视图始终将数据传递给客户端

 static void SetDeliverToClientAndRenderingProcesses(vtkInformation* info,
    vtkPVDataRepresentation* repr, bool deliver_to_client, bool gather_before_delivery,
    int port = 0);

请求视图始终将数据传递给客户端。

这对于在非合成视图(例如文本源表示)中渲染的表示非常重要。

如果SetDeliverToAllProcesses()为true,则这是多余的\\c gather_before_delivery可用于指示服务器节点上的数据是否必须在传送到客户端之前收集到根节点。

如果\\c gather_before_delivery为false,则只将根节点的数据发送到客户端,而不进行任何并行通信。

仅支持远程渲染或本地渲染

 static void SetRequiresDistributedRendering(
    vtkInformation* info, vtkPVDataRepresentation* repr, bool value, bool for_lod = false);
  static void SetRequiresDistributedRenderingLOD(
    vtkInformation* info, vtkPVDataRepresentation* repr, bool value)
  {
    vtkPVRenderView::SetRequiresDistributedRendering(info, repr, value, true);
  }

某些表示仅在远程渲染或本地渲染时起作用。在REQUEST\\u UPDATE()pass中使用此方法告诉视图表示是否需要特定模式。

注意,仅用于“需要”远程或本地渲染\\c值==true表示表示需要分布式呈现,\\c值==false表示表示只能呈现客户端或根节点上的属性。

支持硬件选择的表达

//@{
  /**
   * Representations that support hardware (render-buffer based) selection,
   * should register the prop that they use for selection rendering. They can do
   * that in the vtkPVDataRepresentation::AddToView() implementation.
   */
  int RegisterPropForHardwareSelection(vtkPVDataRepresentation* repr, vtkProp* prop);
  void UnRegisterPropForHardwareSelection(vtkPVDataRepresentation* repr, vtkProp* prop);

支持硬件(基于渲染缓冲区)选择的表示,

应该注册他们用于选择渲染的道具。他们能做到

在vtkPVDataRepresentation::AddToView()实现中。

ParaView中查看电影数据库

  static vtkPVCameraCollection* GetDiscreteCameras(
    vtkInformation* info, vtkPVDataRepresentation* repr);
  static void SetDiscreteCameras(
    vtkInformation* info, vtkPVDataRepresentation* repr, vtkPVCameraCollection* style);

离散摄影机是指定的摄影机集合,强制视图仅与集合中的摄影机交互。

在`vtkPVView::REQUEST\\u UPDATE()`pass中,表示可以请求视图通过向视图提供vtkPVCameraCollection来使用离散摄影机。自在视图中可以看到多个表示,这取决于表示如何处理提供不同样式的多个表示。

设置后,在每个渲染上,vtkPVRenderView将尝试更新当前相机匹配集合中的相机。然而,在互动过程中,仅当“捕捉到的摄影机”与上一个不同时,才能捕捉到集合中的摄影机。这避免了摄影机操纵器在交互过程中仅更新现有摄影机位置的副作用。

@note由于这应该在vtkPVView::REQUEST\\u UPDATE()中设置,因此在触发传递之前它是未设置的。

@warning这是一个新的/实验性功能,用于支持在ParaView中查看电影数据库。随着ParaView对电影院的支持不断提高,这种情况很可能会改变。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片