Node Wish List
 1-20  …  261-280  281-300  301-320  321-340  341-360  …  421-425

Previous
Next
 From:  MO (MO_TE)
9581.301 In reply to 9581.300 
Thank you for these cool modifications.

You are right.
search didn't work because of extra whitespaces .
LGraphCanvas.prototype.renderInfo = function (ctx, x, y)
LGraphCanvas.prototype.renderInfo = function( ctx, x, y )

Now I find it. :)

I usually prefer to have different versions of same node, But I gave it a try.
I added your modification as you showed, but couldn't see any difference.("save as" window pops up with empty name field)


Anyways, I change your code a bit.
Now if you press the save button and alt key , it saves on existing node file without confirmation.
otherwise works like before.
code:
Editor.prototype.onSaveButton = function (e)
{
	if (this.graph.blocked) return;
	var saveFilePath="";
	// var saveFilePath = moi.filesystem.getSaveFileName( lang.getTranslation('Save as')+' ..',  lang.getTranslation('MoI Nodeeditor files')+' (*.nod)|*.nod' );
	// if (e.altKey) {saveFilePath = moi.filesystem.getSaveFileName(lang.getTranslation('Save as') + '..', lang.getTranslation('MoI Nodeeditor files') + ' (*.nod)|*.nod',lang.getTranslation(this.graph.filename));}
	
	if (e.altKey) {saveFilePath = lang.getTranslation(this.graph.filename);}
	else {saveFilePath = moi.filesystem.getSaveFileName( lang.getTranslation('Save as')+' ..',  lang.getTranslation('MoI Nodeeditor files')+' (*.nod)|*.nod' );}

	if ( !saveFilePath ) return false;
	if ( this.graph.status !== LGraph.STATUS_STOPPED ) this.onPlayButton();
	var file = moi.filesystem.openFileStream( saveFilePath, 'w' );
	file.writeLine(LiteGraph.JSONprettify(this.graph.serialize(), {"indent":"	", 'maxLength':150}));
	file.close();
	this.graph.filename = saveFilePath;
	this.graph.setDirtyCanvas(true,true);
}
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  James (JFH)
9581.302 In reply to 9581.299 
MO,

Your Curves2/ConnectPoints node is very similar to Wayne's Points2/PtsInRange.
Indeed the output is identical with a "Max Links" setting of 4 or greater & "DistRange" minimum of 0. See below

The facility to generate lines within a range could be added with a dropdown selection as shown above so on "DistRange (min, max)" the "Distance" input would read 2 comma separated numbers.

Perhaps a better, more logical alternative would be to have instead 2 distance inputs: "distMin" & "distMax" with defaults of 0 & 1 respectively. In that way it would operate exactly as it does presently if no connection is made to "distMin" input.

James
https://www.instagram.com/nodeology/

PS I have replied here, in this thread, because the thread " things about MOI3D that you learn by teaching it." seems a peculiar location for submitting new node contributions. In the interest of accessibility of new nodes to latecomers & infrequent visitor to the forum, we should probably avoid scattering new node submissions across various different threads. This thread & "Nodebundle for playing with nodes" are the 2 established repositories of NE's expanding library of new nodes

EDITED: 1 Apr 2023 by JFH

Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  MO (MO_TE)
9581.303 In reply to 9581.302 
Hi James
It seems once again I've reinvented the wheel. :)
Although I don't have the "Points2/PtsInRange" node in my NE package.
I changed the "ConnectPoints" node, now it has a range mode.

I get your point about threads.
I'll try to post in related threads.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  James (JFH)
9581.304 
NODE PROPOSAL: srfNormals

The means of illustrating the surface orientation by displaying normals would offer great utility when working with nodes.
For instance extruding can sometimes give unexpected results due to false assumption of the orientation of faces.

Michael introduced functions for evaluating surface normals by scripts with v4 beta:
face.evaluateNormal( uv ) : Function that evaluates a uv parameter value and returns a normal vector.
I'm not sure whether Michael has builtin a normal vector display or whether it needs to be displayed as per existing vector nodes

See the full list of surface evaluation functions here:
http://moi3d.com/forum/lmessages.php?webtag=MOI&msg=9547.21

Another useful feature would be the inclusion of the facility to unify normals across a polysurface.
Disregard sentence above. Also see link suggested by Michael below:
http://moi3d.com/forum/index.php?webtag=MOI&msg=7777.1620

James
https://www.instagram.com/nodeology/

EDITED: 4 Apr 2023 by JFH

Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
9581.305 In reply to 9581.304 
Hi James, for the display check out here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=7777.1620

That 'arrow3d' factory will make an annotation leader object with the property set on it for rotating the arrowhead plane so it's always facing the viewer. Should be good for a vector direction display.

re:
> Another useful feature would be the inclusion of the facility to unify normals across a polysurface.

This should happen automatically - when surfaces are joined together they should evaluate normals on a consistent side which will be to the exterior if it's a solid.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  James (JFH)
9581.306 In reply to 9581.305 
Michael, thank you for your reply.
quote:
This should happen automatically - when surfaces are joined together

Yes I misspoke, I should have said selected surfaces from separated polysurfaces.

Is there a way to ensure that faces remain unified after separating a solid object?
If you look at example below: the half the faces flip after Dodecahedron is separated as demonstrated by the direction of extrusions.


James
https://www.instagram.com/nodeology/

EDITED: 4 Apr 2023 by JFH

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
9581.307 In reply to 9581.306 
Hi James,

