MoI discussion forum
MoI discussion forum

Full Version: Nodebundle for playing with nodes

Show messages:  1-4  …  725-744  745-764  765-784  785-804  805-824  825-844  845-864  …  1845-1859

Thread Split: Some posts in this thread have been moved here

From: r2d3
1 Dec 2017   [#785] In reply to [#783]
WOW nice one!

Did you mention, that if you go with the mouse over the animation ore Moi is in background it produces some different curves...
From: speedy (AL2000)
1 Dec 2017   [#786]
Thank you Ralf, but this malfunction does not occur
only with your file, the procedure for uploading your file
that's exactly what you said,
the defect I believe is in the folders I uploaded in V.099
but I can not figure out where the mistake is-
alberto
From: Frenchy Pilou (PILOU)
1 Dec 2017   [#787]
French version and manual of the Pentagraph 2D / 3D ! :)
http://moiscript.weebly.com/elephant-systegraveme-nodal.html
From: r2d3
1 Dec 2017   [#788] In reply to [#787]
Merci beaucoup!!!

That looks great :-)

The stream.js is now a little bit more robust for bad inputs..
perhabs you can update it

Attachments:
stream.js


From: Barry-H
4 Dec 2017   [#789]
Hi All,
I would like to be able to move an object automatically if it intersects another.
The logic is.
1) Select object 1 and 2
2)Check if they intersect.
3) If Yes move object 2 a given amount 'X+' and keep looping till No intersection or move limit reached.
4) If No move object 2 a given amount 'X-' and keep looping till Yes intersection or move limit reached.
5) When either steps 3 or 4 have been achieved set a flag to indicate loop end.
I know we have an intersect node but I need a true or false or 0 or 1 output.
Any ideas how to achieve this ?
Barry
From: bemfarmer
4 Dec 2017   [#790] In reply to [#789]
Hi Barry,

(precision)Bounding box would give an estimate of the size of the objects, and how far to "nudge" one or both, in some direction.
If the intersect factory, via factory.calculate(), has its intersect curves or points sent to an objectlist, and the length is zero, there is no intersection. (?)
(I'll await Michael response :-)
- Brian
From: Barry-H
4 Dec 2017   [#791] In reply to [#790]
Hi Brian,
I used the bounding box in my original trials but wanted to use the intersect node to give a more accurate layout (allowing for nesting within the bounding box). My problem is to find away of using the output of intersect node as a true or false or 0 or 1 so I can then trigger the movement.
I looked at the JS code of the intersect node to see if the output could be changed to give a 0 or 1 and then create a new node but my limited JS knowledge is a problem hence my post.
Cheers
Barry
From: bemfarmer
4 Dec 2017   [#792] In reply to [#791]
Instead of factory.commit(), putting the intersecting lines/curves/points in the geometry database,
objList = factory.calculate() would put the curves & points in an objectlist, which could be counted/ checked for length.
I'll defer to the professional programmers, due to my very limited knowledge, and limited time :-)
- B
From: Michael Gibson
4 Dec 2017   [#793] In reply to [#791]
Hi Barry, it looks like you'd need to do 2 things - you'd need to change the output type of the node which is defined by this line in objIntersect():

this.addOutput("Out","objectlist");

It sounds like you want it to output a boolean value, it looks like you can put in "boolean" for that, so change that to:

this.addOutput("Out","boolean");


Then to actually make the boolean value you will need to change the onExecute function for objIntersect, the last line currently looks like this:

this.setOutputData(0, output);

To change that to a boolean value instead of outputting the object list try this:

this.setOutputData(0, output.length > 0);

So that should then output true if anything was generated from the intersection or false if nothing was generated.

Does that maybe do what you need?

- Michael
From: Barry-H
5 Dec 2017   [#794] In reply to [#793]
Hi Michael,
yes that’s what I need to achieve a node that indicates a collision.
Thanks a lot.
Barry
From: Barry-H
5 Dec 2017   [#795] In reply to [#793]
Hi Michael,
I modified Max's node as your suggestions but cannot find anyway to connect it to the maths node.
Is the output a numeric number ?
Thanks
Barry
From: Michael Gibson
5 Dec 2017   [#796] In reply to [#795]
Hi Barry, the output for that case is a boolean value, not a number value. But if you want a number to be output instead, try switching the output type to:

this.addOutput("Out","number");

Then in onExecute, try this:

this.setOutputData(0, output.length == 0 ? 0 : 1);

The "output.length == 0 ? 0 : 1" part is a compact way of saying: "if output length is 0 output 0 else output 1".

- Michael
From: Barry-H
5 Dec 2017   [#797] In reply to [#796]
Hi Michael,
changed code as your reply only thing had to change was "number" to "numarray".
works just as I needed so again many thanks for sorting it for me.
Cheers
Barry
From: Barry-H
5 Dec 2017   [#798] In reply to [#796]
Hi Michael,
I was a little premature thinking by altering the this.addOutput(“Out”,”number”);
to this.addOutput(“Out”,”numarray”); worked, it only allowed connection to maths node but the maths node does not recognise the input. So back to square one.
Any more ideas gratefully received.
Barry
From: r2d3
5 Dec 2017   [#799]
Animate going easy..



Just take the 3 axes from the 3dm file -> place it over the axes points of your favourit piston > name the parts like in the 3dm file -> open nodeeditor with the nod file -> press play and enjoy...

runs fine on nodeeditor @'y'@ 0.99 without any special extensions....



Attachments:
animator10.3dm
animator10.nod

Image Attachments:
animator.gif  animator.png 


From: Michael Gibson
5 Dec 2017   [#800] In reply to [#798]
Hi Barry, well I'd guess numarray would need an array of numbers to be returned instead of just a single individual number.

In Javascript you can make an array by using [], like [ 'a', 'b', 'c' ] . So try changing the onExecute part to this:

this.setOutputData(0, output.length == 0 ? [0] : [1]);

- Michael
From: Frenchy Pilou (PILOU)
5 Dec 2017   [#801] In reply to [#799]
<< Animate going easy..

...easy to use your tricky Nodeling ...but maybe not so easy to create it from zero! ! ;)
From: bemfarmer
5 Dec 2017   [#802]
There is a (minor) difference in the behavior of the concat2 node in MoI4beta.
It is a failure to release the mouse attachment to the node, under certain circumstances.

By clicking RMB on top of the concat2 node, one of three input configurations may be selected,
called Numbers, (numarray), Points, (pointarray), or Objects.
This should be done before attempting to wire the input with the wrong type.
In MoI4beta, "Dragging" a gold wire for Objects to the wrong input, Numbers or Points, and then pushing RMB and selecting Objects,
results in the proper input being changed to, and the wire attaches, but the mouse is then locked onto the node box.
The only way I've found to release the lock is to press ESC, and reload the file.

This does not happen in MoI3. Clicking the RMB releases the attempt to wrongly attach the wire.

- Brian
From: Barry-H
5 Dec 2017   [#803] In reply to [#800]
Hi Michael,
that’s seem’s to be the answer.
Many thanks.
Barry
From: r2d3
5 Dec 2017   [#804] In reply to [#801]
<< ...easy to use your tricky Nodeling ...but maybe not so easy to create it from zero! ! ;)

EASY!

1. reinvent the cosinus
2. discover javascript
3. enjoy nodeling
4. keep nodeling

There is still a more EASY version:

Attachments:
animator11.nod

Image Attachments:
animator11.png 


Show messages:  1-4  …  725-744  745-764  765-784  785-804  805-824  825-844  845-864  …  1845-1859