[Imstk-developers] Clearing surface mesh data on intialization

Milef, Nicholas Boris milefn at rpi.edu
Thu Jul 27 17:57:29 EDT 2017


Actually, to clarify, I don't think it's a big deal if it's used in the physics classes, as long as it doesn't modify an already built mesh as I describe in the previous message. I don't know what type of impact the normals have in the physics classes.
________________________________
From: Imstk-developers [imstk-developers-bounces at imstk.org] on behalf of Milef, Nicholas Boris [milefn at rpi.edu]
Sent: Thursday, July 27, 2017 5:53 PM
To: Alexis Girault
Cc: imstk-developers at imstk.org
Subject: Re: [Imstk-developers] Clearing surface mesh data on intialization

If it were only called in the readers, I wouldn't have a problem with it. But it's called in some of the physics classes too. It also clears data such as normals that's been set (i.e., by the readers). I need some of that data though to fix the UV seams.

For meshes, Assimp is told to generate smooth normals and to join identical normals. For most vertices, this works as intended, but for vertices on UV seams, they can't be joined. Assimp smooths those vertices by treating them as a single vertex, which I would want as the intended behavior. So I need to go through all of the vertices and find the ones with the same normals and positions, but the normals get cleared by the initialize function. Assimp's behavior is correct (I can't think of another way we would want it to deal with these problems).
________________________________
From: Alexis Girault [alexis.girault at kitware.com]
Sent: Thursday, July 27, 2017 5:26 PM
To: Milef, Nicholas Boris
Cc: Sreekanth Arikatla; imstk-developers at imstk.org
Subject: Re: [Imstk-developers] Clearing surface mesh data on intialization

Is `initialize` only used in the readers currently? I believe the goal of that function was just to set vertices, triangles, or any other topology information needed in a single function. It should only be used after the constructor as a utility as far as I understand, so there shouldn't be data already set in the mesh at that point.

When/where is this function currently called and creating an issue in your case?

Also, I think the `clear `should only delete the derived data computed by the initialization input. Is it doing more than that now which would explain why it deletes your data?

I think having an `initialize` function that clears derived data fields and set core parameters is good, we need to make sure it is called at a good place and does not remove some unexpected fields (but I just think it should be called before you try to set any data in it)

Alexis Girault
R&D Engineer in Medical Computing
Kitware, Inc.

http://www.kitware.com<http://www.kitware.com/>
(919) 969-6990 x325<tel:(919)+969-6990+x325>

On Thu, Jul 27, 2017 at 5:03 PM, Milef, Nicholas Boris <milefn at rpi.edu<mailto:milefn at rpi.edu>> wrote:
For now, I can just put the seam computation before the clear. However, this will break if the vertex order changes or something like that. Basically, what I'm trying to say is that I would want users to know explicitly if they're messing up their data. A reinitialize function doesn't convey this imo.
________________________________
From: Imstk-developers [imstk-developers-bounces at imstk.org<mailto:imstk-developers-bounces at imstk.org>] on behalf of Milef, Nicholas Boris [milefn at rpi.edu<mailto:milefn at rpi.edu>]
Sent: Thursday, July 27, 2017 4:47 PM
To: Sreekanth Arikatla

Cc: imstk-developers at imstk.org<mailto:imstk-developers at imstk.org>
Subject: Re: [Imstk-developers] Clearing surface mesh data on intialization

I guess where I'm stuck at is why we have an initialize function to begin with. I still can't think of a use-case where we can't either 1) make a new mesh or 2) modify the components of the old mesh.
________________________________
From: Sreekanth Arikatla [sreekanth.arikatla at kitware.com<mailto:sreekanth.arikatla at kitware.com>]
Sent: Thursday, July 27, 2017 4:37 PM
To: Milef, Nicholas Boris
Cc: imstk-developers at imstk.org<mailto:imstk-developers at imstk.org>
Subject: Re: [Imstk-developers] Clearing surface mesh data on intialization

Hi Nick,
            If you want to preserve the normals, you can add normals to the Initialize function arg. If the normals are supplied, initialize clears the previous data before assigning.

On Thu, Jul 27, 2017 at 4:01 PM, Milef, Nicholas Boris <milefn at rpi.edu<mailto:milefn at rpi.edu>> wrote:
No, I don't. I need to preserve the original normals that ASSIMP imports because ASSIMP calculates the normals correctly. Otherwise, I can't identify the UV seams.

I can just do this computation in the SurfaceMeshRenderDelegate, but I'm not sure if the normals are used elsewhere after reinitializing the meshes. But isn't reinitializing a mesh dangerous in a multithreaded environment anyway?
________________________________
From: Sreekanth Arikatla [sreekanth.arikatla at kitware.com<mailto:sreekanth.arikatla at kitware.com>]
Sent: Thursday, July 27, 2017 3:55 PM

To: Milef, Nicholas Boris
Cc: imstk-developers at imstk.org<mailto:imstk-developers at imstk.org>
Subject: Re: [Imstk-developers] Clearing surface mesh data on intialization

It could be used in some cases depending on the scenario. Do you plan to call this at every frame?


On Thu, Jul 27, 2017 at 3:53 PM, Milef, Nicholas Boris <milefn at rpi.edu<mailto:milefn at rpi.edu>> wrote:
Is that a useful use case though? Why not just make a new mesh?
________________________________
From: Sreekanth Arikatla [sreekanth.arikatla at kitware.com<mailto:sreekanth.arikatla at kitware.com>]
Sent: Thursday, July 27, 2017 3:52 PM
To: Milef, Nicholas Boris
Cc: imstk-developers at imstk.org<mailto:imstk-developers at imstk.org>
Subject: Re: [Imstk-developers] Clearing surface mesh data on intialization

Hi Nick,
            This is cleared in case one wants to reinitialize the mesh with a different data. Initialize should only be called at initilization or at runtime if the mesh data itself changes.

On Thu, Jul 27, 2017 at 3:31 PM, Milef, Nicholas Boris <milefn at rpi.edu<mailto:milefn at rpi.edu>> wrote:
I'm modifying the SurfaceMesh class currently, but why is all the data cleared on initialization? Is this necessary? I ask because I need this data to correct for the normals seams.

_______________________________________________
Imstk-developers mailing list
Imstk-developers at imstk.org<mailto:Imstk-developers at imstk.org>
http://public.kitware.com/mailman/listinfo/imstk-developers




--
Sreekanth Arikatla, Ph.D.,
Senior R&D Engineer,
Kitware, Inc.<http://www.kitware.com>, Carrboro, NC.




--
Sreekanth Arikatla, Ph.D.,
Senior R&D Engineer,
Kitware, Inc.<http://www.kitware.com>, Carrboro, NC.




--
Sreekanth Arikatla, Ph.D.,
Senior R&D Engineer,
Kitware, Inc.<http://www.kitware.com>, Carrboro, NC.


_______________________________________________
Imstk-developers mailing list
Imstk-developers at imstk.org<mailto:Imstk-developers at imstk.org>
http://public.kitware.com/mailman/listinfo/imstk-developers


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/imstk-developers/attachments/20170727/93e91508/attachment-0001.html>


More information about the Imstk-developers mailing list