Jim, Donny, Gobbi <div><br></div><div>This is nice! I think we can put this inside the geovis as vtkGeoClip or something along the lines? I will talk to Jeff about it. Would you be interested in making this addition? </div>
<div><br></div><div>Thanks, </div><div><br></div><div><br><div class="gmail_quote">On Sat, Nov 20, 2010 at 1:31 PM, Jim Peterson <span dir="ltr">&lt;<a href="mailto:jimcp@cox.net">jimcp@cox.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Donny, just to be sure we have a true normalized vector for the rest of the calcs, I think I would make the clop position an array, and then use vtkMath::Normalize(clipPos); to be sure we have a normal that has a length 1. soSo I think the normal calculation should probably be change from:<div class="im">
<br>
<br>
        double dx = earthcenter[0] - camerapos [0];<br>
       double dy = earthcenter[1] - camerapos [1];<br>
       double dz = earthcenter[2] - camerapos [2];        <br>
       double distance = sqrt(dx*dx + dy*dy + dz*dz);<br>
<br>
       double nx = -(dx/distance);<br>
       double ny = -(dy/distance);<br>
       double nz = -(dz/distance);        <br>
<br></div>
to something like this so that all of the point locations and vectors keep their parts together:<br>
<br>
        double dv[] = {0.,0.,0.,}<br>
        dv[0] = camerapos[0] - earthcenter[0]; // subtract earthcenter from camera pos<br>
       dv[1] = camerapos[1] - earthcenter[1];<br>
       dv[2] = camerapos[2] - earthcenter[2];        <br>
       double distance = sqrt(dv[0]*dv[0] + dv[1]*dv[1] + dv[2]*dv[2]);<br>
        <br>
        double nv[] = {0.,0.,0.,};<br>
       nv[0] = (dv[0]/distance); // no inversion with the above subtract<br>
       nv[1] = (dv[1]/distance);<br>
       nv[2] = (dv[2]/distance);        vtkMath::Normalize(nv);  // assert normalize to unit length       <br>
Also, if Altitude is greater than earth radius, we would just use the earth center as the clip plane location.<br>
<br>
Glad I could help.<br><font color="#888888">
Jim</font><div><div></div><div class="h5"><br>
<br>
Donny wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
THANKS JIM!!! That worked. I had to change one more bug, the element number<br>
of earthcenter was element 0 for each dimension. Here is what I have now:<br>
<br>
        double altitude = distance - vtkGeoMath::EarthRadiusMeters();<br>
        double clipdist = vtkGeoMath::EarthRadiusMeters() - altitude;<br>
        double pox = earthcenter[0]+(clipdist*nx);<br>
        double poy = earthcenter[1]+(clipdist*ny);<br>
        double poz = earthcenter[2]+(clipdist*nz);<br>
<br>
You are correct in that the dolly out zoom in affect was happening<br>
previously. It just appeared at first glance that it was inverse.<br>
<br>
It is amazing how precise the horizon clips now. It is right on the money.<br>
You made my day. I can&#39;t thank all of you enough for your help.<br>
<br>
Maybe this could be incorporated into vtk. I just don&#39;t know where.<br>
<br>
Thanks.<br>
<br>
-----Original Message-----<br>
From: Jim Peterson [mailto:<a href="mailto:jimcp@cox.net" target="_blank">jimcp@cox.net</a>] Sent: Saturday, November 20, 2010 11:18 AM<br>
To: Donny<br>
Cc: &#39;David Gobbi&#39;; &#39;Aashish Chaudhary&#39;; &#39;Sebastien Jourdain&#39;;<br>
<a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a><br>
Subject: Re: [vtkusers] How to use backface culling with polylines<br>
<br>
Sorry, I did say untested.... this<br>
<br>
        double pox = earthcenter[0]+(clipdist*nx);<br>
        double poy = earthcenter[0]+(altitude*ny);<br>
        double poz = earthcenter[0]+(altitude*nz);<br>
<br>
<br>
should have been:<br>
<br>
        double pox = earthcenter[0]+(clipdist*nx);<br>
        double poy = earthcenter[0]+(clipdist*ny);<br>
        double poz = earthcenter[0]+(clipdist*nz);<br>
