<div dir="ltr">Hi Weiguang,<div><br></div><div>There aren't any filters for combining vtkImageStencilData (there should be!), so instead you will need to use two vtkImageStencil filters in series: one for the first vtkImplicitFunctionToImageStencil output, and then another for the second.</div><div><br></div><div> - David</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 29, 2014 at 10:09 AM, Weiguang Guan <span dir="ltr"><<a href="mailto:guanw@rhpcs.mcmaster.ca" target="_blank">guanw@rhpcs.mcmaster.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>Hi David,<br>
<br>
How to combine the outputs from two
vtkImplicitFunctionToImageStencil instances as I need to use two
spheres to define a shell? Thanks.<span class=""><br>
<br>
Best,<br>
Weiguang<br>
<br>
On 28/10/2014 5:20 PM, David Gobbi wrote:<br>
</span></div><div><div class="h5">
<blockquote type="cite">
<div dir="ltr">Hi Weiguang,
<div><br>
</div>
<div>You definitely want to avoid using vtkClipVolume before
volume rendering, because it produces vtkUnstructuredGrid data
instead of image data.</div>
<div><br>
</div>
<div>If you need a shell, you can use vtkImageGaussianSource to
create an image of a Gaussian, and then threshold it with
lower and upper thresholds to create a shell. A Gaussian has
radial symmetry, so thresholding will create a binary image of
a spherical shell. You can then multiply this shell by your
image.</div>
<div><br>
</div>
<div>Or, instead of using vtkClipVolume, you can use
vtkImplicitFunctionToImageStencil with vtkImageStencil. The
output will be a vtkImageData. Or, for greater efficiency,
use vtkROIStencilSource to create a spherical (ellipsoidal)
stencil for vtkImageStencil.</div>
<div><br>
</div>
<div>Or, possibly the easiest "quick fix" would be to convert
the vtkUnstructuredGrid that you already have into a
vtkImageData by using vtkProbeFilter. The vtkProbeFilter is a
generic filter for copying (or interpolating) scalar data from
one kind of data set onto another kind of data set.</div>
<div><br>
</div>
<div> - David</div>
<div><br>
</div>
<div><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, Oct 28, 2014 at 2:23 PM,
Weiguang Guan <span dir="ltr"><<a href="mailto:guanw@rhpcs.mcmaster.ca" target="_blank">guanw@rhpcs.mcmaster.ca</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi VTK
users,<br>
<br>
I want to volume render (using 3D texture mapper) a
shell with specified thickness. Previously, I used
vtkClipVolume twice, one clipped away the inner portion
of a regular volume data, the other clipped away outer
portion. The only problem is slow rendering speed
because the resultant data is no longer a regular volume
data.<br>
<br>
Can anyone suggest a better solution? Would it be faster
if I used several spheres with texture mapped on them
and alpha-blending? Thanks.<br>
<br>
Best,<br>
Weiguang<br>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br></div>