<div dir="ltr"><div><div><div>Franck,<br></div><br></div>What do you do in RequestData()? You are supposed to shallow copy input to the output, right?<br><br></div><div>Joachim<br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><b>Joachim Pouderoux</b><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><font size="1"><i>PhD, Technical Expert</i></font><br><b><font size="1"><a href="http://www.kitware.fr" target="_blank">Kitware SAS</a></font></b><br></blockquote>
</div></div></div>
<br><div class="gmail_quote">2015-07-19 19:53 GMT+02:00 houssen <span dir="ltr"><<a href="mailto:houssen@ipgp.fr" target="_blank">houssen@ipgp.fr</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Still get the zero filter ?!... Don't understand !? If somebody has an idea ?... Something to check ? Verify ? Track ? Something missing ? Add tag in xml ? Missing rendering call ?<br>
<br>
Now, I derive from vtkDataObjectAlgorithm, I re-implement only RequestDataObject. I tried without success to create a new instance (from pInputObj) to pass to pOutputInfo (with and without using DeepCopy) : finally I tried to pass directly pInputObj. In the GUI, in the information tab, I get the expected type but zero point / cell. When I delete the filter, the initial data are still here (tab info indicates non zero number of points / cells) but the 3D viewpoint is empty : can this be a clue of some problem ?<br>
<br>
Franck<br>
<br>
int myFilter::RequestDataObject ( vtkInformation * ipRequest, vtkInformationVector ** ipInputVector, vtkInformationVector * opOutputVector )<br>
{<br>
  if ( !ipRequest ) return 0;<br>
<br>
  vtkInformation * pInputInfo = ( ipInputVector ) ? ipInputVector[0] -> GetInformationObject ( 0 )            : NULL;<br>
  vtkDataObject  * pInputObj  = ( pInputInfo    ) ? pInputInfo       -> Get ( vtkDataObject::DATA_OBJECT () ) : NULL;<br>
  if ( pInputObj )<br>
  {<br>
    vtkInformation * pOutputInfo = ( opOutputVector ) ? opOutputVector -> GetInformationObject ( 0 )            : NULL;<br>
    vtkDataObject  * pOutputObj  = ( pOutputInfo    ) ? pOutputInfo    -> Get ( vtkDataObject::DATA_OBJECT () ) : NULL;<br>
    if ( !pOutputObj )<br>
    {<br>
      _OutputDataType = pInputObj -> GetClassName (); // For later call to FillOutputPortInformation<br>
      pOutputInfo -> Set ( vtkDataObject::DATA_OBJECT (), pInputObj );<br>
      return 1;<br>
    }<br>
  }<br>
  return 0;<br>
}<br>
<br>
int myFilter::FillOutputPortInformation ( int iPort, vtkInformation * ipInfo )<br>
{<br>
  if ( ipInfo ) ipInfo -> Set ( vtkDataObject::DATA_TYPE_NAME (), _OutputDataType.c_str () ); // Output data type to create (called after ProcessRequest)<br>
  return 1;<span class=""><br>
}<br>
<br>
Le 2015-07-15 23:49, houssen a écrit :<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Shawn, Joachim, thanks.<br>
After a quick look at the code, if I got you right, on a<br>
REQUEST_DATA_OBJECT request, I still need to create a new instance of<br>
the input and to set it as the DATA_OBJECT of the vtkInfo of the<br>
output. I still have to test this, but, I got the idea !<br>
<br>
Franck<br>
<br>
Le 2015-07-15 15:47, Shawn Waldon a écrit :<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
You might want to take a look at inheriting from<br>
vtkPassInputTypeAlgorithm[1] if you want the output type to be the<br>
same as the input type.  It already implements RequestDataObject the<br>
way that I think Joachim is suggesting.<br>
<br>
HTH,<br>
Shawn<br>
<br>
[1]:<br>
<br>
</span><a href="http://www.vtk.org/doc/nightly/html/classvtkPassInputTypeAlgorithm.html" rel="noreferrer" target="_blank">http://www.vtk.org/doc/nightly/html/classvtkPassInputTypeAlgorithm.html</a><span class=""><br>
[14]<br>
<br>
On Wed, Jul 15, 2015 at 7:27 AM, Joachim Pouderoux<br></span><span class="">
<<a href="mailto:joachim.pouderoux@kitware.com" target="_blank">joachim.pouderoux@kitware.com</a> [15]> wrote:<br>
<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Franck,<br>
<br>
You will have to override the RequestDataObject() method in order<br>
to make your filter generic. This method is the one called to<br>
generate the output data object.<br>
Take a look at vtkGenerateIndexArray.cxx for instance, I think you<br>
can just copy it in your class (which should be derivated from<br>
vtkDataObjectAlgorithm).<br>
<br>
Best,<br>
<br>
JOACHIM POUDEROUX<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
_PhD, Technical Expert_<br>
</blockquote>
<br></span><div><div class="h5">
2015-07-15 11:57 GMT+02:00 houssen <<a href="mailto:houssen@ipgp.fr" target="_blank">houssen@ipgp.fr</a> [9]>:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Seems that it is not possible to filter on vtkDataObject type.<br>
But with less generic types (like vtkUnstrucutredGrid for<br>
instance), the myFilter works : no error occur, but, viewpoint<br>
ends up to be empty. I get "zero" instead of "identity" : why ?!<br>
<br>
Franck<br>
<br>
Le 2015-07-14 23:38, houssen a écrit :<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
How to write an identity filter ? (1 input port, 1 output port,<br>
output = input whatever input may be)<br>
<br>
I need to write a custom filter. I am used to VTK "from<br>
outside"<br>
(creating/handling vtk pipelines/scene/object from a main<br>
program)<br>
that is basically without the need to understand all internal<br>
VTK<br>
mechanics (except the SetInputConnection concept). I am not<br>
yet used<br>
to VTK internal mechanics that is necessary for writing a<br>
ParaView<br>
plugin.<br>
<br>
I need my filter to do "complex" stuffs. As I couldn't make it<br>
work,<br>
I simplified as much as possible to obtain finally an identity<br>
filter<br>
(!) : this is still not working. I feel I still miss something<br>
from<br>
VTK internal mechanics.<br>
<br>
As far as I understand, in the constructor, I need :<br>
myFilter::myFilter () { SetNumberOfInputPorts  ( 1 );<br>
SetNumberOfOutputPorts ( 1 ); }<br>
<br>
So then I need to implement the FillXXXPortInformation :<br>
int myFilter::FillInputPortInformation ( int vtkNotUsed (<br>
iPort ),<br>
vtkInformation * ipInfo )<br>
{<br>
  if ( ipInfo ) ipInfo -> Set (<br>
vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE (), "vtkDataObject" );<br>
//<br>
Filter allowed data types<br>
  return 1;<br>
}<br>
int myFilter::FillOutputPortInformation ( int vtkNotUsed (<br>
iPort ),<br>
vtkInformation * ipInfo )<br>
{<br>
  if ( ipInfo ) ipInfo -> Set ( vtkDataObject::DATA_TYPE_NAME<br>
(),<br>
"vtkDataObject" ); // Output data type to be created<br>
  return 1;<br>
}<br>
<br>
So, now I only need to implement the ProcessRequest gateway:<br>
int myFilter::ProcessRequest ( vtkInformation * ipRequest,<br>
vtkInformationVector ** ipInputVector, vtkInformationVector *<br>
opOutputVector )<br>
{<br>
  if ( ipRequest && ipRequest -> Has (<br>
vtkDemandDrivenPipeline::REQUEST_DATA () ) )<br>
    if ( ipInputVector && opOutputVector ) opOutputVector =<br>
ipInputVector[0];<br>
   return Superclass::ProcessRequest ( ipRequest,<br>
ipInputVector,<br>
opOutputVector );<br>
}<br>
<br>
I believed that I would be the only steps to proceed to get an<br>
identity filter. When I use my identity filter in Paraview, I<br>
get<br>
errors like :<br>
ERROR: In<br>
<br>
<br>
<br>
</blockquote>
<br>
</blockquote>
<br>
</div></div></blockquote>
<br>
/.../ParaView-v4.3.1-source/VTK/Common/ExecutionModel/vtkDemandDrivenPipeline.cxx,<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
line 810<br>
vtkPVPostFilterExecutive : Input for connection index 0 on<br>
input port<br>
index 0 for algorithm vtkPVPostFilter(0x16d0ec0) is of type<br>
vtkDataObject, but a vtkPolyData is required.<br>
<br>
Some logic is still missing here : could somebody explain me<br>
what and why ?<br>
<br>
Thanks,<br>
<br>
Franck<br>
<br>
_______________________________________________<br></div></div>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a> [1]<span class=""><br>
<br>
Visit other Kitware open-source projects at<br>
</span><a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a> [2]<span class=""><br>
<br>
Search the list archives at:<br>
</span><a href="http://markmail.org/search/?q=Paraview-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=Paraview-developers</a> [3]<span class=""><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
</span><a href="http://public.kitware.com/mailman/listinfo/paraview-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
[4]<br>
</blockquote>
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a> [5]<span class=""><br>
<br>
Visit other Kitware open-source projects at<br>
</span><a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a> [6]<span class=""><br>
<br>
Search the list archives at:<br>
</span><a href="http://markmail.org/search/?q=Paraview-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=Paraview-developers</a> [7]<span class=""><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
</span><a href="http://public.kitware.com/mailman/listinfo/paraview-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
[8]<br>
</blockquote>
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a> [10]<span class=""><br>
<br>
Visit other Kitware open-source projects at<br>
</span><a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a> [11]<span class=""><br>
<br>
Search the list archives at:<br>
</span><a href="http://markmail.org/search/?q=Paraview-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=Paraview-developers</a> [12]<span class=""><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
</span><a href="http://public.kitware.com/mailman/listinfo/paraview-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
[13]<br>
</blockquote>
<br>
<br>
<br>
Links:<br>
------<span class=""><br>
[1] <a href="http://www.kitware.com" rel="noreferrer" target="_blank">http://www.kitware.com</a><br>
[2] <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
[3] <a href="http://markmail.org/search/?q=Paraview-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=Paraview-developers</a><br>
[4] <a href="http://public.kitware.com/mailman/listinfo/paraview-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
[5] <a href="http://www.kitware.com" rel="noreferrer" target="_blank">http://www.kitware.com</a><br>
[6] <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
[7] <a href="http://markmail.org/search/?q=Paraview-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=Paraview-developers</a><br>
[8] <a href="http://public.kitware.com/mailman/listinfo/paraview-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
[9] mailto:<a href="mailto:houssen@ipgp.fr" target="_blank">houssen@ipgp.fr</a><br></span>
[10] <a href="http://www.kitware.com" rel="noreferrer" target="_blank">http://www.kitware.com</a><br>
[11] <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
[12] <a href="http://markmail.org/search/?q=Paraview-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=Paraview-developers</a><br>
[13] <a href="http://public.kitware.com/mailman/listinfo/paraview-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
[14] <a href="http://www.vtk.org/doc/nightly/html/classvtkPassInputTypeAlgorithm.html" rel="noreferrer" target="_blank">http://www.vtk.org/doc/nightly/html/classvtkPassInputTypeAlgorithm.html</a><br>
[15] mailto:<a href="mailto:joachim.pouderoux@kitware.com" target="_blank">joachim.pouderoux@kitware.com</a><br>
</blockquote></blockquote><span class="">
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br></span>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=Paraview-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=Paraview-developers</a><span class=""><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
</span><a href="http://public.kitware.com/mailman/listinfo/paraview-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview-developers</a><br>
</blockquote></div><br></div>