1
$\begingroup$

Not sure how to explain the question clearly, but I will give it a try.

I wanted to simulate "Explode Node" in Houdini, which basically rather simple and I think in Sverchok I manage to do that, but kind of overcomplicated somewhat.

It's actually super simple. And the answer is probably lie in using Vector and Matrix.

Supposed I have bunch of objects in the scene. From those objects each in position in the scene, user provides a custom Empty position, or some kind of Math formula to find the center of mass of the group. Then from that point, I wanted to just push the position of each object away from that point reference empty.

I tried just now, but I make all the objects fly away. This is because I probably doing it inside the loop?

I can't do "Apply Matrix" inside AN ala Sverchok to have the "default position" of each object.

Currently my logic is simply using Vector Add while referencing each object pivot. But I seem to just push all the objects away.

Should I... perhaps create a reference pivot using instance and that reference should not be looped?

---- MORE INFO

I need a way to keep the Matrix transform of object in "current original position", and then push each of the object apart from X point position. I don't want to make each object fly away.

It's kind of when dealing with TEXT object, and I want to have control over each of character letter position, and then adding to that current position.

---- REPHRASING THE QUESTION Just like what we can do with Text Object (separating into letter), I would really like to do the same to Group Objects or Joined objects.

Manually by hand: 1) Multiple objects in the scene. Joined or Group them 2) Separate them again, control the pivot, usually centered. 3) Now, I would like to control each and every object from here, this position. Probably wiggle, but in this particular question, I just want them to drift and pushed away based on 1 single point position. 4) That way, we have explode in or out effect.

$\endgroup$
2
  • $\begingroup$ Does this have to work with sverchok? Could they be rigidbodies flying away from a force field? $\endgroup$
    – Mörkö
    Commented Aug 7, 2016 at 13:57
  • $\begingroup$ Yes, well, I like to know both method.Actually prefer the Animation-Nodes or Sverchok procedural effect, in which the user/artist have more control over the result, without the need of simulation. $\endgroup$ Commented Aug 7, 2016 at 23:14

1 Answer 1

4
$\begingroup$

If I understand you correct, what you essentially need is a way to store the initial transformation of objects.

Fortunally Animation Nodes (AN) has an in-build system for that. It is called the ID-Key system (the name comes from the fact that it can theoretically work with all types of ID-Objects in Blender)

Using it is relatively simple - if you know about it:

  1. Select all objects whose transformation you want to save in an ID Key.
  2. Go to the AN tab in the toolshelf of the 3D View and open the ID Keys panel. There you have to click the "From Current Transforms" button. This will store the location, rotation and scale of each selected object in custom properties. You can also see them in the object settings. enter image description here
  3. Open the node editor, insert a Object ID Key node, click Choose Key and select Initial Transformation. Now you can get the initial location, rotation, etc of the object you have as input. The Initial Transformation of an object does not change unless you press that button again. enter image description here

The ID-Key system is a generic solution to the underlying problem of storing values per object that are not changed by your nodes.

The same system is used by the Separate Text Object node. If you look at the template, it also uses the Object ID Key node. Also it does not only store the initial transformation of a letter but also the inital text-value.

enter image description here

$\endgroup$
7
  • $\begingroup$ That's exactly the answer I was looking for! Thanks Jacques. Great, then my next video can explain that mysterious Object ID thing. $\endgroup$ Commented Aug 9, 2016 at 9:05
  • $\begingroup$ By the way, can Object ID store all kind of arbitrary values per points or per object? For example, I want to store special value like "Initial Transoforms" (Vector), but I want to custom name it like "Level". So that each point carry this special ID and then I can change and use this data at any point in time? If yes, how would one create such special ID value? $\endgroup$ Commented Aug 9, 2016 at 9:07
  • $\begingroup$ You can only store data per object, not per vertex in an object. For that you should just use a separate copy of the mesh which you don't modify. Unfortunally the UI in the ID Key system panel is not ready yet. So you can't add more ID Keys there... This will hopefully change soon! Fortunally most of the time the initial transforms value is all you need.. $\endgroup$ Commented Aug 9, 2016 at 9:14
  • $\begingroup$ Ok good to know about that limitation. Yes, I guess with what we have now it's pretty robust already. $\endgroup$ Commented Aug 9, 2016 at 10:58
  • 1
    $\begingroup$ I don't want that this operation is implicit. Sure, in some cases it can be faster but I want that the user definitly knows where to change the Initial Transforms when he uses this node. Also "Initial Transforms" is part of the larger "ID Key" system in Animation Nodes. I don't really like having special rules for some types. $\endgroup$ Commented Nov 18, 2016 at 17:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .