<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
David <br>
<br>
A couple of days ago I checked in a BSP tree locator which was written
originally for fast ray/cell intersections within VTK. (I used it
coincidentally with Lidar data many years ago, except that we were
given lidar data of buildings and trees which we used to reconstruct 3D
models of towns for radio propagation analysis). Anyway, the BSP tree
may give you a significant speed up over the Oct tree locator. If you
try it, please let me know if it does make a difference - and also if
you get any discrepancies. I made some optimization tweaks a while back
which may have introduced errors under certain conditions and I wrote
the original code so long ago, I forgot some of the secret twiddle
factors so it would be good to test it on a hard problem which might
expose any bugs.<br>
<br>
JB<br>
<blockquote
 cite="mid:c19fcadc0908100806t3c1a797bj5f43728bfe445ada@mail.gmail.com"
 type="cite">Dave,<br>
  <br>
My implementation is simply a collection of ray/mesh intersections.
There is no attempt at modeling the waveform of the return that the
hardware would see - the output is simply a 3d coordinate along each
ray. The idea is not to simulate the scanner, but rather treat is a
black box and get the point cloud that would be at the output of the
real scanning process. To simulate the absorption, scattering, etc you
would have to have a very detailed model with these parameters
available at each point - where I just work with simple points and
triangles.<br>
  <br>
I'm still looking into the VTK filter style implementation that Pat
recommended, when it gets to a reasonable state (which shouldn't be too
long, as it already uses mostly VTK classes) I'll post it so you can
try it out.<br>
  <br clear="all">
Thanks,<br>
  <br>
David<br>
  <br>
  <br>
  <div class="gmail_quote">On Sun, Aug 9, 2009 at 5:09 PM, <span
 dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:David.Pont@scionresearch.com" target="_blank">David.Pont@scionresearch.com</a>&gt;</span>
wrote:<br>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div>
    <p>Hi David,<br>
Our group is just starting to get into lidar scanning of forests so
your proposed contribution does sound very interesting to us. Just a
few days back we were discussing the idea of simulating a lidar scan of
a detailed polygonal model of a single tree. This idea is to understand
from first principles what lidar returns from such a complex target
look like, and in a controlled environment where we could play around
with various parameters and see what the effect on return data is. For
that exercise we were thinking of simulating just the direct 'first
order' reflections. But longer term we are very interested in full
waveform lidar data. Would your implementation allow simulation of
this? I'm guessing not as this would require complex and slow
calculations of secondary stuff like transmission, absorbtion,
re-emission and scattering.<br>
Having a lidar simulator in Paraview would make things very convenient
for us, but if there is no other support for this we may be keen to
talk to you about what you have implemented in C++. <br>
Actually our first problem is to get / create detailed 3D polygonal
models of trees - right down to the individual leaves - gulp - this
could keep us busy for a while yet.<br>
    <br>
regards (or should that be "many happy returns"), Dave Pont<br>
    <br>
    <img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.2&amp;disp=emb&amp;realattid=0.1&amp;zw"
 alt="Inactive hide details for David Doria ---08/08/2009 06:51:47 a.m.---On Thu, Jul 30, 2009 at 12:21 PM, David Doria &lt;"
 border="0" height="16" width="16"><font color="#424282">David Doria
---08/08/2009 06:51:47 a.m.---On Thu, Jul 30, 2009 at 12:21 PM, David
Doria &lt;</font><br>
    <br>
    </p>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tbody>
        <tr valign="top">
          <td width="1%"><img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.1&amp;disp=emb&amp;realattid=0.2&amp;zw"
 alt="" border="0" height="1" width="96"><br>
          <font color="#5f5f5f" size="2">From:</font></td>
          <td><br>
          </td>
          <td width="100%"><img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.1&amp;disp=emb&amp;realattid=0.2&amp;zw"
 alt="" border="0" height="1" width="1"><br>
          <font size="2">David Doria &lt;<a moz-do-not-send="true"
 href="mailto:daviddoria%2Bvtk@gmail.com" target="_blank">daviddoria+vtk@gmail.com</a>&gt;</font></td>
        </tr>
        <tr valign="top">
          <td width="1%"><img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.1&amp;disp=emb&amp;realattid=0.2&amp;zw"
 alt="" border="0" height="1" width="96"><br>
          <font color="#5f5f5f" size="2">To:</font></td>
          <td width="100%"><img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.1&amp;disp=emb&amp;realattid=0.2&amp;zw"
 alt="" border="0" height="1" width="1"><br>
          <font size="2">ParaView &lt;<a moz-do-not-send="true"
 href="mailto:paraview@paraview.org" target="_blank">paraview@paraview.org</a>&gt;,
          <a moz-do-not-send="true" href="mailto:vtkusers@vtk.org"
 target="_blank">vtkusers@vtk.org</a></font></td>
        </tr>
        <tr valign="top">
          <td width="1%"><img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.1&amp;disp=emb&amp;realattid=0.2&amp;zw"
 alt="" border="0" height="1" width="96"><br>
          <font color="#5f5f5f" size="2">Date:</font></td>
          <td width="100%"><img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.1&amp;disp=emb&amp;realattid=0.2&amp;zw"
 alt="" border="0" height="1" width="1"><br>
          <font size="2">08/08/2009 06:51 a.m.</font></td>
        </tr>
        <tr valign="top">
          <td width="1%"><img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.1&amp;disp=emb&amp;realattid=0.2&amp;zw"
 alt="" border="0" height="1" width="96"><br>
          <font color="#5f5f5f" size="2">Subject:</font></td>
          <td width="100%"><img moz-do-not-send="true"
 src="?ui=2&amp;ik=93801aabdc&amp;view=att&amp;th=12304ce87882bd30&amp;attid=0.1&amp;disp=emb&amp;realattid=0.2&amp;zw"
 alt="" border="0" height="1" width="1"><br>
          <font size="2">Re: [vtkusers] Adding a synthetic LiDAR
