Paul Melis wrote:
GMD GammerMaxyandex.ru wrote:
File (LineSegmentIntersector.cpp) which I recevie works perfectly.
Thanks for it. Will this changes be included in rc2?
I don't know, we'll have to see how Robert wants to fix the problem.
Just to keep a note around, another way to fix this would be to enlarge
the bounding box of a group of triangles (drawable) by an epsilon-amount
in all directions. This way an intersection with a triangle is
guaranteed to lie within the ray-bounding box intersection interval and
never on one of its endpoints.
Paul
Paul
31.07.08, 16:23, "Paul Melis" <[EMAIL PROTECTED]>:
Hi,
There is definitely something fishy going on. With the attached
extremely simple testcase (only 2 triangles, without any transform)
and the normal osgpick example I indeed get no intersections at
locations where there definitely should be some.
I think I've tracked this down to the fact that the triangles are
aligned with the coordinate system axes, so the Y-planes defined by
the bounding box are the same as the triangle planes. This results
in intersection noise as, depending on numerical errors, the
intersection found might be just outside the ray interval. Your
museum scene's walls have the same problem, which is why you're
getting those missing intersections.
Attached is an updated src/osgUtil/LineSegmentIntersector.cpp, which
solves this for now by allowing the found intersection point to be a
tiny bit beyond the end point of the segment. It also replaces the
triangle intersection code with something that I can actually
understand as the currect version is completely untransparent to me
(and a surprising large amount of code for something so basic). I
don't consider this a replacement as of yet as there are some things
not completely equivalent to the current code (the r1, r2, r3 output
parameters are not set). But maybe you find it useful for now.
Paul
GMD GammerMaxyandex.ru wrote:
I decided my issue. I removed the code from the file. (as was the
case previously in 2.5.2). The problem disappeared! Make it please
in the next version.
LineSegmentIntersector.cpp
removed the code from the file: line 290 ..
double epsilon = 1e-8;
if ((s-e).length()<epsilon)
{ osg::Vec3d delta_e_end = _end - e;
osg::Vec3d delta_s_start = _start - s;
double scale = 0.001;
s += (delta_s_start * scale);
e += (delta_e_end * scale);
}
code version 2.5.2:
s = _start;
e = _end;
The problem disappeared! Make it please in the next version.
28.07.08, 22:44, "GMD GammerMaxyandex.ru" <[EMAIL PROTECTED]>:
> Here is the small example, where described problem appeares.
Example is modified example of osgpick (chenged code which returns
name of object and osg scene). To see this problem you must go in
the deep of room (way is showen in 00.jpeg). Then you need make
several clicks in different positions (movements bitween positions
must be small) and you will see that cursor often falls throught
the object over which cursor is (possible positions is showen on
11.jpg). There is two archives in attachement (with textures and
without them). Code is in osgpick.zip file which taken from example
osgpick. I hope this is enough to illustrate described problem. And
I think it will be not good if this error appeares in this release
(2.6.0).
> Thanks, Max.
> files:
> (download: enter number, click green button)
> http://narod.ru/disk/1711280000/osgpick.zip.html
> http://narod.ru/disk/1711073000/00.JPG.html
> http://narod.ru/disk/1711279000/11.JPG.html
> http://narod.ru/disk/1712663000/museum_with_textures.zip.html
> Thanks, Max.
> 28.07.08, 10:47, "GMD GammerMaxyandex.ru" <[EMAIL PROTECTED]>:
> > Ok, I'll make small example and show where problem occures.
I'll try do this today.
> > 28.07.08, 00:33, "sherman wilcox" <[EMAIL PROTECTED]>:
> > > Can you make a small and simple prototype that *reliably*
reproduces
> > > the problem? You have a better chance of getting help
that way.
> > > On Sun, Jul 27, 2008 at 2:50 AM, GMD GammerMaxyandex.ru
> > > <[EMAIL PROTECTED]> wrote:
> > > > Some offers of OSG 2.6.0( problems with new version).
> > > > Let's wait with OSG 2.6.0 release. I asked this
because I found a problem with osgUtil::LineSegmentIntersector
function.
> > > > In OSG v 2.5.5 version of OSG function
viewer->computeIntersections(x,y, hlist) works very strange - when
cursor movements over object is short it(cursor) falls throught the
object and function returns name of object which is behind
current(object over which cursor is). In earlyer(less 2.5.2)
versions of OSG this error has never appeared. How can I solve this
problem in this(2.5.5) version of OSG?
> > > > It is necessary to solve the problem until OSG 2.6.0
release.
> > > > Thanks in advance. Best regards, Max.
> > > > _______________________________________________
> > > > osg-users mailing list
> > > > [email protected]
> > > >
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > >
> > > _______________________________________________
> > > osg-users mailing list
> > > [email protected]
> > >
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org