<div dir="ltr"><div>Hello Claudio / Julien,</div><div><br></div><div>This is still an unsolved problem for me, it normally occurs when I integrate purchased models</div><div>in Remo3d (osg-based tool). Last time we discussed this I used osg optimizer as a workaround</div><div>to rescale the normals but I would be really happy for a permanent fix.</div><div><br></div><div>I am not in a position to test Juliens code at the moment, but if anyone does I am interested.<br></div><div><br></div><div>Cheers,</div><div>Per<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 9 Feb 2019 at 06:37, Julien Valentin <<a href="mailto:julienvalentin51@gmail.com">julienvalentin51@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">In fact perhaps there's something wrong with the code:<br>
According the comment, and considering M=transpose(M)*invert(M) is orthogonal<br>
shoudn't it be something like:<br>
            (*itr) = osg::Matrix::transform3x3(inverse(_im),(*itr));<br>
or<br>
         (*itr) = osg::Matrix::transform3x3((*itr),transpose(inverse(_im)));<br>
<br>
Perahps it would be wiser to use a simple premult for normals <br>
         (*itr) = osg::Matrix::transform3x3((*itr),im));<br>
<br>
try these solution with your model and give feedback<br>
<br>
<br>
<br>
mp3butcher wrote:<br>
> Hi,<br>
> Normals transformation happen in osgUtil/TransformAttributeFunctor.cpp l.44 <br>
> <br>
> Code:<br>
>         for (osg::Vec3d* itr=begin;itr<end;++itr)<br>
>         {<br>
>             // note post mult by inverse for normals.<br>
>             (*itr) = osg::Matrix::transform3x3(_im,(*itr));<br>
>             (*itr).normalize();<br>
>         }<br>
> <br>
> <br>
> All seams right ..<br>
> perhaps forcing orthogonality of the 3x3 with pseudo inverse and remove normalization could give better result...Don't know<br>
> Cheers<br>
> <br>
> Bonghi wrote:<br>
> > Hi Per,<br>
> > <br>
> > I'm finding the same problem as I'm trying to build a viewer that integrates a variety of models coming in different units (eg. mm vs. m).<br>
> > <br>
> > Have you had any further look at the code to include a fix?<br>
> > <br>
> > My thinking is that normals should only be rotated by the transform matrix, but I've not invested time yet to understand where this should happen in the code. <br>
> > <br>
> > Thanks,<br>
> > Claudio<br>
> [/code]<br>
<br>
<br>
------------------------<br>
Twirling twirling twirling toward freedom<br>
<br>
------------------<br>
Read this topic online here:<br>
<a href="http://forum.openscenegraph.org/viewtopic.php?p=75611#75611" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=75611#75611</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div>