scanner to VTK/Paraview</font></td>
        </tr>
      </tbody>
    </table>
    <hr style="color: rgb(128, 145, 165);" align="left" noshade="noshade"
 size="2" width="100%">
    <div>
    <div><br>
    <br>
    <br>
    <br>
    <font size="4">On Thu, Jul 30, 2009 at 12:21 PM, David Doria &lt;</font><a
 moz-do-not-send="true" href="mailto:daviddoria%2Bvtk@gmail.com"
 target="_blank"><u><font color="#0000ff" size="4">daviddoria+vtk@gmail.com</font></u></a><font
 size="4">&gt; wrote:</font>
    <ul>
      <font size="4">I have written a synthetic LiDAR scanner in c++
using VTK and VXL. That is, rather than setting up a collection of
objects in real life and actually sending lasers into the scene, one
can simply create a scene out of 3d models and "scan" it by casting
rays at the models. This seems like something that could be a huge help
to any researchers that work with 3D model/surface/point data and LiDAR
data. I'm sure many researchers have their own implementations - after
all it is a very straightforward process (simply a bunch of ray
triangle intersections - which I have sped up using VTK's octree) but I
think it would be very useful to someone starting out in the field and
to attempt to unify some datasets. I've used it to produce data sets
for which a ground truth is known in order to ensure algorithms are
behaving properly before moving to "real" LiDAR scans. Also, noise can
be added to the points to attempt to simulate a real LiDAR scan for
researchers who do not have access to the very expensive equipment
required to obtain real scans.<br>
      <br>
The inputs are:<br>
      <br>
Scanner position (3D coordinate)<br>
Min/Max phi angle (how far "up and down" the scanner should scan)<br>
Min/Max theta angle (how far "left and right" the scanner should scan)<br>
Scanner "forward" (the phi=0, theta=0 direction)<br>
Angular sample spacing or number of points to acquire in the theta and
phi directions (so the "grid" is a total of (num_theta x num_phi)
points)<br>
      <br>
The outputs are:<br>
A .ptx file that maintains implicitly the structure of the scan (points
are ordered as they were taken in "strips"). This is the output given
by a real Leica scanner.<br>
A .vtp file that is simply an unorganized point cloud of the scan
returns.<br>
      <br>
It seems like this could be a neat little thing to add to paraview -
just a couple of text boxes and sliders to set the parameters, load the
scene you want to scan using existing paraview I/O, visualize the scan
frustrum using paraview line sources, and then click "Scan!" to create
your ptx and/or vtp.<br>
      <br>
Can I get some feedback on if this is an acceptable extension to
vtk/paraview capabilities?<br>
      <br>
Thanks,</font><font color="#888888" size="4"><br>
      <br>
David</font>
    </ul>
    </div>
    </div>
    <font size="4">
    <div>
    <div><br>
I didn't get any responses from this - would anyone mind responding
(negative responses are just as helpful as positive ones :) ) so I can
put this to rest or move forward, which ever the community vote turns
out :).<br>
    <br>
Thanks,<br>
    <br>
    </div>
    </div>
David</font><tt>_______________________________________________<br>
Powered by </tt><tt><a moz-do-not-send="true"
 href="http://www.kitware.com" target="_blank">www.kitware.com</a></tt>
    <div><tt><br>
    <br>
Visit other Kitware open-source projects at </tt><tt><a
 moz-do-not-send="true"
 href="http://www.kitware.com/opensource/opensource.html"
 target="_blank">http://www.kitware.com/opensource/opensource.html</a></tt></div>
    <tt><br>
    <br>
Please keep messages on-topic and check the VTK FAQ at: </tt><tt><a
 moz-do-not-send="true" href="http://www.vtk.org/Wiki/VTK_FAQ"
 target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a></tt>
    <div><tt><br>
    <br>
Follow this link to subscribe/unsubscribe:<br>
    </tt></div>
    <tt><a moz-do-not-send="true"
 href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a></tt><tt><br>
    </tt><br>
    <br>
    </div>
  </blockquote>
  </div>
  <br>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
Powered by <a class="moz-txt-link-abbreviated" href="http://www.kitware.com">www.kitware.com</a>

Visit other Kitware open-source projects at <a class="moz-txt-link-freetext" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>

Please keep messages on-topic and check the ParaView Wiki at: <a class="moz-txt-link-freetext" href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a>

Follow this link to subscribe/unsubscribe:
<a class="moz-txt-link-freetext" href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a>
  </pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="78">-- 
John Biddiscombe,                            email:biddisco @ cscs.ch
<a class="moz-txt-link-freetext" href="http://www.cscs.ch/">http://www.cscs.ch/</a>
CSCS, Swiss National Supercomputing Centre  | Tel:  +41 (91) 610.82.07
Via Cantonale, 6928 Manno, Switzerland      | Fax:  +41 (91) 610.82.82</pre>
</body>
</html>