Page 1 of 3 123 LastLast
Results 1 to 15 of 35

Thread: Instances with different shapes by deform/displace technology

  1. #1
    RETROGRADER prometheus's Avatar
    Join Date
    Aug 2003
    Location
    sweden stockholm
    Posts
    16,786

    Instances with different shapes by deform/displace technology

    Well..just recently Ztreem informed me about something in the instance options for blender, and I wonder if the technology behind LIghtwaveīs and blenders are so different in the core..if not
    perhaps the Lighwave team should look in to this.

    Some years ago I was voting for something innovative that could create cloned instances in layout, but having various morphs, deformations or displacements..yet still being an instance and not a mesh per say.
    Accordingly to Ztreem, that is possible in blender..that you can instance an ojbect ..and have displacement modifiers differently on to the instances..thus yielding letīs say different looking stones and rock pieces, without having to overload the scene with a lots of different meshes.

    If this could be pushed even further in blender, I could see a possible way of having figures, instanced..like a group of people having different face shapes, but still just instances.

    So if anyone know what this is all about in itīs core, and what Lightwave would need to deal with this..it would be interesting to hear.

  2. #2
    Instances can have varied sizes and shape based on xyz variances. I THINK it can also use textures to drive the instance as well.

  3. #3
    RETROGRADER prometheus's Avatar
    Join Date
    Aug 2003
    Location
    sweden stockholm
    Posts
    16,786
    Quote Originally Posted by JamesCurtis View Post
    Instances can have varied sizes and shape based on xyz variances. I THINK it can also use textures to drive the instance as well.
    Iīm sorry JamesCurtis, but all that sounds Very fuzzy.
    I donīt think what you describe is what I mean...of course it can have different sizes, but only in a scale direction or a stretch direction..I seriously doubt it can be deformed with displacements per vertices..Differently per instance.

    As for textures..well there you have it "you Think" it can drive instances..and by driving instancing it can for instance be the changing scale over a number of instances, rotation and placement, but definitely confirming it able to drive the per vertices displacement?.I seriously doubt it.

    In any case ..I havenīt seen any example of it, the docs say nothing about it..nor the feature description.
    And if it was possible, I think Ztreem and old lightwave user would have told me about it as well.

    So no..do not think it is possible currently.

  4. #4
    TrueArt Support
    Join Date
    Feb 2003
    Location
    Poland
    Posts
    8,096
    Why people cannot grasp so simple idea that instances are just infrastructure for equivalent nodal setup with nodes: Input > Ray Position/Ray Direction, Math > Vector > Transform, then output from them to Ray Trace node....

    You can make instances inside of Node Editor! Actually CCTV shader/node is the same what does Instance Generator during rendering.

  5. #5
    RETROGRADER prometheus's Avatar
    Join Date
    Aug 2003
    Location
    sweden stockholm
    Posts
    16,786
    Quote Originally Posted by Sensei View Post
    Why people cannot grasp so simple idea that instances are just infrastructure for equivalent nodal setup with nodes: Input > Ray Position/Ray Direction, Math > Vector > Transform, then output from them to Ray Trace node....

    You can make instances inside of Node Editor! Actually CCTV shader/node is the same what does Instance Generator during rendering.
    What is your point?
    that it would be possible to displace the instances differently per vertices, having EACH instance look differently in displacement form?
    That would be an option to have fbm noise on one instance, and other turbulence on other instance..originating from the same instance object.

    changing displacement to all instances in the node editor, to acheive what seems to be a different shape..but really isnīt..itīs just different scaling and rotation of the vector to defornm it..that isnīt the same as displacing vertices differently.

    If it is possible nodally, just say so...and not just "you can make instances inside of node editor"
    And better yet, if you show a sample image of different displacements on the instances, you would prove what is possible in a better way.

  6. #6
    TrueArt Support
    Join Date
    Feb 2003
    Location
    Poland
    Posts
    8,096
    Quote Originally Posted by prometheus View Post
    that it would be possible to displace the instances differently per vertices, having intances look differently in displacement form?
    No! Exactly reverse! Therefor instances are static poses, clones of existing mesh.
    There is not just mesh that you see directly. There is KD-Tree or Octree behind it, with the all data preprocessed and optimized when renderer started and regenerated every frame (if meshes are animated).

    In instances you can do as much as you could get in Node Editor using just these nodes mentioned by me.
    I meant Surface Node Editor (not displacement Node Editor)!!


    Any exception means keeping duplicate of object (e.g. at different morph, after transformation) and separate KD-Tree/Octree.


    If KD-Tree/Octree would not exist renderer after hitting bounding box of mesh, would have to pass through the all polygons in mesh, to check intersection.
    Instead of processing 5-10 ray-triangle intersections, would have to process as many as is triangles (couple be millions times slower) as in mesh.
    Last edited by Sensei; 04-03-2020 at 04:38 AM.

  7. #7
    RETROGRADER prometheus's Avatar
    Join Date
    Aug 2003
    Location
    sweden stockholm
    Posts
    16,786
    Quote Originally Posted by Sensei View Post
    No! Exactly reverse! Therefor instances are static poses, clones of existing mesh.
    There is not just mesh that you see directly. There is KD-Tree or Octree behind it, with the all data preprocessed and optimized when renderer started and regenerated every frame (if meshes are animated).

    In instances you can do as much as you could get in Node Editor using just these nodes mentioned by me.
    I meant Surface Node Editor (not displacement Node Editor)!!


    Any exception means keeping duplicate of object (e.g. at different morph, after transformation) and separate KD-Tree/Octree.


    If KD-Tree/Octree would not exist renderer after hitting bounding box of mesh, would have to pass through the all polygons in mesh, to check intersection.
    Instead of processing 5-10 ray-triangle intersections, would have to process as many as is triangles (couple be millions times slower) as in mesh.
    Ok right, you are confirming it not to be possible currently.
    and Yes...surface node editor I knew about all along.

    The question remains, why? ..what is it about the blender instance codethat allows for this?..while lightwave can not.
    Initally I thought blenders instancing wasnīt instances..but just duplicated clones, but when lookin at it..it isnīt yielding more polys in the instances.

    I have still yet to see Mikael (ztreem) provide an example yet...he says itīs possible, and he didnīt know about it himself until recently.
    Itīs an awesome feature if it can be done, just instance clone a field of rocks, with variations on not just the main scale and stretch,
    but the actual displaced form of each vertice..to have various types of stone shaped by different procedurals.

    Even further..I could see it possible to clone instances with different face shapes, retreived from morph sculpts or displacement maps, one mesh figure cloned as instances..but with varied faces .

  8. #8
    LightWave Engineer Jarno's Avatar
    Join Date
    Aug 2003
    Location
    New Zealand
    Posts
    624
    There are a couple of levels to this.

    First you have object clones. These are items that have the same LWO file, and therefore will share the same base mesh information. If any deformation is applied to a clone, then the clone will have its own set of vertex positions (but still share the same polygon data). If there is any subdivision then the clone will have its own subd mesh. So overall this is not as heavy as having individual LWO files, but there is still a fair bit of unique mesh data needed per clone.

    Second, instancing references the mesh data of an object. There is no per-instance mesh data; only a pos/rot/scale transform. That makes them very light-weight. In the renderer they are treated like holograms. There is no per-instance deformation possible because they are all views of the same mesh pretending to be in different positions. Otherwise each instance would need to have its own set of vertex positions, which basically just makes them clones instead of instances, with all the extra memory requirements that comes with it.

    You can combine them by making several clones, each with different deformations, and then instancing those clones. That may be what is happening behind the scenes in Blender.

    ---JvdL---

  9. #9
    TrueArt Support
    Join Date
    Feb 2003
    Location
    Poland
    Posts
    8,096
    Quote Originally Posted by Jarno View Post
    Second, instancing references the mesh data of an object. There is no per-instance mesh data; only a pos/rot/scale transform. That makes them very light-weight. In the renderer they are treated like holograms. There is no per-instance deformation possible because they are all views of the same mesh pretending to be in different positions. Otherwise each instance would need to have its own set of vertex positions, which basically just makes them clones instead of instances, with all the extra memory requirements that comes with it.
    In HD_Instance there were also virtual instances. Object to instance was written to disk in special optimized format (with KD-Tree or Octree, I assume), and when ray was passing through bounding box of instance during rendering, data from the right KD-Tree/Octree leaf was loaded, and then kept as long as needed, if other rays would pass the same region. The least used buffers were freed to save memory.
    Last edited by Sensei; 04-03-2020 at 10:13 AM.

  10. #10
    RETROGRADER prometheus's Avatar
    Join Date
    Aug 2003
    Location
    sweden stockholm
    Posts
    16,786
    Quote Originally Posted by Jarno View Post
    There are a couple of levels to this.

    First you have object clones. These are items that have the same LWO file, and therefore will share the same base mesh information. If any deformation is applied to a clone, then the clone will have its own set of vertex positions (but still share the same polygon data). If there is any subdivision then the clone will have its own subd mesh. So overall this is not as heavy as having individual LWO files, but there is still a fair bit of unique mesh data needed per clone.

    Second, instancing references the mesh data of an object. There is no per-instance mesh data; only a pos/rot/scale transform. That makes them very light-weight. In the renderer they are treated like holograms. There is no per-instance deformation possible because they are all views of the same mesh pretending to be in different positions. Otherwise each instance would need to have its own set of vertex positions, which basically just makes them clones instead of instances, with all the extra memory requirements that comes with it.

    You can combine them by making several clones, each with different deformations, and then instancing those clones. That may be what is happening behind the scenes in Blender.

    ---JvdL---
    Thanks Jarno for jumping in and explaining, I would need to discuss this with Ztreem and perhaps some others in the blender forums, but he needs to show a sample of it all, and give scene statistics of the meshes.
    Personally I havenīt had the time to try this out in blender...and assuming I know the tricks on it all.

    Ztreem said he could use a lattice on an instance and deforming it..without affecting other instances....

    "Neltulz
    Neil V. Moore
    Ztreem
    7d

    Nice. Does this mean you can create an object instance and then use a lattice to manipulate the geometry of the secondary object instance without affecting the first one? In autodesk maya, this was either impossible, or so confusing I never figured out how to do it.
    Ztreem
    Neltulz
    7d

    Yes, just tried it. works fine. But if you have modifiers on a instance and edit the mesh you don’t see it update through all instances while you are in edit mode."

  11. #11
    Prometheus,

    I'm sorry if I mistook what you were referring to doing. I sincerely apologize.

    It would be really nice if it could be done somehow though.

  12. #12
    RETROGRADER prometheus's Avatar
    Join Date
    Aug 2003
    Location
    sweden stockholm
    Posts
    16,786
    Quote Originally Posted by JamesCurtis View Post
    Prometheus,

    I'm sorry if I mistook what you were referring to doing. I sincerely apologize.

    It would be really nice if it could be done somehow though.
    Donīt worry, I can see it being easy to confuse with something else.

  13. #13
    Member
    Join Date
    May 2006
    Location
    France
    Posts
    4,181
    About offset time (not exactly customized instance displacement),
    legacy DP Instance (not DP Instancer) used the same kind of baked Motion displaced data than HD Instance,
    it is explicitly described by Graham Fyffe as a similar MDD file except it adds vertex normal to vertex position
    when it scans the mesh to instance,
    this is crucial, after an instance is intersected by the raytracer, for shading.

    So Offset time can be really randomized and subframe interpolated
    instead of picking object cloned and displaced separately by user.
    As explained in the DP Instance documentation,
    multiplying offset times has a cost in RAM memory, like Clones taken as reference.
    but this adds nice versatility for nodal animations, crowds etc.

    The DPM data file in DP Instance, following the same principle is just an extended MDD format,
    also the Maya motion cache which can be read currently in LW
    is able to read and write normal data, just need an extra XML declaration.

    In LW 2018+, there are now much more data to fill before shading,
    you can compare the surface input in LW 2015 and LW 2018,
    but I think this is doable based on this Baked data file.

    Denis.
    Last edited by dpont; 04-04-2020 at 02:15 AM.

  14. #14
    Electron wrangler jwiede's Avatar
    Join Date
    Aug 2007
    Location
    San Jose, CA
    Posts
    6,950
    Quote Originally Posted by prometheus View Post
    Ztreem said he could use a lattice on an instance and deforming it..without affecting other instances....

    "Neltulz
    Neil V. Moore
    Ztreem
    7d

    Nice. Does this mean you can create an object instance and then use a lattice to manipulate the geometry of the secondary object instance without affecting the first one? In autodesk maya, this was either impossible, or so confusing I never figured out how to do it.
    Ztreem
    Neltulz
    7d

    Yes, just tried it. works fine. But if you have modifiers on a instance and edit the mesh you don’t see it update through all instances while you are in edit mode."
    That pretty much tells you how they're doing it: When you apply deformers to an instance, they clone it off the original and work from there. That's why changes to the original base mesh no longer get reflected by the deformed "instance" (it's no longer really an instance of the original base mesh, it's now a clone mesh from that original base mesh). It's essentially the same as converting an instance to a clone, and then working on it as an independent mesh, only Blender hides the instance->clone conversion behind the UI.

    In that sense, most other instancing systems support similar abilities, they just require the instance->clone conversion be done manually (with varying steps involved to do so).
    Last edited by jwiede; 04-04-2020 at 03:21 PM.
    John W.
    LW2015.3UB/2019.1.5 on MacPro(12C/24T/10.13.6),64GB RAM, NV 980ti

  15. #15
    Dreamer Ztreem's Avatar
    Join Date
    Jun 2003
    Location
    Sweden
    Posts
    4,194
    Quote Originally Posted by jwiede View Post
    That pretty much tells you how they're doing it: When you apply deformers to an instance, they clone it off the original and work from there. That's why changes to the original base mesh no longer get reflected by the deformed "instance" (it's no longer really an instance of the original base mesh, it's now a clone mesh from that original base mesh). It's essentially the same as converting an instance to a clone, and then working on it as an independent mesh, only Blender hides the instance->clone conversion behind the UI.

    In that sense, most other instancing systems support similar abilities, they just require the instance->clone conversion be done manually (with varying steps involved to do so).
    It’s not a clone. Changes to the mesh in edit mode and shapekeys from the original( or on any instance) get reflected to ALL instances but not in edit mode, only when you exit edit mode the changes get updated to the rest of the instances that has modifiers. You can add different bones, displacement, lattices to every instance if you want.

Page 1 of 3 123 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •