[Paraview] D3 filter and PkdTrees: how to tell if D3 previously executed?, PkdTree point locators

Christine Corbett Moran corbett at physik.uzh.ch
Tue Nov 10 16:30:24 EST 2009


Hi,

I'm now playing around with creating some filters which use PkdTrees
internally, mainly for their point locator capabilities. As the
filters I'm interested in creating work best with spatial locality, I
want to execute D3 if running in parallel and it has not previously
been executed. I had four primary questions.

1. How do I tell if D3 has been executed previously in the pipeline?
2. It seems that I must first build a locator from points before
calling e.g. FindClosestNPoints even though D3 takes in the same data
set as input to build its KdTree. Does this mean
BuildLocatorFromPoints(input) builds a different sort (and, in turn,
new) KdTree than D3->SetInput(input) .... D3->Update()? Should I not
even bother trying to get the KdTree from D3 and simply create a new
one?
3. If I build my own PkDtree is this accomplished by creating a new
one on each process, and for my locator calling
BuildLocatorFromPoints(input) on each process, or should I do
something special on e.g. the root process?
4. If I run D3 and/or build a KdTree within my filter it would be nice
to save this for possible use by filters downstream. I see that D3 has
a SetRetainKdTree, which may be what I am looking for in that regard,
but if I build my own KdTree with associated locator is there a way to
retain it/access it downstream?

Christine


More information about the ParaView mailing list