<br>
I am not sure I understand going higher shortens the horizon. This is contrary to the real geometry like <a href="http://en.wikipedia.org/wiki/Horizon#Approximate_formulas" target="_blank">http://en.wikipedia.org/wiki/Horizon#Approximate_formulas</a> explains the calculations for the real world. It sounds like you want to change the camera viewangle in proportion to the altitude to &quot;zoom in&quot; in the target feature as you move away. I think I would call that a dolly-out-zoom-in video effect. Camera angle would not affect the visible horizon distance, just how much of it is in the field of view, in my opinion.<br>

<br>
Hope that helped,<br>
Jim<br>
<br>
Donny wrote:<br>
  <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Ok, I am close. The plane is acting just opposite of what I want though.<br>
    <br>
</blockquote>
The<br>
  <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
higher up on the horizon I go the less of the horizon I see, and the lower<br>
on the horizon I go the more I see (including past the horizon).<br>
<br>
Here is the code:<br>
<br>
        double dx = earthcenter[0] - camerapos [0];<br>
        double dy = earthcenter[1] - camerapos [1];<br>
        double dz = earthcenter[2] - camerapos [2];        <br>
        double distance = sqrt(dx*dx + dy*dy + dz*dz);<br>
<br>
        double nx = -(dx/distance);<br>
        double ny = -(dy/distance);<br>
        double nz = -(dz/distance);                        double altitude = distance - vtkGeoMath::EarthRadiusMeters();<br>
        double clipdist = vtkGeoMath::EarthRadiusMeters() - altitude;<br>
        double pox = earthcenter[0]+(clipdist*nx);<br>
        double poy = earthcenter[0]+(altitude*ny);<br>
        double poz = earthcenter[0]+(altitude*nz);<br>
                       m_horizonplane-&gt;SetOrigin(pox,poy,poz);<br>
        m_horizonplane-&gt;SetNormal(nx,ny,nz);<br>
<br>
Thanks.<br>
<br>
-----Original Message-----<br>
From: Jim Peterson [mailto:<a href="mailto:jimcp@cox.net" target="_blank">jimcp@cox.net</a>] Sent: Saturday, November 20, 2010 10:52 AM<br>
To: Donny<br>
Cc: &#39;David Gobbi&#39;; &#39;Aashish Chaudhary&#39;; &#39;Sebastien Jourdain&#39;;<br>
<a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a><br>
Subject: Re: [vtkusers] How to use backface culling with polylines<br>
<br>
Donny,<br>
assuming all your coordinates are in meters,<br>
What I was trying to say was project the altitude of the camera into the earth sphere to locate the clipping plane.<br>
so with the normal calculation you have :<br>
<br>
altitude = distance - vtkGeoMath::EarthRadiusMeters();<br>
clipdist = vtkGeoEarth::EarthRadiusMeters() - altitude;<br>
pox = earthcenter[0]+(clipdist*nx);<br>
poy = earthcenter[0]+(altitude*ny);<br>
poz = earthcenter[0]+(altitude*nz);<br>
<br>
Untested of course....<br>
<br>
Jim<br>
<br>
Donny wrote:<br>
      <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Does this look correct to calculate the horizon clipping plane?<br>
<br>
          double dx = earthcenter[0] - camerapos[0];<br>
        double dy = earthcenter[1] - camerapos[1];<br>
        double dz = earthcenter[2] - camerapos[2];        <br>
        double distance = sqrt(dx*dx + dy*dy + dz*dz);<br>
<br>
        double nx = -(dx/distance);<br>
        double ny = -(dy/distance);<br>
        double nz = -(dz/distance);<br>
<br>
        //(2 (abs(camera position - globeposition) minus globe radius))<br>
        double pox = 2.0 * (abs(camerapos [0] - earthcenter [0]) -<br>
vtkGeoMath::EarthRadiusMeters());<br>
<br>
        double poy = 2.0 * (abs(camerapos [1] - earthcenter [1]) -<br>
vtkGeoMath::EarthRadiusMeters());<br>
<br>
        double poz = 2.0 * (abs(camerapos [2] - earthcenter [2]) -<br>
vtkGeoMath::EarthRadiusMeters());<br>
<br>
        m_horizonplane-&gt;SetOrigin(pox,poy,poz);<br>
        m_horizonplane-&gt;SetNormal(nx,ny,nz);<br>
