Hi,<br>I have an issue about actors transparency. I try to display in a 3D scene, some volumes ( vtkPolyData are the source) intersected by a plane which has an image texture. <br>I manage to display correctly all my actors, but when i set an actor opacity to a value different to 1, if this actor is located beetween the camera and the "image plane", it diseapears. <br>
<br>Here is my code to built my "image plane":<br><br> vtkActor sliceActor = new vtkActor();<br> // ImageSlice full path<br> string imageFullPath = System.IO.Path.GetFullPath(xmlBinding.GetSlice(XmlSlice.SliceRef).pictureRelativePathWithOverlays); <br>
<br> // Read the file<br> vtkPNGReader imageReader = new vtkPNGReader();<br> if(System.IO.File.Exists(imageFullPath))<br> {<br> imageReader.SetFileName(imageFullPath);<br>
imageReader.Update();<br><br> vtkPlaneSource plane = vtkPlaneSource.New();<br> plane.SetOrigin(0, 0, 0);<br><br> if (XmlSlice.SliceRef != 0)<br> {<br> plane.SetPoint1(511 * THOutline.PIXELSIZE, 0, 0);<br>
plane.SetPoint2(0, 0, -674 * THOutline.PIXELSIZE);<br> plane.SetXResolution(1);<br> plane.SetYResolution(1);<br><br> }<br> else<br> {<br>
plane.SetPoint1(0, 511 * THOutline.PIXELSIZE, 0);<br> plane.SetPoint2(0, 0, -674 * THOutline.PIXELSIZE);<br> plane.SetXResolution(1);<br> plane.SetYResolution(1);<br>
}<br> plane.SetCenter(XmlSlice.SlicePos.Xum, XmlSlice.SlicePos.Yum, XmlSlice.SlicePos.Zum + (674 * THOutline.PIXELSIZE / 2 - this.GetFocalPositionImageTopUm()));<br><br> vtkPolyDataMapper sliceMapper = vtkPolyDataMapper.New();<br>
sliceMapper.SetInput(plane.GetOutput());<br><br><br> <br> sliceActor.SetMapper(sliceMapper);<br><br> vtkTexture sliceTexture = vtkTexture.New();<br> sliceTexture.SetInput(imageReader.GetOutput());<br>
sliceTexture.InterpolateOn();<br> sliceTexture.SetQualityTo32Bit();<br><br> sliceActor.SetTexture(sliceTexture);<br><br> }<br> return sliceActor;<br>
<br>So the image is correctly display, but if i had an a other actor as in this schema (top view):<br><br> _________ : image slice actor<br> <br>
00000000000 : "volume actor"<br><br> <br> -<br> | | : camera<br>
<br><br> if volume actor opacity = 1, all work well.<br>if volume actor opacity != 1 => <br><br> _________ : image slice actor<br><br><br clear="all"> 0 00 : "volume actor"<br>
<br> <br> -<br> | | : camera<br><br><br>I make some researches on web, and i found (maybe) a solution : using "vtkDephtSortPolyData but I am not sure to know how it works ( and maybe it is not the solution) .<br>
<br>So i ask your help.<br><br>Best Regards,<br>-- <br>Bertrand de Boisdeffre<br>Etudiant 2A SICOM Phelma Grenoble-INP<br><br>