You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
C++
94 lines
3.0 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkUnstructuredGridHomogeneousRayIntegrator.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
|
|
/*
|
|
* Copyright 2004 Sandia Corporation.
|
|
* Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
|
|
* license for use of this work by or on behalf of the
|
|
* U.S. Government. Redistribution and use in source and binary forms, with
|
|
* or without modification, are permitted provided that this Notice and any
|
|
* statement of authorship are reproduced on all copies.
|
|
*/
|
|
|
|
/**
|
|
* @class vtkUnstructuredGridHomogeneousRayIntegrator
|
|
* @brief performs piecewise constant ray integration.
|
|
*
|
|
*
|
|
*
|
|
* vtkUnstructuredGridHomogeneousRayIntegrator performs homogeneous ray
|
|
* integration. This is a good method to use when volume rendering scalars
|
|
* that are defined on cells.
|
|
*
|
|
*/
|
|
|
|
#ifndef vtkUnstructuredGridHomogeneousRayIntegrator_h
|
|
#define vtkUnstructuredGridHomogeneousRayIntegrator_h
|
|
|
|
#include "vtkRenderingVolumeModule.h" // For export macro
|
|
#include "vtkUnstructuredGridVolumeRayIntegrator.h"
|
|
|
|
class vtkVolumeProperty;
|
|
|
|
class VTKRENDERINGVOLUME_EXPORT vtkUnstructuredGridHomogeneousRayIntegrator
|
|
: public vtkUnstructuredGridVolumeRayIntegrator
|
|
{
|
|
public:
|
|
vtkTypeMacro(vtkUnstructuredGridHomogeneousRayIntegrator, vtkUnstructuredGridVolumeRayIntegrator);
|
|
static vtkUnstructuredGridHomogeneousRayIntegrator* New();
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
void Initialize(vtkVolume* volume, vtkDataArray* scalars) override;
|
|
|
|
void Integrate(vtkDoubleArray* intersectionLengths, vtkDataArray* nearIntersections,
|
|
vtkDataArray* farIntersections, float color[4]) override;
|
|
|
|
//@{
|
|
/**
|
|
* For quick lookup, the transfer function is sampled into a table.
|
|
* This parameter sets how big of a table to use. By default, 1024
|
|
* entries are used.
|
|
*/
|
|
vtkSetMacro(TransferFunctionTableSize, int);
|
|
vtkGetMacro(TransferFunctionTableSize, int);
|
|
//@}
|
|
|
|
protected:
|
|
vtkUnstructuredGridHomogeneousRayIntegrator();
|
|
~vtkUnstructuredGridHomogeneousRayIntegrator() override;
|
|
|
|
vtkVolume* Volume;
|
|
vtkVolumeProperty* Property;
|
|
|
|
int NumComponents;
|
|
float** ColorTable;
|
|
float** AttenuationTable;
|
|
double* TableShift;
|
|
double* TableScale;
|
|
vtkTimeStamp TablesBuilt;
|
|
|
|
int UseAverageColor;
|
|
int TransferFunctionTableSize;
|
|
|
|
virtual void GetTransferFunctionTables(vtkDataArray* scalars);
|
|
|
|
private:
|
|
vtkUnstructuredGridHomogeneousRayIntegrator(
|
|
const vtkUnstructuredGridHomogeneousRayIntegrator&) = delete;
|
|
void operator=(const vtkUnstructuredGridHomogeneousRayIntegrator&) = delete;
|
|
};
|
|
|
|
#endif // vtkUnstructuredGridHomogeneousRayIntegrator_h
|