<br>
I am not getting the results I expected (the clipping plane is way off).<br>
<br>
-----Original Message-----<br>
From: Jim Peterson [mailto:<a href="mailto:jimcp@cox.net" target="_blank">jimcp@cox.net</a>] Sent: Saturday, November 20, 2010 9:03 AM<br>
To: Donny<br>
Cc: &#39;David Gobbi&#39;; &#39;Aashish Chaudhary&#39;; <a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a><br>
Subject: Re: [vtkusers] How to use backface culling with polylines<br>
<br>
Donny,<br>
<br>
I haven&#39;t really tried to get this thought into code, but in a soid geometry kind of sense, the horizon from a point of view is generally described by a clip somewhere between the observer and the center of the sphere, depending on the altitude. the direction of view should not be a factor, and how close the clip plane is to the center of the globe depends on the altitude. if the observer is at a height of 100&#39; the horizon (Excluding other terrain elevation) is 12.25 miles along the surface of the sphere. the clip throught the center of the sphere would make the horizon at about 6000 miles.<br>

<br>
I would expect the clip normal to be the normalized difference between the camera position and the globe position, and the approximate clip plane position to be the point that is (2 (abs(camera position - globe position) minus globe radius)) from the camera toward the globe position.<br>

<br>
If the globe happens to be at 0,0,0 that would simplify the calculation to just the globe radius and the camera position, but Copernicus changed all that....<br>
<br>
I haven&#39;t really studied the GEOVIS classes, but I would have thought visible horizon clipping would be one of the tools. Maybe this should evolve into a contribution.<br>
<br>
Sounds like an interesting project.<br>
<br>
Jim<br>
<br>
Donny wrote:<br>
            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello again. I decided to try David&#39;s approach with clipping planes.<br>
                  <br>
</blockquote>
Mainly<br>
            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
because I will have quite a few lines when including the county lines in<br>
addition to the state lines and I did not want to create that many<br>
triangles. I was afraid it would slow down the performance.<br>
<br>
I have centered the clipping plane at the center of the earth and the<br>
                  <br>
</blockquote>
normal<br>
            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
is always the view normal. This works great when the focus point is on<br>
              <br>
</blockquote></blockquote>
the<br>
      <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">
surface of the earth and I rotate around it. The problem occurs when I<br>
                  <br>
</blockquote>
pan.<br>
            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This moves the camera focal point and when it is no longer on the<br>
        <br>
</blockquote></blockquote></blockquote>
surface<br>
  <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">

                  <br>
</blockquote>
of<br>
            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
the earth the clipping plane will show some details on the other side of<br>
                  <br>
</blockquote>
the<br>
            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
horizon. How can I force a pan operation to pan the focal point on the<br>
surface of the earth? <br>
Here is the pan code, I am using .NET delegates because of the static<br>
function pointer limitation for AddObserver:<br>
<br>
void OnVtkMiddleMouseDown(unsigned long eventId, System::Object^<br>
                  <br>
</blockquote>
clientData)<br>
            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
        {                               this-&gt;m_interactorstyle-&gt;StartPan();<br>
        }<br>
<br>
void OnVtkMiddleMouseUp(unsigned long eventId, System::Object^<br>
              <br>
</blockquote></blockquote>
clientData)<br>
      <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">
        {                       this-&gt;m_interactorstyle-&gt;EndPan();<br>
        }<br>
<br>
void OnVtkMouseMove(unsigned long eventId, System::Object^ clientData)<br>
        {                               switch (this-&gt;m_interactorstyle-&gt;GetState())<br>
                        {<br>
                                case 1:  //VTKIS_ROTATE<br>
                                this-&gt;Rotate();<br>
                                        break;<br>
<br>
                                case 2:  //VTKIS_PAN<br>
                                        this-&gt;Pan();<br>
                                        break;<br>
<br>
                                case 4:  //VTKIS_DOLLY<br>
                                        this-&gt;Dolly();<br>
                                        break;                                                  }<br>
        }<br>
