[–] [S] 7 points 1 week ago (1 child)

The node basically simulates (just like cloth simulation) a 1D manifold (a thin cloth if you will) and spits out the simulated mesh (at each frame). What you do with it is up to you. Like in the cover image of this post, i chained a couple more geo nodes to make it into a proper rope.

So for something like a chain, you could add another geo node after the RopeGN (like in the attached image).

Spiderweb is an interesting case, but it won't work with this modifier, because it inherently has internal loops. I think a cloth simulation would be much more feasible for that. And this is deliberate: the whole point of only doing for 1D objects (single loop is ok) is it allows to simplify and speed up the XPBD by quite a lot (for the nerds: the Jacobian is sparse if you only have nearest neighbor connectivity).

For the barbed wire -- I'm actually not sure. You can probably tweak the parameters to get something that resembles it, but I think a barbed wire also has lateral elasticity which normal ropes do not, so it won't properly model their dynamics.

  • source
  • parent
  • context
  • [–] 1 point 1 month ago (2 children)

    Interesting, I'm looking forward to seeing your project! I'll note the features you've mentioned, the LSP should be a really handy one : )
    The declaring of inline functions i.e. creating nodes in the root node group is something I feel is lacking in my project right now. Would you make a post about the addon somewhere?

  • source
  • parent
  • context
  • [–] [S] 1 point 1 month ago (3 children)

    yep, that's the same idea! i'm happy to share the code once i clean it up a bit, and you should feel free to transfer any of the functionality. there are few features i added which i really like, such as a support for LSP and type hints in an external IDE, plus an ability to write the code outside, while the add-on auto-regenerates the node-group if a file is changed. another cool thing is you can inline functions, i.e.:

    # these two are automatically inlined (i.e., nodes added to the active group)
    @inline
    def foo(x: float, y: bool):
      return x**2 if y else x**3
    
    foo = lambda x, y: x**2 if y else x**3
    
    # while this becomes a reusable node group
    def foo(x: float, y: bool):
      return x**2 if y else x**3
    
  • source
  • parent
  • context
  • [–] 2 points 1 month ago* (4 children)

    My goal was to think about nodes as functions and operations that could be described with simple Pythonic syntax. Every node is a function with positional arguments as socket inputs and a return value as a socket output. The mathematical operation nodes could be described as simple operators like + - // etc. The links between nodes are described as simple variable assignments and passing variables into functions and so on.

    Basically, the idea it to think about Geometry Nodes setup as a script and reduce the Blender API Geometry Nodes boilerplate, while keeping it possible to address a specific node when needed.

    I also put a bunch of work into the Extension API, which makes it possible to extend the functionality of the DSL with additional third-party libraries with its own defined methods and logic and use them in a familiar way.

    I'd be happy if you tried it out! 🌽

  • source
  • parent
  • context
  • [–] [S] 1 point 1 month ago (5 children)

    looks nice! i wanted something more code friendly, so mine actually parses math expressions, if statements, lambda functions, loops etc and decides internally what nodes it needs to put together (hence the horrible looking node sausage). so you literally write a python logic, which it then transpiles and compiles into a node tree. in other words, you never actually have to think in nodes.

  • source
  • parent
  • context
  • [–] [S] 2 points 1 month ago

    :D thanks! i actually already added support for towers and will add other adjacent buildings soon too. the plan is to also have a gatehouse and generative arcs. I'm currently trying to work out the general topology with all the edge cases and then will add decorative elements.

    it follows a custom edge which doesn't necessarily lie in a single plane, so it's trivial to add a shrinkwrap or another node to make it follow a terrain. texture input is a good question. uv of this thing might be totally messed up, but a generative material should work ok.

    for the battle scene - it does produce a well treated topo, so you could chain another destruct modifier. )

    will be happy to share once it's more mature.

  • source
  • parent
  • context
  • view more: next ›