<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi Robert!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">After a lot of hours staying up last night, this morning I found the solution.  It was surprisingly easy.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When I get back to work on Monday I will post the code that hopefully will help other people in the future.  It didn’t have to be as complicated as we were going from before.  Especially not with VS/PS 3.0+.  Fixed-function pipeline is
 all but obsolete these days.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">-M<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>From:</b> osg-users [mailto:osg-users-bounces@lists.openscenegraph.org]
<b>On Behalf Of </b>Robert Osfield<br>
<b>Sent:</b> Saturday, April 14, 2018 2:15 AM<br>
<b>To:</b> OpenSceneGraph Users <osg-users@lists.openscenegraph.org><br>
<b>Subject:</b> EXTERNAL: Re: [osg-users] Writing texture coordinates on a mesh without going through traversal code?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">HI Marlin,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I would hope that you can implement what you need without getting your hands dirty with internals of the OSG. It sound like you want something similar to osg::ClipPlaneNode.  Have a look at osgclip to see how it works.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Robert.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 13 April 2018 at 22:30, Rowley, Marlin R <<a href="mailto:marlin.r.rowley@lmco.com" target="_blank">marlin.r.rowley@lmco.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hello!<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I’m trying to generate my own texture coordinates (on-the-fly) by having a callback that runs when a piece of geometry intersects my object.  So for example, I create a realworld
 frustum and when my frustum has a shader that’s bound to some arbitrary object in the world.  When my frustum intersects this object, I would like to generate texture coordinates on this object based on how far or near I am to the frustum’s near/far planes
 (it’s perspective frustum).  We had the following code for doing this:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#569CD6">void</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#4EC9B0">ViewshedOSG</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">::</span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">updateTextureCoordinates</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">()</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">{</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#57A64A">// write the plane equation for all 3 planes</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#57A64A">// that make up the camera view frustum.  We can</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#57A64A">// then access this from the shader to test whether</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#57A64A">// we are in the frustum's volume or not.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">    </span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">osg</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">::</span><span style="font-size:14.5pt;font-family:Consolas;color:#4EC9B0">Matrixd</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">projection</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">=</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#DADADA">mCamera</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">-></span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">getViewMatrix</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">();</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">      </span>
<span style="font-size:14.5pt;font-family:Consolas;color:#DADADA">mTexGen</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">-></span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">setPlanesFromMatrix</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">(</span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">projection</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">*</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">      </span>
<span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">osg</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">::</span><span style="font-size:14.5pt;font-family:Consolas;color:#4EC9B0">Matrix</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">::</span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">translate</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">(</span><span style="font-size:14.5pt;font-family:Consolas;color:#B5CEA8">1.0</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">,</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B5CEA8">1.0</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">,</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B5CEA8">1.0</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">)</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">*</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">      </span>
<span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">osg</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">::</span><span style="font-size:14.5pt;font-family:Consolas;color:#4EC9B0">Matrix</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">::</span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">scale</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">(</span><span style="font-size:14.5pt;font-family:Consolas;color:#B5CEA8">0.5f</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">,</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B5CEA8">0.5f</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">,</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B5CEA8">0.5f</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">));</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#57A64A">// Bring our models viewspace coordinates back</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#57A64A">// into model space coordinate of the camera frustum</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">osg</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">::</span><span style="font-size:14.5pt;font-family:Consolas;color:#4EC9B0">RefMatrix</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">*</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">refMatrix</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">=</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#569CD6">new</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">osg</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">::</span><span style="font-size:14.5pt;font-family:Consolas;color:#4EC9B0">RefMatrix</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">           </span>
<span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">(</span><span style="font-size:14.5pt;font-family:Consolas;color:#DADADA">mCamera</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">-></span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">getInverseViewMatrix</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">()</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">*</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">*</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">_cv</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">-></span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">getModelViewMatrix</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">());</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#57A64A">// Copy the texture generator to the mesh where you </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#57A64A">// can index it's coordinates from the ViewshedID</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">      _cv</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">-></span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">getRenderStage</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">()-></span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">getPositionalStateContainer</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">()-></span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">            addPositionedTextureAttribute</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:gainsboro">            </span>
<span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">(</span><span style="font-size:14.5pt;font-family:Consolas;color:#DADADA">mId</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">,</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">refMatrix</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">,</span><span style="font-size:14.5pt;font-family:Consolas;color:gainsboro"> </span><span style="font-size:14.5pt;font-family:Consolas;color:#DADADA">mTexGen</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">.</span><span style="font-size:14.5pt;font-family:Consolas;color:#C8C8C8">get</span><span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">());</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#1E1E1E">
<span style="font-size:14.5pt;font-family:Consolas;color:#B4B4B4">}</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">However, this code was based on a cull visitor calling this function from a callback.  I have my own callback and it’s not based on a visitor. Is there anyway to get the objects
 modelview matrix() without calling it from a cull visitor?  Also only need to write the ‘addPositionedTextureAttribute’ on the geometry in order to access the coordinates through a shader.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I’m trying to keep this simple.  Am I in the right direction?<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks,<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">-M<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D">----------------------------------------</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D">Marlin Rowley</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D">Software Engineer, Staff</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><img border="0" width="156" height="40" style="width:1.625in;height:.4166in" id="m_-5780567004531616745Picture_x0020_1" src="cid:image001.jpg@01D3D3E3.96CBC550" alt="cid:image002.jpg@01D39374.DEC5A2E0"><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><i><span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:#1F497D">Missiles and Fire Control</span></i><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D">972-603-1931 (office)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D">214-926-0622 (mobile)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Arial",sans-serif"><a href="mailto:marlin.r.rowley@lmco.com" target="_blank"><span style="color:#0563C1">marlin.r.rowley@lmco.com</span></a></span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>