<br>
void Pan()<br>
        {<br>
              // Get the vector of motion                       <br>
<br>
              double focalPoint[3];<br>
              double v[3];<br>
              double p1[4];<br>
              double p2[4];<br>
<br>
<br>
              double* pos = m_camera-&gt;GetPosition();<br>
              double* fp = m_camera-&gt;GetFocalPoint();<br>
<br>
 vtkInteractorStyleUser::ComputeWorldToDisplay(m_backgroundrenderer,<br>
fp[0], fp[1], fp[2], focalPoint);<br>
<br>
 vtkInteractorStyleUser::ComputeDisplayToWorld(m_backgroundrenderer,<br>
m_iren-&gt;GetEventPosition()[0], m_iren-&gt;GetEventPosition()[1],<br>
focalPoint[2],  p1);<br>
<br>
 vtkInteractorStyleUser::ComputeDisplayToWorld(m_backgroundrenderer,<br>
m_iren-&gt;GetLastEventPosition()[0], m_iren-&gt;GetLastEventPosition()[1],<br>
focalPoint[2], p2);<br>
<br>
              double npos[3];<br>
              double nfp[3];<br>
<br>
              for (int i = 0; i &lt; 3; i++)<br>
                {<br>
                v[i] = p2[i] - p1[i];<br>
                npos[i] = pos[i] + v[i];<br>
                nfp[i] = fp[i] + v[i];<br>
                }                       <br>
<br>
              m_camera-&gt;SetPosition(npos);<br>
              m_camera-&gt;SetFocalPoint(nfp);<br>
               this-&gt;m_iren-&gt;Render();<br>
<br>
   }<br>
<br>
Thanks.<br>
<br>
-----Original Message-----<br>
From: David Gobbi [mailto:<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>] Sent: Thursday, November 18, 2010 9:07 PM<br>
To: Donny<br>
Cc: <a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a><br>
Subject: Re: [vtkusers] How to use backface culling with polylines<br>
<br>
You could also add a clipping plane to your vtk mapper that cuts the<br>
globe in half, back to front.  By adding this plane only to the mapper<br>
that renders the lines, you can remove any lines that are past the<br>
horizon.<br>
<br>
  David<br>
<br>
<br>
On Thu, Nov 18, 2010 at 7:13 PM, Jim Peterson &lt;<a href="mailto:jimcp@cox.net" target="_blank">jimcp@cox.net</a>&gt; wrote:<br>
                    <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Donny,<br>
I think I would run the state lines through a ribbon filter making them<br>
                            <br>
</blockquote>
into<br>
                    <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
a triangle strip of some width. the strip would have a backface.<br>
<br>
Jim<br>
<br>
Donny wrote:<br>
                            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks guys for the feedback. I have attached two images to visualize<br>
                                    <br>
</blockquote></blockquote>
what<br>
                    <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">
follows. I hope I can explain this clearly.<br>
<br>
I have three renderers that I am adding to the render window.<br>
<br>
The first is to contain a textured vtkGlobeSource actor and is called<br>
                              <br>
</blockquote></blockquote></blockquote>
the<br>
            <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">

background renderer.<br>
<br>
The second contains several vtkPolyData actors and are lines (State<br>
            <br>
</blockquote></blockquote></blockquote></blockquote></blockquote>
and<br>
  <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">
<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">
county boundaries, roads, rivers…), this is called the map renderer.<br>
<br>
The Third contains an actor visualizing a weather radar volume, this<br>
            <br>
</blockquote></blockquote></blockquote></blockquote></blockquote>
is<br>
  <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">
<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">
called the radar renderer.<br>
<br>
The background renderer is always set as layer 0 and so is always<br>
                                    <br>
</blockquote></blockquote>
rendered<br>
                    <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">
first.<br>
<br>
The map renderer and radar renderer will alternate between the 1^st<br>
            <br>
</blockquote></blockquote></blockquote></blockquote></blockquote>
and<br>
  <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">
<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">
2^nd layers depending on the view angle of the camera.<br>
<br>
If the camera is more than 45 degrees above the horizon then the radar<br>
renderer is layer 1 and the map renderer is layer 2 so that the user<br>
                      <br>
</blockquote></blockquote></blockquote></blockquote>
can<br>
      <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">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                                    <br>
</blockquote></blockquote>
see<br>
                    <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">
the features below the radar volume.<br>
<br>
If the camera is less than or equal to 45 degrees above the horizon<br>
                      <br>
</blockquote></blockquote></blockquote></blockquote>
then<br>
      <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">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
the map renderer is layer 1 and the radar renderer is layer 2 so that<br>
                              <br>
</blockquote></blockquote></blockquote>
the<br>
            <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">

radar volume is always in front of the map features.<br>
<br>
This works fine until I draw all state lines for the entire US.<br>
            <br>
