How to hide the red trackline when Brush drawing
I can't find it in help and option.
Found 11 posts.
Search results Show results as topic list.
Technical Discussion » How to hide the red trackline when Brush drawing
- darkdark132
- 11 posts
- Offline
Technical Discussion » why use carve->breakpoints have diffence result
- darkdark132
- 11 posts
- Offline
Technical Discussion » why use carve->breakpoints have diffence result
- darkdark132
- 11 posts
- Offline
a simple line want to explode segment
first pic use carve->breakpoints
second pic use convertline and facet->unique points
have diffence result
why carve->breakpoints can't get same result?
first pic use carve->breakpoints
second pic use convertline and facet->unique points
have diffence result
why carve->breakpoints can't get same result?
Edited by darkdark132 - July 8, 2020 02:24:33
Technical Discussion » now fixed old otl selectEdgeLoop, it can work on new ver.
- darkdark132
- 11 posts
- Offline
Technical Discussion » now fixed old otl selectEdgeLoop, it can work on new ver.
- darkdark132
- 11 posts
- Offline
download animatrix__selectEdgeLoop otl
allow Editing of Contents
use new code replace attribwrangle_traverse_edge_loops
now it can work
this is for selectEdgeRing
download animatrix__selectEdgeRing otl
allow Editing of Contents
use new code replace attribwrangle_traverse_edge_loops
now it can work
allow Editing of Contents
use new code replace attribwrangle_traverse_edge_loops
now it can work
int Contains(string collection[]; string item) { for ( int i=0; i< len(collection); ++i) if (collection[i] == item) return 1; return 0; } int Contains(int collection[]; int item) { for ( int i=0; i< len(collection); ++i) if (collection[i] == item) return 1; return 0; } // VEX grammar doesn't support functions that return arrays. // So we are using a dash separated string that represents a collection. string GetPrimsFromEdge(int input; int pt0; int pt1) { string prims; int hedge = pointedge(input,pt0,pt1); if (hedge != -1) { int count = hedge_equivcount(input, hedge); for (int i=0; i<count; ++i ) { int pr = hedge_prim(input, hedge); if (pr!=-1) { prims += itoa(pr) + "-"; hedge = hedge_nextequiv(input, hedge); } } } return prims; } int GetNextPoint (int input; int edgept0; int edgept1; int currentpt) { int pointNeighbors[] = neighbours (input,currentpt); string sprims = GetPrimsFromEdge (input,edgept0,edgept1); string aprims[] = split(sprims, "-"); int prims[]; foreach (string s; aprims) push (prims,atoi(s)); int primPoints[]; for (int i=0; i<len(prims); ++i) { int count = primvertexcount (input,prims[i]); for (int f=0; f<count; ++f) { int vertIndex = vertexindex (input, prims[i], f); int pointIndex = vertexpoint (input, vertIndex); push (primPoints, pointIndex); } } int uniquePoints[]; for (int i=0; i<len(pointNeighbors); ++i) { if ( !Contains ( primPoints, pointNeighbors[i])) push (uniquePoints,pointNeighbors[i]); } if (len(uniquePoints) == 1) return uniquePoints[0]; return -1; } string BuildEdgeList (int input; string edgeCollection) { if (edgeCollection == "") return "!*"; string edges[]; string sedges[] = split(edgeCollection, " "); int traverseCount = 0; int totalCount = len(sedges); while (len(sedges)>0) { string sedge; sedge = pop(sedges); string edgePoints[] = split(sedge,"-"); if (!Contains(edges,sedge)) { ++traverseCount; for (int c=0; c<2; ++c ) { int points[]; int pt0 = atoi (edgePoints[c]); int pt1 = atoi (edgePoints[1-c]); int currentpt = pt0; int lastPoint = pt0; push ( points, currentpt ); int nextPoint = GetNextPoint ( input, pt0, pt1, currentpt ); //printf( "nextpt: %s\n", nextPoint ); while ( nextPoint != -1 && nextPoint != lastPoint ) { pt0 = currentpt; pt1 = nextPoint; currentpt = pt1; push ( points, currentpt ); nextPoint = GetNextPoint ( input, pt0, pt1, currentpt ); //printf( "nextpt: %s\n", nextPoint ); } for (int i=0; i<len(points)-1;++i) { int p0 = min(points[i], points[i+1]); int p1 = max(points[i], points[i+1]); push(edges, sprintf("%s-%s",p0,p1)); } } push ( edges, sedge ); } //else //printf( "BYPASS: %s\n", sedge ); } string edgelist = ""; foreach ( string s; edges ) edgelist += "p" + s + " "; //printf( "Traversed: %s edges out of %s edges\n", traverseCount, totalCount ); return edgelist; } s@edgelist = BuildEdgeList(0, chs("edges"));
this is for selectEdgeRing
download animatrix__selectEdgeRing otl
allow Editing of Contents
use new code replace attribwrangle_traverse_edge_loops
now it can work
int Contains (string collection[]; string item ) { for ( int i = 0; i < len ( collection ); ++i ) if ( collection [ i ] == item ) return 1; return 0; } int Contains ( int collection [ ]; int item ) { for ( int i = 0; i < len ( collection ); ++i ) if ( collection [ i ] == item ) return 1; return 0; } // VEX grammar doesn't support functions that return arrays. // So we are using a dash separated string that represents a collection. string GetPrimsFromEdge ( int input; int pt0; int pt1 ) { string prims; int hedge = pointedge ( input, pt0, pt1 ); if ( hedge != -1 ) { int count = hedge_equivcount ( input, hedge ); for ( int i = 0; i < count; ++i ) { int pr = hedge_prim ( input, hedge ); if ( pr != -1 ) { prims += itoa ( pr ) + "-"; hedge = hedge_nextequiv ( input, hedge ); } } } return prims; } string GetNextEdge ( int input; int edgept0; int edgept1; int currentprim ) { int primPoints [ ]; int count = primvertexcount ( input, currentprim ); for ( int f = 0; f < count; ++f ) { int vertIndex = vertexindex ( input, currentprim, f ); int pointIndex = vertexpoint ( input, vertIndex ); if ( pointIndex != edgept0 && pointIndex != edgept1 ) push ( primPoints, pointIndex ); } int p0 = min ( primPoints [ 0 ], primPoints [ 1 ] ); int p1 = max ( primPoints [ 0 ], primPoints [ 1 ] ); return sprintf ( "%s-%s", p0, p1 ); } // Traverse Edges string BuildEdgeList ( int input; string edgeCollection ) { if ( edgeCollection == "" ) return "!*"; string edges [ ]; string sedges [ ] = split ( edgeCollection, " " ); int traverseCount = 0; int totalCount = len ( sedges ); while ( len ( sedges ) > 0 ) { string sedge; sedge = pop(sedges); string edgePoints [ ] = split ( sedge, "-" ); if ( !Contains ( edges, sedge ) ) { ++traverseCount; int pt0 = atoi ( edgePoints [ 0 ] ); int pt1 = atoi ( edgePoints [ 1 ] ); string sprims = GetPrimsFromEdge ( input, pt0, pt1 ); string aprims [ ] = split ( sprims, "-" ); int firstprims [ ]; foreach ( string s; aprims ) { int pr = atoi ( s ); if ( primvertexcount ( input, pr ) == 4 ) push ( firstprims, atoi ( s ) ); } for ( int i = 0; i < len ( firstprims ); ++i ) { int prims[]; int currentprim = firstprims [ i ]; push ( prims, currentprim ); string nextEdge = GetNextEdge ( input, pt0, pt1, currentprim ); while ( currentprim != -1 ) { push ( edges, nextEdge ); string edgepts [ ] = split ( nextEdge, "-" ); int pt0x = atoi ( edgepts [ 0 ] ); int pt1x = atoi ( edgepts [ 1 ] ); currentprim = -1; sprims = GetPrimsFromEdge ( input, pt0x, pt1x ); aprims = split ( sprims, "-" ); foreach ( string s; aprims ) { int pr = atoi ( s ); if ( primvertexcount ( input, pr ) == 4 && !Contains ( prims, pr ) ) { currentprim = atoi ( s ); push ( prims, currentprim ); nextEdge = GetNextEdge ( input, pt0x, pt1x, currentprim ); break; } } } } push ( edges, sedge ); } //else //printf( "BYPASS: %s\n", sedge ); } string edgelist = ""; foreach ( string s; edges ) edgelist += "p" + s + " "; //printf( "Traversed: %s edges out of %s edges\n", traverseCount, totalCount ); return edgelist; } s@edgelist = BuildEdgeList ( 0, chs("edges") );
Technical Discussion » how to make planar by prims group
- darkdark132
- 11 posts
- Offline
Technical Discussion » how to make planar by prims group
- darkdark132
- 11 posts
- Offline
in 3dsmax,it named align>make planar
just select prims,and make it to co-planar
just select prims,and make it to co-planar
Edited by darkdark132 - Feb. 17, 2020 03:22:44
Technical Discussion » how to select not in group to other group use simple way
- darkdark132
- 11 posts
- Offline
oh,not “string magroup”
string magroup “array”
i can't type array symbol
string magroup “array”
i can't type array symbol
Edited by darkdark132 - Feb. 6, 2020 18:21:05
Technical Discussion » how to select not in group to other group use simple way
- darkdark132
- 11 posts
- Offline
tamte
to group everything that is not in group yet you can create Group SOP and in the Base Group type:!?*darkdark132this can be very inefficient, if your groups don't need to overlap consider using attributes instead
have much groups(maybe group1,group2 to group100)
and,i find a bug in attribuewrangle:
string magroup = detailintrinsic(0, “primitivegroups”);
int sss = len(magroup);
setprimgroup(0, “ss”, @primnum, 1);
for(int i=0;i<sss;i++)
{if (inprimgroup(0,magroup,@primnum))
{setprimgroup(0, “ss”, @primnum, 0);}
};
it work well,and make not in group prim to a group named ss
but if you add a line:
string magroup = detailintrinsic(0, “primitivegroups”);
int sss = len(magroup);
setprimgroup(0, “ss”, @primnum, 1);
for(int i=0;i<sss;i++)
{if (inprimgroup(0,magroup,@primnum))
{setprimgroup(0, “ss”, @primnum, 0);}
};
@group_ss=0;
show the group ss in spreadsheet,it not bo zero
but if you add a prim attribuewrangle
cut @group_ss=0; to this
now show the group ss in spreadsheet,it be zero,correct
so i think have a bug between setprimgroup and @group_name
Technical Discussion » how to select not in group to other group use simple way
- darkdark132
- 11 posts
- Offline
tamte
to group everything that is not in group yet you can create Group SOP and in the Base Group type:!?*darkdark132this can be very inefficient, if your groups don't need to overlap consider using attributes instead
have much groups(maybe group1,group2 to group100)
thanks, !?* can be use in any group like SOP?
Technical Discussion » how to select not in group to other group use simple way
- darkdark132
- 11 posts
- Offline
have much groups(maybe group1,group2 to group100),and i want to select prims not in group to other group,
if use group combine,i have to type group1,group2,…. to group100,It's like a joke.
so wirte vex in attribwrangle
————————————————————-
string mygroup = detailintrinsic(0, “primitivegroups”);
int sss = len(mygroup);
for(int i=0;i<sss;i++)
{if (!inprimgroup(0,mygroup,@primnum))
{setprimgroup(0, “ss”, @primnum, 1);}
}
————————————————————-
it works,but houdini have other easy way to do it?
if use group combine,i have to type group1,group2,…. to group100,It's like a joke.
so wirte vex in attribwrangle
————————————————————-
string mygroup = detailintrinsic(0, “primitivegroups”);
int sss = len(mygroup);
for(int i=0;i<sss;i++)
{if (!inprimgroup(0,mygroup,@primnum))
{setprimgroup(0, “ss”, @primnum, 1);}
}
————————————————————-
it works,but houdini have other easy way to do it?
-
- Quick Links