[Paraview] Glyph scaling and orienting/programmable filter?
Eric E. Monson
emonson at cs.duke.edu
Wed Mar 4 09:25:20 EST 2009
Hey Pawel,
If you happen to be working from a binary version of ParaView, you
should also be able to try it out by loading the XML that Jean
provided with Tools->Manage Plugins/Extensions..., and then the issue
of vtkTensorGlyphs not naming the arrays can be temporarily solved by
adding a Python Programmable Filter after the Tensor Glyphs filter
with a script like:
pdi = self.GetInput()
pdata = pdi.GetPointData()
pdata.GetScalars().SetName('Scalars')
pdata.GetNormals().SetName('Normals')
pdata.GetTensors().SetName('Tensors')
pdo = self.GetOutput()
pdo.ShallowCopy(pdi)
I haven't tried any of this with vtkTensorGlyphs, but I used a similar
method yesterday to try vtkImplicitModeller and compensate for the
fact that this filter also does not name the output scalars.
-Eric
------------------------------------------------------
Eric E Monson
Duke Visualization Technology Group
On Mar 3, 2009, at 11:41 AM, Jean Favre wrote:
> Pawel Krupinski wrote:
>> So I was thinking: I need to scale spheres anisotropically to get
>> ellipsoids so I really need to do it by scaling with vector
>> components of the scales/axes_length vector.
>
> What you describe seems to be exactly what the vtkTensorGlyph does.
> See details here http://www.vtk.org/doc/nightly/html/classvtkTensorGlyph.html
>
> Tensor Glyphing is not in ParaView yet. But a ctest exist (if Python
> is enabled)
>
> ./VTK/Graphics/Testing/Python/TenEllip.py
>
> You can add Tensor Glyph yourself with a pluggin. Here are the XML
> necessary. The CMakelists.txt is this:
> ############
> cmake_minimum_required(VERSION 2.6)
> FIND_PACKAGE(ParaView REQUIRED)
> INCLUDE(${PARAVIEW_USE_FILE})
>
> ADD_PARAVIEW_PLUGIN(ExtraSMPlugin "1.0"
> SERVER_MANAGER_XML extras_Server.xml
> )
>
> ADD_PARAVIEW_PLUGIN(ExtraGUIPlugin "1.0"
> GUI_RESOURCES extras.qrc )
> #############
>
> The file extras.qrc is this:
>
> ############
> <RCC>
> <qresource prefix="/ParaViewResources" >
> <file>extras.xml</file>
> </qresource>
> </RCC>
> ############
>
> There is a complication. The data fields created by vtkTensorGlyph
> (and vtkPointLoad) are not named. ParaView will not color them. You
> need to add two lines of code in vtkTensorGlyph.cxx and
> vtkPointLoad.cxx immediately after the declaration of
> newNormals = vtkFloatArray::New();
> newScalars = vtkFloatArray::New();
> newTensors = vtkFloatArray::New();
>
> newScalars->SetName("Scalars");
> newNormals->SetName("Normals");
> newTensors->SetName("Tensors");
>
> hope it fits the bill. Caveat Emptor.
>
> Jean --
> Swiss National Supercomputing Center
>
> <ServerManagerConfiguration>
> <ProxyGroup name="sources">
> <SourceProxy name="Point Load" class="vtkPointLoad">
> <DoubleVectorProperty
> name="LoadValue"
> command="SetLoadValue"
> default_values="100"
> number_of_elements="1">
> </DoubleVectorProperty>
> <IntVectorProperty
> name="ComputeEffectiveStress"
> command="SetComputeEffectiveStress"
> number_of_elements="1"
> default_values="1" >
> <BooleanDomain name="bool"/>
> </IntVectorProperty>
> <IntVectorProperty
> name="ModelBounds"
> command="SetModelBounds"
> number_of_elements="6"
> default_values="-10 10 -10 10 -10 10" >
> </IntVectorProperty>
> <IntVectorProperty
> name="SampleDimensions"
> command="SetSampleDimensions"
> number_of_elements="3"
> default_values="6 6 6" >
> </IntVectorProperty>
> </SourceProxy>
> </ProxyGroup>
>
>
> <ProxyGroup name="filters">
> <SourceProxy name="Tensor Glyph" class="vtkTensorGlyph">
> <InputProperty
> name="Input"
> command="SetInputConnection">
> <ProxyGroupDomain name="groups">
> <Group name="sources"/>
> <Group name="filters"/>
> </ProxyGroupDomain>
> <DataTypeDomain name="input_type">
> <DataType value="vtkDataSet"/>
> </DataTypeDomain>
> <InputArrayDomain name="input_array1"
> attribute_type="point"
> number_of_components="1" optional="1"/>
> <InputArrayDomain name="input_array2"
> attribute_type="point"
> number_of_components="9" optional="1"/>
> <Documentation>
> This property specifies the input to the filter.
> </Documentation>
> </InputProperty>
>
> <StringVectorProperty
> name="SelectInputScalars"
> command="SetInputArrayToProcess"
> number_of_elements="5"
> element_types="0 0 0 0 2"
> label="Scalars">
> <ArrayListDomain name="array_list" attribute_type="Scalars"
> input_domain_name="input_array1">
> <RequiredProperties>
> <Property name="Input" function="Input"/>
> </RequiredProperties>
> </ArrayListDomain>
> <Documentation>
> This property indicates the name of the scalar array
> </Documentation>
> </StringVectorProperty>
> <StringVectorProperty
> name="SelectInputTensors"
> command="SetInputArrayToProcess"
> number_of_elements="5"
> element_types="0 0 0 0 2"
> label="Tensors">
> <ArrayListDomain name="array_list" attribute_type="Tensors"
> input_domain_name="input_array2">
> <RequiredProperties>
> <Property name="Input" function="Input"/>
> </RequiredProperties>
> </ArrayListDomain>
> <Documentation>
> This property indicates the name of the tensor array
> </Documentation>
> </StringVectorProperty>
>
> <InputProperty
> name="Source"
> command="SetSourceConnection"
> label="Glyph Type">
> <ProxyGroupDomain name="groups">
> <Group name="sources"/>
> <Group name="glyph_sources" />
> </ProxyGroupDomain>
> <DataTypeDomain name="input_type">
> <DataType value="vtkPolyData"/>
> </DataTypeDomain>
> <ProxyListDomain name="proxy_list">
> <Proxy group="sources" name="SphereSource" />
> </ProxyListDomain>
> <Documentation>
> This property determines which type of glyph will be
> placed at the points in the input dataset.
> </Documentation>
> </InputProperty>
> <IntVectorProperty
> name="ColorGlyphs"
> command="SetColorGlyphs"
> number_of_elements="1"
> default_values="1" >
> <BooleanDomain name="bool"/>
> </IntVectorProperty>
> <IntVectorProperty
> name="ColorMode"
> command="SetColorMode"
> number_of_elements="1"
> default_values="1" >
> <BooleanDomain name="bool"/>
> </IntVectorProperty>
> <IntVectorProperty
> name="Symmetric"
> command="SetSymmetric"
> number_of_elements="1"
> default_values="0" >
> <BooleanDomain name="bool"/>
> </IntVectorProperty>
> <IntVectorProperty
> name="Scaling"
> command="SetScaling"
> number_of_elements="1"
> default_values="1" >
> <BooleanDomain name="bool"/>
> </IntVectorProperty>
> <IntVectorProperty
> name="ClampScaling"
> command="SetClampScaling"
> number_of_elements="1"
> default_values="0" >
> <BooleanDomain name="bool"/>
> </IntVectorProperty>
> <IntVectorProperty
> name="ExtractEigenvalues"
> command="SetExtractEigenvalues"
> number_of_elements="1"
> default_values="1" >
> <BooleanDomain name="bool"/>
> </IntVectorProperty>
> <IntVectorProperty
> name="ThreeGlyphs"
> command="SetThreeGlyphs"
> number_of_elements="1"
> default_values="0" >
> <BooleanDomain name="bool"/>
> </IntVectorProperty>
> <DoubleVectorProperty
> name="ScaleFactor"
> command="SetScaleFactor"
> number_of_elements="1"
> default_values="10">
> </DoubleVectorProperty>
> <DoubleVectorProperty
> name="MaxScaleFactor"
> command="SetMaxScaleFactor"
> number_of_elements="1"
> default_values="100">
> </DoubleVectorProperty>
> </SourceProxy>
> </ProxyGroup>
>
> </ServerManagerConfiguration>
>
> <ParaViewSources>
> <Source name="Point Load" />
> <Filter name="Tensor Glyph" />
> </ParaViewSources>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20090304/2e37f096/attachment-0001.htm>
More information about the ParaView
mailing list