</blockquote></blockquote></blockquote></blockquote></blockquote>
Because<br>
  <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">
<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">
the vtkGlobeSource simulates the curvature of the earth I see the<br>
                                    <br>
</blockquote></blockquote>
backside<br>
                    <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">
of the state lines where they are over the view horizon.<br>
<br>
Is there a way I can put the map features and radar volume on the same<br>
renderer and accomplish the same thing?<br>
<br>
Thanks.<br>
<br>
-----Original Message-----<br>
*From:* Aashish Chaudhary [mailto:<a href="mailto:aashish.chaudhary@kitware.com" target="_blank">aashish.chaudhary@kitware.com</a>]<br>
*Sent:* Thursday, November 18, 2010 8:37 AM<br>
*To:* David Gobbi<br>
*Cc:* <a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a>; Donny<br>
*Subject:* Re: [vtkusers] How to use backface culling with polylines<br>
<br>
Donny,<br>
<br>
Were you talking about hidden lines removal may be?<br>
<br>
Thanks,<br>
<br>
On Thu, Nov 18, 2010 at 9:03 AM, David Gobbi &lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a><br>
&lt;mailto:<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;&gt; wrote:<br>
<br>
Jerome is correct, OpenGL culls faces according to the polygon<br>
winding. So wireframe polygons can be culled, but polylines cannot,<br>
even if they have normals assigned to them. There are some details in<br>
the OpenGL FAQ:<br>
<a href="http://www.opengl.org/resources/faq/technical/clipping.htm" target="_blank">http://www.opengl.org/resources/faq/technical/clipping.htm</a><br>
<br>
David<br>
<br>
<br>
On Wed, Nov 17, 2010 at 11:47 PM, Jérôme &lt;<a href="mailto:jerome.velut@gmail.com" target="_blank">jerome.velut@gmail.com</a><br>
&lt;mailto:<a href="mailto:jerome.velut@gmail.com" target="_blank">jerome.velut@gmail.com</a>&gt;&gt; wrote:<br>
                                    <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Donny,<br>
<br>
My feeling is that backface culling should not work with polylines<br>
because they<br>
have actually no face.<br>
<br>
Jerome<br>
<br>
2010/11/18 Donny &lt;<a href="mailto:donnyz@charter.net" target="_blank">donnyz@charter.net</a> &lt;mailto:<a href="mailto:donnyz@charter.net" target="_blank">donnyz@charter.net</a>&gt;&gt;:<br>
                                            <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am drawing polylines using vtkPolyData and cannot get backface<br>
culling to<br>
work with them.<br>
<br>
<br>
<br>
I ran into this subject<br>
<br>
                <br>
</blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote>
<a href="http://public.kitware.com/pipermail/vtkusers/2003-January/065023.html" target="_blank">http://public.kitware.com/pipermail/vtkusers/2003-January/065023.html</a><br>
  <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">
<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">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                                                    <br>
</blockquote></blockquote></blockquote></blockquote>
,<br>
                    <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">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
but<br>
did not help.<br>
<br>
<br>
<br>
Any solutions?<br>
<br>
<br>
<br>
Donny Zimmerman<br>
<br>
<a href="mailto:donnyz@charter.net" target="_blank">donnyz@charter.net</a> &lt;mailto:<a href="mailto:donnyz@charter.net" target="_blank">donnyz@charter.net</a>&gt;<br>
<br>
308-227-1756<br>
                                                    <br>
</blockquote></blockquote>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a> &lt;<a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a>&gt;<br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at:<br>
<a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br>
<br>
<br>
<br>
--<br>
| Aashish Chaudhary<br>
| R&amp;D Engineer<br>
| Kitware Inc.<br>
| <a href="http://www.kitware.com" target="_blank">www.kitware.com</a> &lt;<a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a>&gt;<br>
<br>
<br>
                      <br>
</blockquote></blockquote></blockquote></blockquote>
------------------------------------------------------------------------<br>
      <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">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at:<br>
<a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br>
                                    <br>
</blockquote>
                            <br>
</blockquote>
                    <br>
</blockquote>
            <br>
</blockquote>
      <br>
</blockquote>
<br>
<br>
  <br>
</blockquote>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>| Aashish Chaudhary <br>| R&amp;D Engineer         <br>| Kitware Inc.            <br>| <a href="http://www.kitware.com">www.kitware.com</a>    <br>
</div>