re:
> Is there a way to ensure that faces remain unified after separating a solid object?

I think that is supposed to be happening automatically already, can you please post your Dodecahedron so I can take a look?

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  James (JFH)
9581.308 In reply to 9581.307 
Sorry Michael, again I got that wrong. The extrude node was set to "Long"; while the extrusion works as expected in "Union" mode.

However, the issue I have had previously, as it turns out, is not with the maintenance of face normals after separation but rather it seems, a limitation of extrude factory.

If you apply extrude to attached polyhedron (regardless whether separated or not) the extrusions does not conform to face normals, instead they're unidirectional.
I am hoping that the facility to show normals in NodeEditor may be step towards solving this issue.

Sorry again, I should have looked deeper before claiming that the issue was related to surface normals.
Great job with the latest BETA,
James
https://www.instagram.com/nodeology/

EDITED: 4 Apr 2023 by JFH

Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
9581.309 In reply to 9581.308 
Hi James,

re:
> If you apply extrude to attached polyhedron (regardless whether separated or not) the
> extrusions does not conform to face normals, instead they unidirectional.

It's because the surfaces are not planar. They are degree 1 surfaces with 4 corner points but the 4 points are not all on one plane.

You could do something like evaluate a surface normal at the middle of parameter space and use that as the extrusion direction, but the regular Extrude command will only extrude each piece along a separate individual direction if the piece that's being extruded is planar.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  James (JFH)
9581.310 In reply to 9581.309 
Thanks Michael,
quote:
You could do something like evaluate a surface normal at the middle of parameter space and use that as the extrusion direction

Yes this is exactly the method I desire to recreate with nodes, and the principal reason for "NODE PROPOSAL: srfNormals" above.

Thanks for clarifying this.
James
https://www.instagram.com/nodeology/
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  MO (MO_TE)
9581.311 
I studied the links James posted earlier.
There is something I couldn't understand:
"face.evaluateNormal( uv )" function returns the surface normal on given "uv" value, right?
According to :
https://moi3d.com/forum/lmessages.php?webtag=MOI&msg=9547.25
There is no function that returns the surface "uv" value,
So I don't know what "uv" value should look like.
what is "uv" parameter type?
I tried to set the "uv" value with array numbers [0.5,0.5],also I tried to set points as "uv", but that didn't work either.

With "face.planarFrame" property I managed to get normals of planar surfaces
This property uses the "untrimmed" version of the surface
And normal appears on the corner of the "untrimmed" surface.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
9581.312 In reply to 9581.311 
Hi MO, the uv can be any object that has .x and .y properties on it. You can use a 3D point for it where you've just stored the x and y values, the z value will just be ignored.

The actual x and y (usually referred to as u and v when being used in parameter space) values you use should be in the uv rectangle for the surface's parameter range.

The lower left corner of the surface's parameter range is on a .domainMin property on the face, and the upper right corner of the surface's parameter range is on a .domainMax property on the face. Each of those face.domainMin and face.domainMax properties will give back a 2d point object with x and y values.

If you want something in the center of the parameter range you could do x = (face.domainMin.x + face.domainMax.x)/2 and y = (face.domainMin.y + face.domainMax.y)/2 .

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  MO (MO_TE)
9581.313 In reply to 9581.312 
Thank you for your helpful answer Michael
I wasn't aware that "evaluateNormal()" function returns direction of the normal, not the normal itself.
This was the tricky part.
I took James' idea and took it further.
The results are satisfying. :)




Although, I had a problem on some extruded surfaces.
I extruded an "S shape" curve, and this is the result:



After rebuilding the surface with the network command problem solved.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
9581.314 In reply to 9581.313 
Hi Mo,

re:
> Although, I had a problem on some extruded surfaces.
> I extruded an "S shape" curve, and this is the result:

Stepping by even distance amounts in parameter space does not necessarily yield even distances in 3D space, the parameter space may be squished or stretched in relation to 3D space. For an extrusion if you had uneven spacing in the control points of the curve being extruded that will have that type of squishing or stretching in it.

A rebuilt curve will have what is called an "arc length parameterization" which means the parameter space is in sync with 3D distances. The Network solved it because it implicitly does a rebuild on its input curves. If you ran Rebuild on your curve before extruding it that would also do it.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  MO (MO_TE)
9581.315 In reply to 9581.314 
Thank you
you are right, rebuilding the curves solves the problem as well.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Frenchy Pilou (PILOU)
9581.316 

EDITED: 6 Apr 2023 by PILOU

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  wayne hill (WAYNEHILL5202)
9581.317 In reply to 9581.315 
Hi Mo,

Nice progress on the Normals Node. I attempted it a while back with no success. Will be watching for updates.

Wayne
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  MO (MO_TE)
9581.318 In reply to 9581.317 
Hi Wayne
It's almost done, although I couldn't figure out some problems. (Like Invert mode)
I'll be happy if you or someone else can improve it. :)
I'll post it soon.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
9581.319 In reply to 9581.318 
Hi Mo,
Heavy! Nice results!!!

“Inverse mode”?

Not that i can do what you are doing, but just a heads up. MoI uses “Flip” as the normal direction modifier.

Flip.js????
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  MO (MO_TE)
9581.320 In reply to 9581.319 
Hi BurrMan
Thanks, I couldn't make it work with "Flip" factory, But somehow managed to do it.
It's not perfect but it works ! :)
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All

 

 
Show messages:  1-20  …  241-260  261-280  281-300  301-320  321-340  341-360  361-380  …  421-425