<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: MNMesh ComputeRenderNormal gives Access Violation in 3ds Max Programming Forum</title>
    <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12961955#M647</link>
    <description>&lt;P&gt;&lt;EM&gt;The only problem is that there is no official way to force them to be updated.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;forcing the update will cost the same time as computing them yourself, you can maintain your own buffer if need be and force your own update on what ever criteria that suits it's how most modifiers handle this kind of stuff using the NotifyInputChanged function&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1794911"&gt;@klvnk&lt;/a&gt;&amp;nbsp;-&amp;nbsp;this post has been edited due to &lt;A href="https://forums.autodesk.com/t5/forum-user-guides/community-rules-and-etiquette/td-p/9581007" target="_blank"&gt;Community Rules &amp;amp; Etiquette violation&lt;/A&gt;.&lt;/EM&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 16 Aug 2024 15:26:25 GMT</pubDate>
    <dc:creator>klvnk</dc:creator>
    <dc:date>2024-08-16T15:26:25Z</dc:date>
    <item>
      <title>MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12933041#M631</link>
      <description>&lt;P&gt;Hi,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; I having trouble computing render normals on an MNMesh.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;For example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; If I make a 1x1 plane (i.e. 1 face, 2 tris), convert it to an Editable Poly, and run the following,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; the DebugPrint looks ok to me (below), but I get an access violation,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; (and other, more complex polys are similar).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Strangely, if I zoom the viewport in and out before running the script, no violation...&lt;/P&gt;&lt;P&gt;Many thanks in advance, -Duncan.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;def_visible_primitive(ComputeRenderNormal, "ComputeRenderNormal");&lt;BR /&gt;...&lt;/P&gt;&lt;P&gt;INode* node = static_cast&amp;lt;MAXNode*&amp;gt;(arg_list[0])-&amp;gt;to_node();&lt;BR /&gt;const ObjectState* object_state = &amp;amp;node-&amp;gt;EvalWorldState(MAXScript_time());&lt;BR /&gt;Object* object = object_state-&amp;gt;obj;&lt;BR /&gt;PolyObject* poly_object = dynamic_cast&amp;lt;PolyObject*&amp;gt;(object);&lt;BR /&gt;MNMesh* mnmesh = &amp;amp;poly_object-&amp;gt;GetMesh();&lt;BR /&gt;mnmesh-&amp;gt;CheckAllData();&lt;BR /&gt;mnmesh-&amp;gt;MNDebugPrint();&lt;BR /&gt;mnmesh-&amp;gt;ComputeRenderNormal(0,0); &amp;lt;-- Access Violation &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;MNMesh Debug Output: 4 verts, 4 edges, 1 faces&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68656ms : Vertex 0:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68657ms : ( -23.065, -21.422, 0.000)&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68657ms : Edges: (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68657ms : 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68657ms : 3&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68657ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68657ms : Faces: (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68657ms : 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68657ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms : Vertex 1:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms : ( 23.065, -21.422, 0.000)&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms : Edges: (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms : 2&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms : 3&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms : Faces: (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68658ms : 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : Vertex 2:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : ( -23.065, 21.422, 0.000)&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : Edges: (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : 1&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : Faces: (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68659ms : 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : Vertex 3:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : ( 23.065, 21.422, 0.000)&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : Edges: (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : 1&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : 2&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : Faces: (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68660ms : 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms : Edge 0:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms : verts (2 0), face 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms : Edge 1:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms : verts (3 2), face 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms : Edge 2:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68661ms : verts (1 3), face 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : Edge 3:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : verts (0 1), face 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : Face 0:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : verts (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : 2&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : 1&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : 3&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68662ms : ) edges (&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : 0v&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : 3v&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : 2v&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : 1v&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : )&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : Map 1:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : MNMap Debug Output: 4 verts, 1 faces&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : UVVert 0: 0.000000, 0.000000, 0.000000&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : UVVert 1: 1.000000, 0.000000, 0.000000&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : UVVert 2: 0.000000, 1.000000, 0.000000&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : UVVert 3: 1.000000, 1.000000, 0.000000&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68663ms : Face 0:&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68664ms : 2&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68664ms : 0&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68664ms : 1&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68664ms : 3&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68664ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68664ms :&lt;BR /&gt;2024/08/01 10:26:20 [19564] : 68664ms :&lt;BR /&gt;Exception thrown at 0x00007FFCE5DD64DB (MNMath.dll) in 3dsmax.exe: 0xC0000005: Access violation reading location 0x0000000000000008.&lt;/P&gt;</description>
      <pubDate>Thu, 01 Aug 2024 09:55:21 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12933041#M631</guid>
      <dc:creator>duncan_rowland</dc:creator>
      <dc:date>2024-08-01T09:55:21Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12933893#M632</link>
      <description>&lt;P&gt;I recall some problems with &lt;STRONG&gt;ComputeRenderNormal&lt;/STRONG&gt;, but I've always wanted all normals, so I use &lt;STRONG&gt;buildRenderNormals&lt;/STRONG&gt;...&lt;/P&gt;&lt;P&gt;I am sure ComputeRenderNormal also works, but you need to invalidate something in the MNMesh as usual &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;.&lt;/P&gt;</description>
      <pubDate>Thu, 01 Aug 2024 17:02:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12933893#M632</guid>
      <dc:creator>denisT.MaxDoctor</dc:creator>
      <dc:date>2024-08-01T17:02:42Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12934089#M633</link>
      <description>&lt;P&gt;I could be wrong, but as I can guess the&amp;nbsp;&lt;STRONG&gt;ComputeRenderNormal&lt;/STRONG&gt; was designed for "manual" (soft) rendering. This method has been out of use for a long time and you can't find it in the SDK examples now. Its functioning is related to GraphicsWindow, and in the modern world, it implies some form of caching. You need to force the node containing the MNMesh to cache something, which is what happens when you zoom a viewport.&lt;/P&gt;</description>
      <pubDate>Thu, 01 Aug 2024 18:40:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12934089#M633</guid>
      <dc:creator>denisT.MaxDoctor</dc:creator>
      <dc:date>2024-08-01T18:40:49Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12934100#M634</link>
      <description>&lt;P&gt;Also, ComputeRenderNormal implies that you are working with triangular faces, which can cause more headaches at the polygon level. In general, I advise working with built render vertex normals or using the Mesh instead.&lt;/P&gt;</description>
      <pubDate>Thu, 01 Aug 2024 18:47:34 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12934100#M634</guid>
      <dc:creator>denisT.MaxDoctor</dc:creator>
      <dc:date>2024-08-01T18:47:34Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12935523#M635</link>
      <description>&lt;P&gt;Thank you for replying,&lt;BR /&gt;I'm working with a PolyObject (a TriObject works fine). The PolyObject works when I zoom in-and-out so it does seem to have cached what it needs like you say.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;For reference, &lt;STRONG&gt;buildRenderNormals&lt;/STRONG&gt; also causes a similar violation unless I call &lt;STRONG&gt;buildNormals&lt;/STRONG&gt; first.&lt;BR /&gt;&lt;BR /&gt;If it's a case of causing the cached data to be generated, is there a ref you can post on how I'd add that to my code?&lt;BR /&gt;Thanks again, -Duncan.&lt;BR /&gt;&lt;BR /&gt;INode* node = static_cast&amp;lt;MAXNode*&amp;gt;(arg_list[0])-&amp;gt;to_node();&lt;BR /&gt;const ObjectState* object_state = &amp;amp;node-&amp;gt;EvalWorldState(MAXScript_time());&lt;BR /&gt;Object* object = object_state-&amp;gt;obj;&lt;BR /&gt;PolyObject* poly_object = dynamic_cast&amp;lt;PolyObject*&amp;gt;(object);&lt;BR /&gt;MNMesh* mnmesh = &amp;amp;poly_object-&amp;gt;GetMesh();&lt;BR /&gt;mnmesh-&amp;gt;ComputeRenderNormal(0,0);&lt;/P&gt;</description>
      <pubDate>Fri, 02 Aug 2024 12:23:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12935523#M635</guid>
      <dc:creator>duncan_rowland</dc:creator>
      <dc:date>2024-08-02T12:23:02Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12935626#M636</link>
      <description>&lt;P&gt;have you tried the Editable Mesh version ? e.g. does it also throw an exception ?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 02 Aug 2024 13:14:34 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12935626#M636</guid>
      <dc:creator>klvnk</dc:creator>
      <dc:date>2024-08-02T13:14:34Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12935720#M637</link>
      <description>&lt;P&gt;Yes, exactly, the "mesh" version works fine when passed an Editable Mesh:&lt;/P&gt;&lt;LI-CODE lang="general"&gt;INode* node = static_cast&amp;lt;MAXNode*&amp;gt;(arg_list[0])-&amp;gt;to_node();
const ObjectState* object_state = &amp;amp;node-&amp;gt;EvalWorldState(MAXScript_time());
Object* object = object_state-&amp;gt;obj;
TriObject* tri_object = dynamic_cast&amp;lt;TriObject*&amp;gt;(object); //&amp;lt;--Changed to TriObject
Mesh* mesh = &amp;amp;tri_object-&amp;gt;GetMesh(); //&amp;lt;--Changed to Mesh
mesh-&amp;gt;ComputeRenderNormal(0, 0);&lt;/LI-CODE&gt;&lt;P&gt;&lt;BR /&gt;The "poly" version causes an access violation when passed an Editable Poly&lt;BR /&gt;(unless&amp;nbsp; you "zoom in-and-out a bit" first).&lt;/P&gt;&lt;LI-CODE lang="general"&gt;INode* node = static_cast&amp;lt;MAXNode*&amp;gt;(arg_list[0])-&amp;gt;to_node();
const ObjectState* object_state = &amp;amp;node-&amp;gt;EvalWorldState(MAXScript_time());
Object* object = object_state-&amp;gt;obj;
PolyObject* poly_object = dynamic_cast&amp;lt;PolyObject*&amp;gt;(object); //&amp;lt;--Changed to PolyObject
MNMesh* mnmesh = &amp;amp;poly_object-&amp;gt;GetMesh(); //&amp;lt;--Changed to MNMesh
mnmesh-&amp;gt;ComputeRenderNormal(0, 0); //&amp;lt;-- Access Violation Here&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 02 Aug 2024 14:06:52 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12935720#M637</guid>
      <dc:creator>duncan_rowland</dc:creator>
      <dc:date>2024-08-02T14:06:52Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12936596#M638</link>
      <description>&lt;P&gt;have you tried calling mnmesh-&amp;gt;CheckNormals(TRUE) before the call to ComputeRenderNormal ?&lt;/P&gt;</description>
      <pubDate>Fri, 02 Aug 2024 23:00:48 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12936596#M638</guid>
      <dc:creator>klvnk</dc:creator>
      <dc:date>2024-08-02T23:00:48Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12936633#M639</link>
      <description>&lt;P&gt;I did ...&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; doesn't help&lt;/P&gt;</description>
      <pubDate>Fri, 02 Aug 2024 23:51:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12936633#M639</guid>
      <dc:creator>denisT.MaxDoctor</dc:creator>
      <dc:date>2024-08-02T23:51:50Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12939678#M640</link>
      <description>&lt;P&gt;Thanks for the help. For interest, I have some further information that may help.&lt;/P&gt;&lt;P&gt;If I make the normals explicit, then the poly code works.&lt;/P&gt;&lt;P&gt;e.g.&lt;/P&gt;&lt;P&gt;Make a Plane&lt;/P&gt;&lt;P&gt;Convert to Editable Poly&lt;/P&gt;&lt;P&gt;Add Edit Normals modifier&lt;/P&gt;&lt;P&gt;Select All Normals&lt;/P&gt;&lt;P&gt;Make Explicit&lt;/P&gt;&lt;P&gt;If I then either select and pass the modifier, or collapse and pass the object to the function, all works.&lt;/P&gt;</description>
      <pubDate>Mon, 05 Aug 2024 11:02:26 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12939678#M640</guid>
      <dc:creator>duncan_rowland</dc:creator>
      <dc:date>2024-08-05T11:02:26Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12940383#M641</link>
      <description>&lt;P&gt;An update on making the normals explicit. I now suspect this isn't actually the problem, it's just that the Edit Normals modifier is causing a 'redraw' (i.e. cacheing whatever is needed like zooming in-and-out).&lt;/P&gt;</description>
      <pubDate>Mon, 05 Aug 2024 16:55:32 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12940383#M641</guid>
      <dc:creator>duncan_rowland</dc:creator>
      <dc:date>2024-08-05T16:55:32Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12940548#M642</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/15866282"&gt;@duncan_rowland&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;An update on making the normals explicit. I now suspect this isn't actually the problem, it's just that the Edit Normals modifier is causing a 'redraw' (i.e. cacheing whatever is needed like zooming in-and-out).&lt;/P&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;that's more likely...&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;however, I am still puzzled and want to find a #software solution to cache/allocate/init poly render normals like #zoom does.&lt;/P&gt;</description>
      <pubDate>Mon, 05 Aug 2024 18:27:13 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12940548#M642</guid>
      <dc:creator>denisT.MaxDoctor</dc:creator>
      <dc:date>2024-08-05T18:27:13Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12941448#M643</link>
      <description>&lt;P&gt;Yes, I don't have a method that works 100% of the time, some programatic solution is needed. If you find one, do let me know! :0)&lt;BR /&gt;What I'm actually trying to do is check the polys for inverted normals. i.e. compare each normal with its associated face and check they're more or less in the same direction. I have a maxscript that does this, but it's very slow for high polys. If these's a better way to get these vertex normals I'm all ears!&lt;/P&gt;&lt;P&gt;Thanks again, -Duncan.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Aug 2024 06:57:58 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12941448#M643</guid>
      <dc:creator>duncan_rowland</dc:creator>
      <dc:date>2024-08-06T06:57:58Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12942375#M644</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/15866282"&gt;@duncan_rowland&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;&lt;BR /&gt;What I'm actually trying to do is check the polys for inverted normals. i.e. compare each normal with its associated face and check they're more or less in the same direction.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Take a look at&amp;nbsp;&lt;STRONG&gt;MeshDelta::PropagateFacing&amp;nbsp;&lt;/STRONG&gt;(meshdelta.h)&lt;/P&gt;</description>
      <pubDate>Tue, 06 Aug 2024 15:40:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12942375#M644</guid>
      <dc:creator>denisT.MaxDoctor</dc:creator>
      <dc:date>2024-08-06T15:40:36Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12960258#M645</link>
      <description>&lt;P&gt;why do you specifically need to use &lt;SPAN&gt;ComputeRenderNormal&amp;nbsp;&lt;/SPAN&gt;for this ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;can't you use something like....&lt;/P&gt;&lt;LI-CODE lang="general"&gt;MNNormalSpec* mnspecnormals = mesh-&amp;gt;GetSpecifiedNormals();
if(mnspecnormals)
{
  // use MNNormalSpec functionality to get the face normals
  // ....
}
else
{
    for(int f=0; f &amp;lt; numfaces;++f)
    {
         Point3 fnormal = mesh-&amp;gt;GetFaceNormal(f, TRUE);
       //..... 
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Aug 2024 10:25:57 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12960258#M645</guid>
      <dc:creator>klvnk</dc:creator>
      <dc:date>2024-08-15T10:25:57Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12961515#M646</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1794911"&gt;@klvnk&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;why do you specifically need to use &lt;SPAN&gt;ComputeRenderNormal&amp;nbsp;&lt;/SPAN&gt;for this ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;The "computed render normals", as I see it, are not "specified". A special buffer is used for them, and they should be updated whenever you change the geometry/topology (instead of the specified normals, which you have to rebuild yourself).&lt;BR /&gt;If you only want to use some specific normals (faces), computed normals can be much faster. The only problem is that there is no official way to force them to be updated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="denisTMaxDoctor_0-1723748856317.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1398433iA4C435585D090464/image-size/medium?v=v2&amp;amp;px=400" role="button" title="denisTMaxDoctor_0-1723748856317.png" alt="denisTMaxDoctor_0-1723748856317.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Aug 2024 19:07:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12961515#M646</guid>
      <dc:creator>denisT.MaxDoctor</dc:creator>
      <dc:date>2024-08-15T19:07:40Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12961955#M647</link>
      <description>&lt;P&gt;&lt;EM&gt;The only problem is that there is no official way to force them to be updated.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;forcing the update will cost the same time as computing them yourself, you can maintain your own buffer if need be and force your own update on what ever criteria that suits it's how most modifiers handle this kind of stuff using the NotifyInputChanged function&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1794911"&gt;@klvnk&lt;/a&gt;&amp;nbsp;-&amp;nbsp;this post has been edited due to &lt;A href="https://forums.autodesk.com/t5/forum-user-guides/community-rules-and-etiquette/td-p/9581007" target="_blank"&gt;Community Rules &amp;amp; Etiquette violation&lt;/A&gt;.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 16 Aug 2024 15:26:25 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12961955#M647</guid>
      <dc:creator>klvnk</dc:creator>
      <dc:date>2024-08-16T15:26:25Z</dc:date>
    </item>
    <item>
      <title>Re: MNMesh ComputeRenderNormal gives Access Violation</title>
      <link>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12962207#M648</link>
      <description>&lt;P&gt;It’s not the same as manually update normals. It seems like these computed normals need only allocated memory. What normals should be recomputed are specified by user.&lt;/P&gt;</description>
      <pubDate>Fri, 16 Aug 2024 04:08:27 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-programming-forum/mnmesh-computerendernormal-gives-access-violation/m-p/12962207#M648</guid>
      <dc:creator>denisT.MaxDoctor</dc:creator>
      <dc:date>2024-08-16T04:08:27Z</dc:date>
    </item>
  </channel>
</rss>

