ICE Modeling workshop : The Capping Tool

1,046 views
Skip to first unread message

Guillaume Laforge

unread,
May 3, 2011, 3:54:24 AM5/3/11
to soft...@listproc.autodesk.com
Good evening everyone, here is the first weekly workshop on ICE modeling !

We are going to build a compound to quickly cap a hole in a polygon mesh. I think that it is a good opportunity to learn how to switch between contexts (like from vertex to edges for example).
But not only we will learn something, but it will also give a simple but useful tool for everyday modeling tasks ;).

Here is the scenario :
 
The user will select a vertex somewhere along the hole (so it will be a border vertex) and then a command will apply an ICETree to build a polygon that will fill the hole.
You don't need to focus on the scripting side (the command) but just on the Capping compound.

The compound input will be just an integer (the index of the starting point for the cap polygon) and our output will by an execute port (to set the topology).

The algorithm could look like this :

Store the starting point in a data structure.
Find the next point on the hole and store it too. 
Repeat until the next point equal the starting point.

Use the resulting data with some topology node(s) and cap !

I made a prototype tonight, here is a little demo : http://dl.dropbox.com/u/5533643/Softimage/workshop/ICE_workshop_polycap.rar

That's all for today.

Good luck !

Guillaume







Fabricio Chamon

unread,
May 3, 2011, 4:08:26 PM5/3/11
to soft...@listproc.autodesk.com
nice one, thanks Guillaume!

here's my attempt. (scene attached).

Am I supposed to post the icetree+description already ?

Cap_Holes.rar

Guillaume Laforge

unread,
May 3, 2011, 4:30:41 PM5/3/11
to soft...@listproc.autodesk.com
Damn you are fast !

I forget to say that this workshop is not for people with a name starting by Fabricio, Ciaran, Brad, Eric or Thiago :).

Before sending your ICETree + explanation, you need to clean it a little bit ;).

In my prototype, there is only one custom attribute (the one to store the vertex array) and is more than 100X faster :P

Cheers,

Guillaume

Eric Thivierge

unread,
May 3, 2011, 4:35:00 PM5/3/11
to soft...@listproc.autodesk.com
Ah man! C'mon! Not all of us Erics can be lumped in with Meister Mootz!

--------------------------------------------
Eric Thivierge
Technical Director
http://www.ethivierge.com

Guillaume Laforge

unread,
May 3, 2011, 5:00:12 PM5/3/11
to soft...@listproc.autodesk.com
:)

Fabricio Chamon

unread,
May 3, 2011, 5:33:25 PM5/3/11
to soft...@listproc.autodesk.com
"more than 100X faster"
damn, this makes me a 3dmax and you a Softimage...not fair

ok, hands on again. One question: are you doing it with no
repeat/while nodes at all ? I've managed to build a very rough extrude
along curve compound without the "evil" nodes, but in our case, I
couldn't find a way to search for neighbours border vertices only with
arrays and intrinsic attributes...

Fabricio Chamon

unread,
May 3, 2011, 5:53:59 PM5/3/11
to soft...@listproc.autodesk.com
...also, are you usgin build array from set ?

Guillaume Laforge

unread,
May 3, 2011, 5:56:27 PM5/3/11
to soft...@listproc.autodesk.com
You are right, in our case it is not possible to do it without repetition execution are we need to store the next vertex in an array.

I'm using the While node. I'm storing the first vertex index in an array before. The while condition is : Stop if the result is equal to the first element of the array.
Then I'm using the point neighbors of the current vertex. If those points neighbors are border edge, then I pick the first one and push it in the array and repeat.

The resulting array is just the needed, points. Then I needed to find the good order and sort the array with key using its sub-indices (if it was not in the good direction).
My direction test is not always good so once the polygon added, I re-test the first vertex to know if it is still border edge. If yes, I'm inverting the polygon normal.

 
G.

Guillaume Laforge

unread,
May 3, 2011, 5:58:03 PM5/3/11
to soft...@listproc.autodesk.com
Yes, but only in the part where I try to test if the array is in the good direction. I could avoid it I think.

Guillaume Laforge

unread,
May 3, 2011, 6:00:18 PM5/3/11
to soft...@listproc.autodesk.com
> I've managed to build a very rough extrude along curve compound without the "evil" nodes, 

You could do a nice workshop with this extrusion without "evil" nodes !

Just an idea ;)

G.

Eugen Sares

unread,
May 4, 2011, 8:18:28 AM5/4/11
to soft...@listproc.autodesk.com
Guillaume,
thanks for doing this ICE workshop, it's so great to see Softimage getting
enhancements in the modelling department!

Are you planning to "release" all the things that get done here in some
repository, for everyone's benefit?
For the mere "users"...


For another workshop, may I suggest a tool which would really make a lot
of sense having: "Power Extrude".
An Operator that extrudes Curves (with Subcurves) along other Curves (also
with Subcurves), with correct corner mitering.
Know the 3ds max "Sweep" Modifier? This kind of thing.

Extrusions, or their shortcomings in SI, have been discussed many many
times here already. See Kim Aldis' TinyExtrude...
Now with ICE Modelling, time has come to catch up.


Is it theoretically possible, since ICE Modelling does not have NURBS
support yet?
We have the Compounds "Create Extrusion Along Strands", but not "Create
Extrusion Along Curve"...
Yet there's "Create Strand from Curves". Is this the way to go?


I'm thinking about doing it myself, but the learning curve looks a bit
steep at the moment, and a lot of people have a big headstart already.
Let's see...

First step could be an Op that simply creates Tubes = Extrude with only
circular cross section.
In 3ds max, Splines have a checkbox "Renderable" for this. Params are:
number of subdivisions in the cross-section, along the path, and rotation.

What say you?


By the way: my CurveTools Addon is finished. Going to release it after I'm
done with a small Tutorial Video.
Yet Curves alone are not much worth without the option to extrude
them/convert them to polys, that's why I'm asking.


All the best,
Eugen

Andreas Bystrom

unread,
May 4, 2011, 8:22:52 AM5/4/11
to soft...@listproc.autodesk.com
Getting a bit OT here, but I think a proper greeble tool in softimage is long overdue :P

maybe not the most useful tool but it would make a good workshop too I think
--
Andreas Byström
Lighting TD - Weta Digital

Fabricio Chamon

unread,
May 4, 2011, 3:10:41 PM5/4/11
to soft...@listproc.autodesk.com
Hi Eugen,

I'm currently in the process of developing an extrude along curve
compound. For now it features:

- number of subd V
- number of subd U (cross sections)
- default circular cross sections if no U shape curve is specified
- V Curve Start Pos.
- V Curve End Pos.
- translate along curve (like on "deform along curve" factory op)
- Cap Top
- Cap Bottom
- Invert Polygons
- Radius
- modulate radius by fcurve profile (along curve)
- Roll
- modulate roll by fcurve profile (along curve)
- Constraint extruded mesh to V Curve

..and this is what I'm aiming to do (or what is still missing):

- subdivision type (Per Span/Absolute)
- Spiral Displace Along Curve (control for radius offset/frequency)
- UV generation/modification

Tomorrow I'm going to post a video + the scene file (which I forgot at
my home pc), so that we can discuss and improve it.

I like the idea o having support for subcurves, will try to implement
it. Also let me know what else features you'd like to see in a tool
like this.

This has been a nice experience to me (regarding ice modeling). So
i'll try to share as much as possible from what I've learned so far.
And about the workshop, I'm all for it!

Fabricio

Fabricio Chamon

unread,
May 4, 2011, 3:11:27 PM5/4/11
to soft...@listproc.autodesk.com
"Getting a bit OT here, but I think a proper greeble tool in softimage
is long overdue :P

maybe not the most useful tool but it would make a good workshop too I think"

agreed!

Eugen Sares

unread,
May 4, 2011, 3:30:17 PM5/4/11
to soft...@listproc.autodesk.com
Fabricio, that's brilliant!! Looking very much forward to this!

But pretty please: don't forget the support for multiple Subcurves, for
both path and cross section!
Can't be more than two additional loops for all Subcurves.
It would simplify a lot of modelling situations - you don't have to mess
with 100 separate objects if you keep Curves together in one CurveList.
I'm halfway finished with that tutorial video for my CurveTool addon,
which will be a nice companion to your plugin when it comes to curve based
modelling.


Ah yes: new Revolution tools would also be cool, with Subcurve support...
Just in case you look for another challenge. =}

Best,
Eugen

On Wed, 04 May 2011 17:10:41 +0200, Fabricio Chamon <xsim...@gmail.com>
wrote:

Guillaume Laforge

unread,
May 5, 2011, 12:48:07 AM5/5/11
to soft...@listproc.autodesk.com
Hi Eugen,

>Is it theoretically possible, since ICE Modelling does not have NURBS support yet?
>We have the Compounds "Create Extrusion Along Strands", but not "Create Extrusion Along Curve"...
>Yet there's "Create Strand from Curves". Is this the way to go?

Yes, it is the way to go currently. Once the curves (without sub-curves...) "converted" to strands, it is easy to do the multi-extrusion using "Create Extrusion along Strands".

To support multi-curves/sub-curve extrusion correctly we would need to add some features. It is not possible to get curves from a group as an array of geometry.
Accessing sub-curves is not always good (I don't remember exactly the detail btw) and getting the curve normal in ICE is not enough to get the correct transformations along the curve. The curve normal from ICE is not wrong but not "rotated" from the beginning of the curve, so you could get some flip along your extrusion.  Of course, you could compute the good normal yourself so it is not impossible at all to get it.

>First step could be an Op that simply creates Tubes = Extrude with only circular cross section.

Take a look at the "Create Extrusion along Strands". There is an extrusion compound inside. It is using a repeat node, but we could avoid it I think.

Cheers

Guillaume

Fabricio Chamon

unread,
May 5, 2011, 1:39:23 PM5/5/11
to soft...@listproc.autodesk.com
Hi guys, heres a wip (compound attached): http://vimeo.com/23314473

As Guillaume said, the curve normal is not always good, so sometimes
you get a flipped crosssection range. In the compound I'm subtracting
pointpositions from the previous point, then using direction to
rotation to rotate my crosssections *before* positioning then on the
path curve... I think this could avoid the flips, but I'm not 100%
sure.

as far as performance I managed to avoid any repeat/while nodes. Let's
see if I can stay like this till the final version of the compound! =)

talking about subcurves, it's using UV to location to position the
crosssections on the path curve, so it may be possible to switch
between path subcurves already (didn't tested yet). But it would
require a complete revision to contemple all subcurves at once.

As it all started as an exercise, I didn't look at any of the factory
compounds. So please (Guillaume) let me know of any optimization I'm
missing.

Apply Extrude Along Curve.xsicompound

Guillaume Laforge

unread,
May 5, 2011, 1:50:48 PM5/5/11
to soft...@listproc.autodesk.com
Nice work ! And it is really cool to see users starting to build their own modeling tools :)

I didn't take a look at the compound, but will do soon !

Cheers,

Guillaume

Mirko Jankovic

unread,
May 5, 2011, 2:05:02 PM5/5/11
to soft...@listproc.autodesk.com
nice work!
way out of my CIe reach, no time to tinker there as well as many others I'm sure. :(

But can't wait for a nice compilation like Power ICE Modeling tools.. PIMT !!! (well we can get better name that is for sure :))) You amazing guys make tools the rest of us will think of a name for power modeling toolset :)
cheers

Sebastian Kowalski

unread,
May 5, 2011, 2:13:53 PM5/5/11
to soft...@listproc.autodesk.com
this is looking really good, and blazin' fast.
i hope i have some time left this week to catch up.
sebastian

Fabricio Chamon

unread,
May 5, 2011, 2:17:11 PM5/5/11
to soft...@listproc.autodesk.com
...found a way to extrude on all the path subcurves, icetree attached.
Performance-wise it looses a bit because of the "repeat" and the
"merge topo" nodes. But for now it serves as s quick workaround.

modifications:
- exposing the uv to location subcurve index
- instead of setting topology inside the compound it outputs the topology itself

icetree.jpg

Guillaume Laforge

unread,
May 5, 2011, 2:32:56 PM5/5/11
to soft...@listproc.autodesk.com
I like ICETree screen shots :), it is a time saver for me !

Avoiding  the Repeat node for the multi-extrusion is possible if each extrusion use the same number of subdivision. Take a look at the "Build MultiExtrusion PackedPolygons" in the "Create Extrusion Along Strands" compound for more info.

But the Repeat node is not a big problem if the number of sub-curves is less than hundred (I think) and it gives the possibility to change the U and V subdiv "per copy" using a custom attribute controlled by the repeat node !

Something to investigate :

Instead of setting the topology for each repeat, try to add the current topo in an array. Then after the repeat, use the Merge Topo Array and set the topology. 

As you don't need to access the new topology between each iteration, it could be a good way to improve the performance (but it will be maybe hidden by the repeat node bottleneck...).

Guillaume

Christopher Tedin

unread,
May 5, 2011, 2:43:21 PM5/5/11
to soft...@listproc.autodesk.com
You so totally rock! nice work. I'm going to install this right now!

Szabolcs Matefy

unread,
May 5, 2011, 2:44:45 PM5/5/11
to soft...@listproc.autodesk.com
Amazing...Now I just need to know how to drive this with strands
produced my Melena :)

Stefan Kubicek

unread,
May 5, 2011, 2:50:29 PM5/5/11
to soft...@listproc.autodesk.com
Bingooooooo!


--
-------------------------------------------
Stefan Kubicek Co-founder
-------------------------------------------
keyvis digital imagery
1050 Vienna Wehrgasse 9 Austria
Phone: +43/699/12614231
--- www.keyvis.at ste...@keyvis.at ---
-- This email and its attachments are
--confidential and for the recipient only--

Fabricio Chamon

unread,
May 5, 2011, 3:09:57 PM5/5/11
to soft...@listproc.autodesk.com
"Instead of setting the topology for each repeat, try to add the
current topo in an array. Then after the repeat, use the Merge Topo
Array and set the topology"

Indeed. Thanks for the tip.

@Szabolcs: nice idea. It shouldn't be too difficult to use pointcloud
strands as well. Let me see here...

Guillaume Laforge

unread,
May 5, 2011, 3:19:23 PM5/5/11
to soft...@listproc.autodesk.com
Or use the "Create Extrusion Along Strands" factory compound ;)

-----Original Message-----
From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Fabricio Chamon
Sent: Thursday, May 05, 2011 11:10 AM
To: soft...@listproc.autodesk.com
Subject: Re: "Power Extrude"

winmail.dat

Fabricio Chamon

unread,
May 5, 2011, 3:26:01 PM5/5/11
to soft...@listproc.autodesk.com
lol!!! yes

Guillaume Laforge

unread,
May 5, 2011, 3:31:50 PM5/5/11
to soft...@listproc.autodesk.com
Here is a screen shot showing the principle for the Cap compound : http://dl.dropbox.com/u/5533643/Softimage/workshop/CapBordersCompound.jpg

As it is a one week workshop, I will send the final compound tomorrow ;). It will be an addon updated at each workshop with the compound(s) and the plugin to apply it. I could add Fabricio Extrude compound also when it will be finished !

Cheers,

Guillaume

Eugen Sares

unread,
May 5, 2011, 3:53:04 PM5/5/11
to soft...@listproc.autodesk.com
You da man, dude, I tell you!!! ;)

One more thing:
if you did not so already -
on sharp corners on the extrusion path, could you possibly please
compensate the cross section width by a factor so that the outlines stay
parallel to the path (= correct corner mitering) ?
factor = 1 / sin( angle(prevSegment, nextSegment)/2 )
This is a very important feature for geometric/architectural modelling,
believe me!
Been hoping for this for ages now...

Thanks so much!!


On Thu, 05 May 2011 17:26:01 +0200, Fabricio Chamon <xsim...@gmail.com>
wrote:

> lol!!! yes

Szabolcs Matefy

unread,
May 6, 2011, 6:14:41 AM5/6/11
to soft...@listproc.autodesk.com
I asked it because I need to make geometry hair out of melena, for
example. Unfortunately for some reason melena strands with the ice
compound you mention produce mesh, with each polygon in the center...

Robert Chapman

unread,
May 6, 2011, 9:53:42 AM5/6/11
to soft...@listproc.autodesk.com
thanks Guillaume,

tried to build this from your screen shot last night, got stuck on
creating 'get last value in vertex array' node figured it might be a
pop from array from the 'cap_vertexarray' but I couldn't seem to get
point location from this without it going red. Also would not know how
to begin to create the 'test double edges' node , but the rest of the
tree , although initially daunting, was fine with constructing from
Fabricio's and yours previous ICE modelling tree examples . there a
whole load of new attributes to learn & pick from now, but Ive not
done much work with arrays yet so its more to do with my rudimentary
logic skills rather than anything wrong with ICE modelling. this is
where the practice is going to help :)

regards,

Rob

Guillaume Laforge

unread,
May 6, 2011, 11:01:09 AM5/6/11
to soft...@listproc.autodesk.com
If the extrusion is not generated it could be for two reasons.
"Create Extrusion Along Strands" doesn't need some orientation attributes on the point cloud. That's because it does its own calculation to find the good orientation. To do this, it is using the point position and the first strand position as a tangent basis. So maybe Melena system create the first strand position on the point position ? If so, the extrusion will not work. What you could try is doing a remove form array on strand position to remove the first element (as it is not needed in fact). 
Also, if Melena create strands with some non constant number of positions (like 10 strand position on point 0 and 15 on point 1), it could give some trouble.

Just a guess.

Guillaume

Guillaume Laforge

unread,
May 6, 2011, 1:12:51 PM5/6/11
to soft...@listproc.autodesk.com
Hi Rob, here is the final compound if you want to see the answer :) :  ICE Workshop Addon

You will see that it is not so complicate. In my first test I was trying to get the good vertex array direction to avoid flipped polygons for the cap. It was some rather boring graph dealing with arrays.
Finally, it is easier to create the capping without checking for the good normal orientation and then do the flipping only if the selected vertex is still "border edge" after the capping. It use two "Set Topology" instead of one, but it is fast because there is no complex array operations to switch between component types.

About, the addon :
The idea is to add any new ICE topology compound published here in it. it also include a python plugin to define some menu callbacks used by the compound(s).

For this first version 0.1, it is very small, there is just the Cap Borders compound, and the plugin will load a menu in the right click contextual menu when the polymesh is in sub-component selection mode.
Just select a vertex on the border before clicking on the menu to cap the corresponding borders.

I will increment the addon version at each update, and you willl need to remove the old one before installing the new one !

Cheers !

Guillaume

Fabricio Chamon

unread,
May 6, 2011, 6:12:48 PM5/6/11
to soft...@listproc.autodesk.com
"To do this, it is using the point position and the first strand
position as a tangent basis. So maybe Melena system create the first
strand position on the point position ?"

yes, took me some minutes to figure this out when trying the "create
extrusion along strands" with my strand tree compounds. That's exactly
what I do, create the first strand segment on the same position as my
points. An alternative would be provide the users a "start strand
segment index" option on the compound, so that the meshing starts at a
defined index on the strandpostiion array.

@eugen: I'm already looking into the corner mitering thing. few more
days for an update... =)

Fabricio Chamon

unread,
May 6, 2011, 6:17:43 PM5/6/11
to soft...@listproc.autodesk.com
Thanks a lot for the workshop and compound Guillaume. It was a nice
challenge! Willing to see much more coming...

Guillaume Laforge

unread,
May 6, 2011, 6:29:42 PM5/6/11
to soft...@listproc.autodesk.com
>  An alternative would be provide the users a "start strand segment index"

Yep that's an idea. But from my point of view, the first strand position should not be the same that point position. I know that several factory compounds got it like this (strandposition[0] = pointposition) but honestly, it doesn't make sense to me.
But we will think about it as this compound got some other problems that should be fixed btw.

Guillaume

Guillaume Laforge

unread,
May 6, 2011, 6:30:09 PM5/6/11
to soft...@listproc.autodesk.com
I just started a new one ;)

Claude Vervoort

unread,
May 7, 2011, 4:36:44 PM5/7/11
to soft...@listproc.autodesk.com
Thanks Guillaume for initiating this. That gave me a good excuse to start playing with ICE modelling. I did not want to look at any answer, so it took me quite some experiments to get something that somewhat works (the documentation is quite good, if a bit succinct) . I think I am due to a oh! moment when I will look at the actual solution!

Doing ICE modelling is definitely a mind set to acquire (at least for me), especially the fact that you work in a given context. So for example I did not see a simple way from a vertex to get the other connected vertices. The only way I have found to do this is:
- First collect the connected edges (in vertex context, filtering the vertices by vertex id) and get the associated edges
- then in another subtree executing in edge context, filter by the edges just found and get the associated vertices.

Thanks again for setting this up! If interested you can set my commented ICE Tree at: http://claudeonthe.net/images/si/cap_ice_modeling_challenge.jpg One key element missing is to produce the cap in the correct winding order. For that I am not sure.

Anyway time to look at the answer and move on to the next challenge :)

Claude

Guillaume Laforge

unread,
May 9, 2011, 4:30:42 PM5/9/11
to soft...@listproc.autodesk.com
Hi Claude,

Your tree is rather good, and it looks like you are not an ICE beginner :), are you ?

>  I think I am due to a oh! moment when I will look at the actual solution!

Well, you will find my solution not so interesting from an educational point of view ;). I thought that this scenario would be a good opportunity to learn how to switch between contexts. But in fact, I found that using the PointNeighbors attribute was the way to do it and so I skipped this   part :-/.

> So for example I did not see a simple way from a vertex to get the other connected vertices. 

The PointNeighbors attribute do the job for you (finding the point locations connected by an edge to the current point) ;).

But it is always good to know how to do it without this attribute, (and so your comment is really useful) because sometime, we can't deal with point locators to get the data if we are not in per point context. And yes, you are right about the workflow (getting connected edges etc...)

For those interested on how to switch between context here is a sample scene :

http://dl.dropbox.com/u/5533643/Softimage/GetPointNeighbors.scn

The idea is to switch from a per element context to a per object context to store an array of indices. This data can be accessed without problem from all per element contexts.

Cheers,

Guillaume 

Claude Vervoort

unread,
May 10, 2011, 2:59:33 AM5/10/11
to soft...@listproc.autodesk.com
I have been on the ICE before but not in the modeling arena though, and not for long enough since I was not aware at all of pointNeighbors (when I think how much time I spent trying to get to those :) ). Thanks for the scene too!

BTW when I try to run the plugin here, I have this error:

 ERROR : 21000-EDIT-PrivateGetCompoundConstructionMode - Unspecified failure - [line 712 in D:\Program Files\Autodesk\Softimage 2012\Application\DSScripts\operators.vbs]
Application.ApplyICEOp("Cap Borders", "", "", "siUnspecified")
# ERROR : Traceback (most recent call last):
#   File "<Script Block 2>", line 35, in CapBorders_Callback
#     ICETree = si.ApplyICEOp( "Cap Borders", None, None, C.siUnspecified )
#   File "<COMObject XSI.Application>", line 2, in ApplyICEOp
# COM Error: Unspecified error (0x-7fffbffb) - [line 34 in C:\Users\Claude\Autodesk\Softimage_2012\Addons\ICEModelingTools.0.1\Application\Plugins\ICEModelingMenuPlugin.py]

I haven't looked too much into it, don't spend anytime on it but if you have a quick idea about what I should look at, i'll take it.


Claude

Guillaume Laforge

unread,
May 10, 2011, 9:40:49 AM5/10/11
to soft...@listproc.autodesk.com
Hi Claude,

It looks like you don't have python working correctly on your machine. I'm not an expert in this area btw. First thing I would try is to open a Softimage command prompt and run : runonce.bat

If it doesn't help, I'm sure you will find a Softimage Python specialist here to help you :)

Cheers

Guillaume

Claude Vervoort

unread,
May 10, 2011, 11:57:00 AM5/10/11
to soft...@listproc.autodesk.com
Oh thanks for the pointer, i've played a bit with Python on SI before, but that is my fresh 2012 so maybe I need to update something...

Claude

Stephen Blair

unread,
May 10, 2011, 1:25:01 PM5/10/11
to soft...@listproc.autodesk.com
I get the same error, so I'll check it out...

From: softimag...@listproc.autodesk.com [mailto:softimag...@listproc.autodesk.com] On Behalf Of Claude Vervoort
Sent: May-10-11 7:57 AM
To: soft...@listproc.autodesk.com

Subject: Re: ICE Modeling workshop : The Capping Tool

Oh thanks for the pointer, i've played a bit with Python on SI before, but that is my fresh 2012 so maybe I need to update something...

Claude


On Tue, May 10, 2011 at 5:40 AM, Guillaume Laforge <guillaume....@gmail.com<mailto:guillaume....@gmail.com>> wrote:
Hi Claude,

It looks like you don't have python working correctly on your machine. I'm not an expert in this area btw. First thing I would try is to open a Softimage command prompt and run : runonce.bat

If it doesn't help, I'm sure you will find a Softimage Python specialist here to help you :)

Cheers

Guillaume

On Mon, May 9, 2011 at 10:59 PM, Claude Vervoort <claude....@gmail.com<mailto:claude....@gmail.com>> wrote:
I have been on the ICE before but not in the modeling arena though, and not for long enough since I was not aware at all of pointNeighbors (when I think how much time I spent trying to get to those :) ). Thanks for the scene too!

BTW when I try to run the plugin here, I have this error:

ERROR : 21000-EDIT-PrivateGetCompoundConstructionMode - Unspecified failure - [line 712 in D:\Program Files\Autodesk\Softimage 2012\Application\DSScripts\operators.vbs]
Application.ApplyICEOp("Cap Borders", "", "", "siUnspecified")
# ERROR : Traceback (most recent call last):
# File "<Script Block 2>", line 35, in CapBorders_Callback
# ICETree = si.ApplyICEOp( "Cap Borders", None, None, C.siUnspecified )
# File "<COMObject XSI.Application>", line 2, in ApplyICEOp
# COM Error: Unspecified error (0x-7fffbffb) - [line 34 in C:\Users\Claude\Autodesk\Softimage_2012\Addons\ICEModelingTools.0.1\Application\Plugins\ICEModelingMenuPlugin.py]

I haven't looked too much into it, don't spend anytime on it but if you have a quick idea about what I should look at, i'll take it.


Claude


On Mon, May 9, 2011 at 12:30 PM, Guillaume Laforge <guillaume....@gmail.com<mailto:guillaume....@gmail.com>> wrote:
Hi Claude,

Your tree is rather good, and it looks like you are not an ICE beginner :), are you ?

> I think I am due to a oh! moment when I will look at the actual solution!

Well, you will find my solution not so interesting from an educational point of view ;). I thought that this scenario would be a good opportunity to learn how to switch between contexts. But in fact, I found that using the PointNeighbors attribute was the way to do it and so I skipped this part :-/.

> So for example I did not see a simple way from a vertex to get the other connected vertices.

The PointNeighbors attribute do the job for you (finding the point locations connected by an edge to the current point) ;).

But it is always good to know how to do it without this attribute, (and so your comment is really useful) because sometime, we can't deal with point locators to get the data if we are not in per point context. And yes, you are right about the workflow (getting connected edges etc...)

For those interested on how to switch between context here is a sample scene :

http://dl.dropbox.com/u/5533643/Softimage/GetPointNeighbors.scn
The idea is to switch from a per element context to a per object context to store an array of indices. This data can be accessed without problem from all per element contexts.

Cheers,

Guillaume

winmail.dat

Stephen Blair

unread,
May 10, 2011, 1:46:40 PM5/10/11
to soft...@listproc.autodesk.com
Hi

In the ICE Tree viewer, open the Preset Manager and click the Refresh button.
Check that Cap Borders is available in the Preset Manager.

After that, the Cap Borders menu command should work (it wasn't finding the compound).

A restart might fix the problem too, but I didn't try that.

Thanks

winmail.dat

guillaume laforge

unread,
May 10, 2011, 1:59:09 PM5/10/11
to soft...@listproc.autodesk.com
Thanks Stephen for the help :),

Addon install won't do a scan of the preset manager, so it explains the pb on the first try

Guillaume Laforge

Sent from my iPhone

> <winmail.dat>

Fabricio Chamon

unread,
May 17, 2011, 7:26:32 PM5/17/11
to soft...@listproc.autodesk.com
After 2 very busy weeks, I found some time for an update:
http://vimeo.com/23859554

new features:

- correct corner mitering (thanks Eugen for providing the formula and idea)
- support for multiple path subcurves (choose subcurve index or use
all subcurves)
- subdV/subdU renamed to Path curve and Profile curve for better readability
- corrected cross section rotations (non-flipping normals) - there was
a bug in the previous version
- constraint to path flag
- split radius and roll along curve controls into "control compounds"
for cleaner/smaller interface
- all main parameters are now array based, which means that
radius/roll/start/end, etc can be controlled per subcurve.
- mesh has a new Self.PathSubcurveIndex variable that can be used to
modulate any extrusion effect (also per subcurve).

roadmap:

- support for multiple profile subcurves
- support for closed curves


compounds are attached. Let me know what you think, bugs, requests..etc.
Also should mention that the correct cross sections rotations were
"stolen"/adapted from Guillaume's Extrusion along strands compound.
(thanks Guillaume)

ps: Eugen, when are you planning to release your curve tools ? I'm
sure it would help me improving the compounds...new ideas, etc

Apply Extrude Along Curve.rar

Fabricio Chamon

unread,
May 17, 2011, 7:44:54 PM5/17/11
to soft...@listproc.autodesk.com
"roadmap:

- support for multiple profile subcurves
- support for closed curves"


...oh and sure...UVs

Christopher Tedin

unread,
May 17, 2011, 8:08:09 PM5/17/11
to soft...@listproc.autodesk.com
Awesome.

Eugen Sares

unread,
May 17, 2011, 10:07:58 PM5/17/11
to soft...@listproc.autodesk.com
Hi!

On Tue, 17 May 2011 21:26:32 +0200, Fabricio Chamon <xsim...@gmail.com>
wrote:

> After 2 very busy weeks, I found some time for an update:


First, it's so great so see your Operator evolve! Brilliant job!
Did you release it somewhere? Will you charge something for it?
Need a "beta-tester"... ? ;)

My CurveTools are actually already released, but only on xsiforum.de.
I'd like to do a simple video demo first before I put it on the "mighty"
mailinglist, and I'd also like to finish support for Isopoints in
SplitSubcurves (trickier than in looked).
Got a hint from Alok Gandhi - thanks to him!! - only 2 days ago for that,
and didn't find the time to finish it yet.

Soon!!
Best regards,
Eugen

Eugen Sares

unread,
May 17, 2011, 10:15:32 PM5/17/11
to soft...@listproc.autodesk.com
Forget that release question, you attached it!
The hour is late...
.ᅵ}

On Wed, 18 May 2011 00:07:58 +0200, Eugen Sares <soft...@keyvis.at>
wrote:

Eugen Sares

unread,
May 18, 2011, 12:51:13 PM5/18/11
to soft...@listproc.autodesk.com
Fabricio,
here a few suggestions how you to boost "Extrusion along Curve" to the
swiss army knife of all extrusion ops:


- Support for multiple open/closed profile/path Subcurves

- UVs
(like you said)


- Script to apply it comfortably, maybe in menu Model>Create>PolyMesh
(Should ICE modeling ops not reside somewhere under ICE?)


- If no path Curve is connected, the Operator could extrude along an Axis,
with param X/Y/Z to choose.
This would put two Ops in one - no additional "Extrude along Axis" needed
anymore. Very handy!
So if neither a Profile nor a Path is connected, a Cylinder is generated.


- Important: subdivision params should define the subdivs on a Segment
(Curve part between two Knots), not along the whole Curve (both path and
profile)!
In other words, there should always be a subdivision on every Curve Knot.
If the subdiv param is cranked down to 1, Segments become linear.
It's impractical having to adapt the number of path subdivs when the
number of points/knots changes.
The factory "Extrusion along Curve" Op works that way, too, also the
"Hardware display" node of a Curve (degree 2 or 3).


- Experimental: define Material IDs per Curve segment, and give that ID to
the created Polygons (3ds max has this).
That way, it won't be necessary to create Material Clusters on the
polymesh, because Clusters won't update with Curve changes, and the
Material assignment gets messed up.
There's no "Segment" Component in Softimage like in max yet... I wonder if
there a way to store additional information along a Curve that updates
automatically when it changes?


For convenience:
- Mirror Profile across X/Y

- Shift/Translate Profile X/Y


What do you think?
Best,
Eugen

Fabricio Chamon

unread,
May 18, 2011, 1:19:53 PM5/18/11
to soft...@listproc.autodesk.com
I think those are all great improvements!
thanks for the feedback Eugen. Let's see if I can handle all your requests.. =)

already working on an update...

Stefan Kubicek

unread,
May 18, 2011, 1:20:51 PM5/18/11
to soft...@listproc.autodesk.com
One more: adaptive subdivisions depending on curvature

I no one else wants it and if OK with Fabricio I'd volunteer for creating proper menu entries and a custom command that applies the compound (and ICE Tree if not already present) , sets and connects the required Get Data nodes and inspects the PPG's (as long as Ctrl is not pressed) for a streamlined workflow that is more in line with Softimage's modeling paradigms.


--
-------------------------------------------
Stefan Kubicek Co-founder
-------------------------------------------
keyvis digital imagery
1050 Vienna Wehrgasse 9 Austria
Phone: +43/699/12614231
--- www.keyvis.at ste...@keyvis.at ---
-- This email and its attachments are
--confidential and for the recipient only--

Eugen Sares

unread,
May 18, 2011, 1:36:34 PM5/18/11
to soft...@listproc.autodesk.com
*thumbs up*
You know, this Operator of yours is among the things I always missed in SI
since I switched to Softimage.
The others are:
- better Curve Tools - did my best as an amateur coder to fill some of
those holes.
- a better Renderer for complex GI scenes than mray - Arnold and VRay are
underways.

Not much left to justify using ol' 3ds max shortly... for any job.


On Wed, 18 May 2011 15:19:53 +0200, Fabricio Chamon <xsim...@gmail.com>
wrote:

> I think those are all great improvements!

Fabricio Chamon

unread,
May 18, 2011, 5:21:18 PM5/18/11
to soft...@listproc.autodesk.com
"One more: adaptive subdivisions depending on curvature" - added to the list!
thanks Stefan. And feel free to add menu entries/custom commands, in
the end I'll pack everything inside an addon.

Kim Aldis

unread,
May 19, 2011, 6:23:46 PM5/19/11
to soft...@listproc.autodesk.com
two things with extrusion; uneven segments and sharp corners. I'm going back a few years without having touched any of this so bear with me. You may also have considered this Fabricio, I only skimmed your video.

If your control points aren't evenly spread then the segments in your curve are going to vary considerably in their length as you move along your curve. This is a problem to some degree for resolution but mostly it's a horrible thing to have to deal with when you're texturing.

If you have sharp corners in your curve, segment edges will probably miss the corner points and you'll get horrible detail there. Worse still, if you're animating your curve you'll get nasty animated artefacts as the segment edges kind of travel over the corners.

You can get round this things to some degree by calculating points on a per segment basis, working out how many segments of a particular length you need for each segment. This will be a non integer value so you tweak the length for each segment to make an integer fit. The segments won't be exactly the same length but they'll be close enough not to matter.

Hope this makes sense.

Fabricio Chamon

unread,
May 19, 2011, 9:34:13 PM5/19/11
to soft...@listproc.autodesk.com
Hey Kim, thanks for having your word on it. Yeah, I'm definitely going
change the cross sections subdivision method.

I'm considering 3 subdivision types:

- Segment length dependent (the way it is right now)
- Evenly distributed, fixed (equally spread, but does not change
number of cross sections after curve tweaking)
- Evenly distributed, spacing ratio (equally spread, and changes the
number of cross sections in relation to the path curve length)

all three should produce good UVs (first one will have stretching
compensation for the changing segment lengths), with u/v scaling and
independent controls for the capping parts.

Talking about the segment angles, maybe I could get the closest cross
section to any sharp corner and snap it to the corner depending on an
angle threshold (let's say less than 90 degree angles), this could
avoid artefacts in animated extrusions.

what do you think ?

again, thanks for the tips.

Kim Aldis

unread,
May 20, 2011, 6:47:41 AM5/20/11
to soft...@listproc.autodesk.com
kind of what I did but rather than snapping, I tweaked the segment width to make it all fit. If you snap to the corner that last segment can sometimes be noticeably larger than the rest. This is what I did in tinyExtrude, it worked well enough that I was thinking about a general purpose tool for spline interpolation. The corner issue is just as much of a problem when animating along splines.

Eugen Sares

unread,
Jun 10, 2011, 12:03:32 PM6/10/11
to soft...@listproc.autodesk.com
Hi Fabricio,
just curious about the progress of your extrude compound.
Would be cool to have it in the toolbox... there's a job up ahead where it
might come in handy.
Cheers!
Eugen

Fabricio Chamon

unread,
Jun 10, 2011, 2:31:12 PM6/10/11
to soft...@listproc.autodesk.com
Hi Eugen,

still working on it on my spare time. got some new features working already:

- Default Extrusion Start/End vectors (builds a cylinder in case
there's no path curve connected)
- support for open/closed profile and path curves (user has to check a
flag as there's no way in ice to know if a curve is open or closed. Or
is there?)
- new path subdivision rules:
- Segment Length Based
- Evenly Spaced - Fixed
- Evenly Spaced - Spacing Ratio
- Wall (optimized) - 1 to 1 extrusion segment for each curve segment
- Custom Point Positions (uses an user provided 3d vector array for
path point positions)
- Per component (vertex and poly) ice attributes (cross section index,
cross section normalized, path subcurve) - which can be further used
for modulating effects along curve, for material assignig, and so
on...

actually it needs a little more testing as the compound grew a lot in
features. I have to check if all combinations are working (subcurve
mode vs. subcurve rule vs. using arrays for parameters...etc)

I'll make a video of the new features and post later today along with
the updated compounds + sample scene. Maybe you can help me testing
all the stuff =)

Christopher Tedin

unread,
Jun 10, 2011, 2:39:41 PM6/10/11
to soft...@listproc.autodesk.com
Awesome, thanks!

Eugen Sares

unread,
Jun 10, 2011, 5:05:32 PM6/10/11
to soft...@listproc.autodesk.com
Great news!!
I'll be happy to do some testing!

On Fri, 10 Jun 2011 16:39:41 +0200, Christopher Tedin <cte...@comcast.net>
wrote:

Fabricio Chamon

unread,
Jun 11, 2011, 3:03:14 AM6/11/11
to soft...@listproc.autodesk.com
update 2: http://vimeo.com/24948031

attached a sample scene + compounds (read through the ice tree
comments on the sample scene, there are some important info there).

there are still some bugs concerning closed path curves and multi
subcurves extrusions. (one specially bad is the wrong corner mitering
on the last cross section of closed wall type curves (using the wall -
optimized path subd rule)

next on the list:

- UVs


- support for multiple profile subcurves

- Spiral Displace Along Curve (control for radius offset/frequency)
- adaptive subdivisions depending on curvature

Now let's find those damn bugs. =)

Ice_Extrude_Along_Curve.rar

Ed Schiffer

unread,
Jun 12, 2011, 12:33:50 AM6/12/11
to soft...@listproc.autodesk.com
hey Fabricio,
over here the Start and End Positions stopped working.

in your sample scene it works fine, even if I duplicate the extruded mesh. but if I create one from scratch it doesn't...

//it's quite amazing what you've been doing with ICE. big thanks

Fabricio Chamon

unread,
Jun 12, 2011, 1:01:32 AM6/12/11
to soft...@listproc.autodesk.com
can you share the scene so that I can take a look?
thanks

Ed Schiffer

unread,
Jun 13, 2011, 6:25:31 PM6/13/11
to soft...@listproc.autodesk.com
here's the link again: http://dl.dropbox.com/u/443319/EAC_noEndPositions.scn

(I didn't know about the attachment size limit. thx Jason)

oh, I tested it on Softimage 2012 SP1, Fabricio.

cte...@comcast.net

unread,
Jun 13, 2011, 7:22:15 PM6/13/11
to Ed Schiffer, soft...@listproc.autodesk.com
Yeah, same here. Also profile subd also not working. 2012 sp1

Otherwise, brilliant.

Christopher Tedin


----- Reply message -----
From: "Ed Schiffer" <edsch...@gmail.com>
Date: Sat, Jun 11, 2011 7:33 pm
Subject: "Power Extrude"
To: <soft...@listproc.autodesk.com>

hey Fabricio,
over here the Start and End Positions stopped working..

in your sample scene it works fine, even if I duplicate the extruded mesh. but if I create one from scratch it doesn't....

Fabricio Chamon

unread,
Jun 14, 2011, 6:59:27 PM6/14/11
to soft...@listproc.autodesk.com
ops...it seems that my last message was blocked by the attachment
size. so here it is again:

@ Ed: download the fixed compound at:
http://dl.dropbox.com/u/17263464/Create%20Extrusion%20Along%20Curve.xsicompound.
(also please delete the old Apply Extrude Along Curve. I've changed
the main compound name and category, because it is rather a generator
than a modifier)

@ Christopher: forgot to say that profile subd for custom shapes is
still on my todo list. It only updates the default tube extrusion
(when you have nothing plugged on the profile curve input)

thanks for the feedback guys

Ed Schiffer

unread,
Jun 14, 2011, 8:41:26 PM6/14/11
to soft...@listproc.autodesk.com
Hi Fabricio
sorry, but it is still not working for me... tried in 2012 and 2012 SP1.

as I said earlier, your sample scene works fine, and the "translate along curve" continues to work too, if that gives you any clues...

Fabricio Chamon

unread,
Jun 15, 2011, 12:24:46 AM6/15/11
to soft...@listproc.autodesk.com
damn gmail formatting...I think this part was lost in the last message:

"...(also please delete the old Apply Extrude Along Curve. I've changed


the main compound name and category, because it is rather a generator
than a modifier)

@ Christopher: forgot to say that profile subd for custom shapes is
still on my todo list. It only updates the default tube extrusion
(when you have nothing plugged on the profile curve input)"

does it work now ?

Ed Schiffer

unread,
Jun 15, 2011, 2:02:24 PM6/15/11
to soft...@listproc.autodesk.com
I had already deleted the "Apply Extrude Along Curve", but it didn't work. I tried using it by User instead of by Workgroup, but got the same error.
Is it only happening to me? I'm testing it at work and home, both on Win7.

Fabricio Chamon

unread,
Jun 15, 2011, 3:58:19 PM6/15/11
to soft...@listproc.autodesk.com
oh, now I see your problem. I though you were talking about the
star/end default cylinder extrusion (that happens in case there's no
path curve provided). This also had a small bug.

Weird, for some reason the start/end extrusion ports got disconnected
inside the compound, that's why it was not working....

updated compound:
http://dl.dropbox.com/u/17263464/Create%20Extrusion%20Along%20Curve.xsicompound

Eugen Sares

unread,
Jun 15, 2011, 4:52:39 PM6/15/11
to soft...@listproc.autodesk.com
Hope it's allright to attach a screenshot...

Fabricio,
thanks again for pushing this further!!


I still miss a subdivision rule where every Curve Knot gets a subdivision
reliably.
Like what the old ExtrusionAlongCurve Op does (By the way: you probably
should find another name for your Compound, to avoid confusion).
Is "wall optimized" supposed to work that way? Doesn't look so.


The bottom three 3s in the example are one CurveList with 3 Subcurves, not
separate CurveLists.
The Compound makes no difference in subdivisions depending on the curve
degree, but ideally there should be an optimization for linear segments,
so they don't get subdivided.
I think we had this before: a threshold angle for subdivision would be
cool.


Is there really no way to detect wether a Curve is closed or not?
Maybe you could detect it this way:
on open Curves: NumberOfKnots = NumberOfPoints + Degree - 1
on closed Curves: NumberOfKnots = NumberOfPoints + 1

(NumberOfKnots with multiplicity. KnotVector [0,0,0,1,2,3,4,4,4] has 9
Knots.)


Cheers,
Eugen


On Wed, 15 Jun 2011 17:58:19 +0200, Fabricio Chamon <xsim...@gmail.com>
wrote:

> oh, now I see your problem. I though you were talking about the

ExtrudeAlongCurveScreenshot.jpg

Ed Schiffer

unread,
Jun 15, 2011, 5:06:26 PM6/15/11
to soft...@listproc.autodesk.com
hey Fabricio,
now it seams to be fine. thanks!

strangely enough, these ports are disconnected in your sample scene too - and they're working.
i'll keep testing.

Fabricio Chamon

unread,
Jun 16, 2011, 2:24:08 PM6/16/11
to soft...@listproc.autodesk.com
thanks Eugen and Max, I'll take a look at these issues asap.

Fabricio Chamon

unread,
Jul 13, 2011, 7:18:48 PM7/13/11
to soft...@listproc.autodesk.com
hey guys, after a long pause I'm finally up to some revisions on the
tool. Unfortunately I have instantly hit a wall I can't find a way to
climb. The thing is:

1) ICE does not provide a curve degree attribute
2) (worst) I can't access curve knot positions if dealing with
multi-subcurves (with different point count)

now some thoughts on number 2:

- on a curve, PointPosition attribute returns the control points, not the knots.
- "point index to location" does returns the knots, once I know the
exact point index to look for.
- knowing the point index on a single curve is simple, because I have
IDs and total number of points to compare.
- knowing the point index on a subcurve seems impossible, since I
can't retrieve the number of points on one specific subcurve.

the ideal scenario would be to have a "Curve or Face Index" input on
the "Point index to location" node (just like what "UV to location"
has). but there isn't...
so how could I calculate by myself the knot positions for a specific
subcurve, given its index ?

I could trigger the compound creation/hook-up from a custom command
which would read those attribtues via object model and pass the to
ice, but that would loose all the ice interactivity and sould be a
crappy workaround. =)

thanks

Eugen Sares

unread,
Jul 14, 2011, 2:35:22 PM7/14/11
to soft...@listproc.autodesk.com
Hi! Great you're still on it!!


Am 13.07.2011, 21:18 Uhr, schrieb Fabricio Chamon <xsim...@gmail.com>:

> hey guys, after a long pause I'm finally up to some revisions on the
> tool. Unfortunately I have instantly hit a wall I can't find a way to
> climb. The thing is:
>
> 1) ICE does not provide a curve degree attribute

You might know -
you can conclude by the number of points P and the number of knots K to
the degree D, but non-ambiguous only on open curves.

Degree 1, open or closed:
K = P


Degree 2 and 3
open:
K = P + D - 1

closed:
K = P + 1
Same for D 2 and 3, unfortunately.

Pretty sloppy anyway leaving that out in the ICE SDK...

Ok... we know Curves (and Surfaces) are still officially unsupported in
ICE Modelling, at least setting them.
Hope they are soon! Same for Subcurves.

> 2) (worst) I can't access curve knot positions if dealing with
> multi-subcurves (with different point count)
>
> now some thoughts on number 2:
>
> - on a curve, PointPosition attribute returns the control points, not
> the knots.
> - "point index to location" does returns the knots, once I know the
> exact point index to look for.
> - knowing the point index on a single curve is simple, because I have
> IDs and total number of points to compare.
> - knowing the point index on a subcurve seems impossible, since I
> can't retrieve the number of points on one specific subcurve.
>
> the ideal scenario would be to have a "Curve or Face Index" input on
> the "Point index to location" node (just like what "UV to location"
> has). but there isn't...
> so how could I calculate by myself the knot positions for a specific
> subcurve, given its index ?
>
> I could trigger the compound creation/hook-up from a custom command
> which would read those attribtues via object model and pass the to
> ice, but that would loose all the ice interactivity and sould be a
> crappy workaround. =)
>
> thanks


My sympathies... had my share of headaches writing those CurveTools myself
(JScript).

By the way, here's the link to those, just in case you're looking for an
easier way to deal with subcurves:

http://code.google.com/p/keyvis-dev/downloads/list

That's in the addon for now:

AttachCurves
BlendSubcurves
DeleteSubcurves
DuplicateSubcurves
ExtractAllSubcurves
InvertSubcurves
LogCurveData
MergeSubcurves
OffsetSubcurves
OpenCloseSubcurves
Scissor(=Split)Subcurves

Cheers!
Eugen

Fabricio Chamon

unread,
Jul 14, 2011, 5:59:26 PM7/14/11
to soft...@listproc.autodesk.com
thanks for the explanations Eugen!

"By the way, here's the link to those, just in case you're looking for
an easier way to deal with subcurves:"

already have it installed! =)
is this a new version or something ?

ok, so I think I'm going halfway between ice and scripting...I'll
provide 2 compounds: one for single curve extrusions, and another for
multiple subcurves extrusions.

If you want to use the second one, a custom command should be executed
first, which will generate a read only custom property inside the
curve, and this will be a data provider for missing ice parameters
(like number of knots/degree per subcurve, and any other needed
params). In case it's not found, a debug ICE string will alert about
the missing params and there will be no extrusions.

I think this way you still mantain the ice interactivity, with little
extra effort if you want to change input curves (actually just run the
script) and I don't get my hands tied to accomodate new features/bug
fixes.

Eugen Sares

unread,
Jul 14, 2011, 6:26:02 PM7/14/11
to soft...@listproc.autodesk.com
You deserve the medal of honour! ; )


Am 14.07.2011, 19:59 Uhr, schrieb Fabricio Chamon <xsim...@gmail.com>:

> thanks for the explanations Eugen!
>
> "By the way, here's the link to those, just in case you're looking for
> an easier way to deal with subcurves:"
>
> already have it installed! =)
> is this a new version or something ?

Happy to hear!
1.1 is the version in which "SplitSubcurves" also takes Isopoints as input.

1.2 will have a custom prop called "IsopointTools", a PPG with some
options to select curve isopoints in various manners:
subdivisions, and curve intersections.
If you have Isopoints selected then, it's easy to insert Knots there, or
Split and remove the leftovers = Trim.
Can take some time, though.

Stefan Kubicek

unread,
Jul 18, 2011, 8:33:03 PM7/18/11
to soft...@listproc.autodesk.com
I wonder how much work it would be, if possible at all, to write one or two custom ICE nodes that provide the missing functionality?
I guess the output value of one of the nodes would be an array of knot positions per subcurve,
and the second one would just be an array of integers describing each subcurves degree?
Would that be sufficient Fabricio?

Is ne1 here on this list with enough experience in custom ICE node programming?

--
-------------------------------------------
Stefan Kubicek Co-founder
-------------------------------------------
keyvis digital imagery

Wehrgasse 9 - Grᅵner Hof
1050 Vienna Austria

Fabricio Chamon

unread,
Jul 18, 2011, 10:15:38 PM7/18/11
to soft...@listproc.autodesk.com
Hi Stefan,
I have it already working with the Data Provider concept I wrote on my previous post. Actually I found it pretty interesting, it's fast to setup and allows for a good communication between sdk and ice. The whole setup is:

- one custom parameter set with read only attributes
- one scripted operator on the curve primitive that reads desired data and populates the pset.
- a Get Data Provider ice node that reads all params from the pset and handles string->datatype conversions

I've chosen to set every param on the pset as string, so that I can deal with arrays for separate subcurve information. 

Here's an screen grab of the setup. I'll do an article about that sometime...



data_provider.jpg

Steven Caron

unread,
Jul 18, 2011, 10:24:51 PM7/18/11
to soft...@listproc.autodesk.com
its awesome that its working well with the string conversion nodes, but if performance is ever an issue you *might* be able to use a custom ice node to generate this data, i haven't actually tried to use nurbs curve as input geometry to a custom node.

s

Stefan Kubicek

unread,
Jul 18, 2011, 10:26:14 PM7/18/11
to soft...@listproc.autodesk.com
Aha! I didn't fully get that SCOP idea initially, makes total sense.
It's a bit nasty you have to hack around like that though,
hopefully easier ways of doing it will surface once ICE modeling evolves (or some brave man will stand up and write some custom ICE nodes :-)

Fabricio Chamon

unread,
Jul 19, 2011, 3:25:58 AM7/19/11
to soft...@listproc.autodesk.com
I made some tests on 200 - 500 control point curves and it has acceptable update times during curve tweaking...
but yes, a custom ice node would be preferable...sad enough, there's 2 kind of people in the world: those who can code in C, and those who can't... =)



Steven Caron

unread,
Jul 19, 2011, 3:31:58 AM7/19/11
to soft...@listproc.autodesk.com
you would be surprised how easy it is.

share your code for the scop, ill attempt to convert it. that is assuming the same data for curves is available to ICE node.

s

Fabricio Chamon

unread,
Jul 19, 2011, 4:23:52 AM7/19/11
to soft...@listproc.autodesk.com
sure, here it is. (not only the scop, but the entire code to create scop/pset on selected curve(s))
select curve > run (the scop will be placed under secondary shape modeling marker)

thanks Steven! 
PowerExtrude_Data_Provider.rar

Steven Caron

unread,
Jul 19, 2011, 6:23:37 AM7/19/11
to soft...@listproc.autodesk.com
ok i looked at this for about 20 mins, from what i can see CICEGeometry class doesn't implement support for curve specific data. i can get generic data that all geometries share, point positions, segments/edges, etc. from what i can see it wont let me cast to the NurbsCurveList/NurbsCurve classes in order to get the data that you are getting through the scripting/scop interface. it kinda makes sense why we dont have curve based modeling nodes out of the box, the API is actually limited at this time. i will put in a request.

s

Eugen Sares

unread,
Jul 19, 2011, 9:10:21 AM7/19/11
to soft...@listproc.autodesk.com
On Tue, 19 Jul 2011 08:23:37 +0200, Steven Caron <car...@gmail.com> wrote:

> ok i looked at this for about 20 mins, from what i can see CICEGeometry
> class doesn't implement support for curve specific data. i can get
> generic
> data that all geometries share, point positions, segments/edges, etc.
> from
> what i can see it wont let me cast to the NurbsCurveList/NurbsCurve
> classes
> in order to get the data that you are getting through the scripting/scop
> interface. it kinda makes sense why we dont have curve based modeling
> nodes
> out of the box, the API is actually limited at this time. i will put in a
> request.


Thanks for that!!
Poor Subcurves...
Now that we are on the topic and I might have your attention, could you
kindly log a short list of bugs regarding Curves, please?


- With Immediate Mode on, undoing a Move Component operation on a
Curvelist crashes SI, or at least messes up the Curve.


- On CurveLists, NURBS Boundary display on: only the first Subcurve is
drawn yellow when in Subcurve component mode, all others white.
Check: create Text > Curve, go to Subcurve mode, NURBS Boundaries display
on.
However, Subsurface boundary display is correct (assemble two Surfaces to
get Subsurfaces).


- Get2() method on CurveLists returns a Knot data array containing
empty/invalid entries (In JScript at least, haven't checked others).
Using Set() to write out the exact same data results in an error.
The Knot data array has to be cleaned of empty items first, then it's
working.

var VBdata = inCrvListGeom.Get2( siSINurbs );
var aAllKnots= VBdata3.toArray();
// Bug: Knot array has undefined elements, which have to be removed first.
aAllKnots = removeUndefinedElementsFromArray(aAllKnots);
...
// Working now:
outCrvListGeom.Set(..., aAllKnots, ...);


- The COG of Subcurves is calculated wrongly, always slightly offset.
Check: create a Circle, select the Subcurve, switch on some transform tool.


Sincere thanks,
Eugen

Raffaele Fragapane

unread,
Jul 19, 2011, 10:15:00 AM7/19/11
to soft...@listproc.autodesk.com
Haven't had that issue with curves, and we've done some pretty funky stuff recently.
It looks more of a bug with the historically wonky relationship JS has with arrays and the need for COM-style VBAs.

Have you tried the same simple thing in VBS or Python?

Also, if you're a client you should be able to log bugs yourself I believe.
--
Our users will know fear and cower before our software! Ship it! Ship it and let them flee like the dogs they are!

Eugen Sares

unread,
Jul 20, 2011, 8:26:23 AM7/20/11
to soft...@listproc.autodesk.com
Fabricio,
here's another feature you might consider including in your Operator:
assigning MaterialIDs to polygon stripes/islands/caps.


Thing is, Softimage has no "Segment" Component, like 3ds max.
Over there, you can assign a MaterialID to a Curve Segment, and the
extruded Polygons get that ID.
Small feature but extremely useful.
Think of some complex cross section, where the outermost curve segments
shall get a certain mat, and the inner ones another.

In Softimage for now you can only create clusters after the geometry has
been extruded, and if you change the curve, these Clusters are messed up.
CurvesToMesh Op has two buttons for convenience: "Create Polygon Clusters
Per Island/Per Section along Path", but they don't help with the "MatID
per segment"-problem.

Two ideas for a workaround:
- assign MatIDs according to selected Knots on the cross-section Curve.
Select 1 Knot, extrude, and you get 2 MatID, before and after the Knot.
Select 15 and get 16 MatIDs etc.

- assign MatIDs between all Bezier-Knots found (those with full
multiplicity, where a Knot and a Point meet).

How about it?
Cheers,
Eugen

>> aAllKnots = removeUndefinedElementsFromArr**ay(aAllKnots);

Fabricio Chamon

unread,
Jul 20, 2011, 1:56:50 PM7/20/11
to soft...@listproc.autodesk.com
Hi Eugen, 

I'm not quite sure if I got it right...but in the last video I showed how to use the exposed per polygon attributes to apply materials...this way the user can create its own rule for material assigning... doesn't it solve the problem ?

Eugen Sares

unread,
Jul 20, 2011, 2:32:41 PM7/20/11
to soft...@listproc.autodesk.com
Ok... I think what you already do is different, though also useful of
course.
See screenshot attached (hope you like the colors... ; )

I mean defining MatID polygon"groups" along the cross-section, with some
options for defining the borders:
- by selected Knots (like in the screenshot)
- by a threshold-angle - neighbouring polys with an angle smaller than
this are put in a "group"
- by all Bezier-Knots
...

Useful for example when you extrude floorplans, need different Mats on
different Segments, and edit the curve afterwards.
Best,
Eugen

MatIDs along cross-section.jpg

Fabricio Chamon

unread,
Jul 21, 2011, 3:13:01 PM7/21/11
to soft...@listproc.autodesk.com
ah ok...understood. thanks for the image Eugen.

So I'll expose some more per polygon attributes (like curve segment used to generate the polygon, curvature, etc).

Matt Lind

unread,
Jul 21, 2011, 6:38:52 PM7/21/11
to soft...@listproc.autodesk.com

If undefined elements are being inserted into arrays, that’s a Softimage bug, not Jscript.

 

Matt

Eugen Sares

unread,
Jul 22, 2011, 6:53:14 AM7/22/11
to soft...@listproc.autodesk.com
I suppose so, too.
I used JScript arrays a 100 times, this is the only occasion where this
happens.


Besides that, can anyone confirm the other 3 bugs?
- crash undoing MovePoint in Immed Mode
- Wrong NURBS Curve Boundary display with multiple Subcurves
- Subcurve COG not centered

Cheers,
Eugen


On Thu, 21 Jul 2011 20:38:52 +0200, Matt Lind <ml...@carbinestudios.com>
wrote:

Alan Fregtman

unread,
Jul 25, 2011, 1:46:31 PM7/25/11
to soft...@listproc.autodesk.com
> - crash undoing MovePoint in Immed Mode
Not getting this here. (2011 with hotfixes.)

> - Wrong NURBS Curve Boundary display with multiple Subcurves

Define wrong? Seems ok here.

> - Subcurve COG not centered

Yeah, if I do Move Center To Vertices and compare that with COG
button's center, they're way off.

Matt Lind

unread,
Jul 25, 2011, 6:48:22 PM7/25/11
to soft...@listproc.autodesk.com
'Move center to vertices' uses the weighted average position of the selected points.
COG is based on the bounding box of the geometry.

The two are not the same as the former can be biased based on number of components in a given location, the latter is not.


Matt

Eugen Sares

unread,
Aug 3, 2011, 6:46:53 AM8/3/11
to soft...@listproc.autodesk.com
(...back from vacation)

On Mon, 25 Jul 2011 20:48:22 +0200, Matt Lind <ml...@carbinestudios.com>
wrote:

> 'Move center to vertices' uses the weighted average position of the

> selected points.
> COG is based on the bounding box of the geometry.
>
> The two are not the same as the former can be biased based on number of
> components in a given location, the latter is not.

Fair enough. Fact is, in subcurve mode, the axis icon is not in the center
of a selected nurbs circle, for example. That can't be right.

>
>
> Matt
>
> -----Original Message-----
> From: softimag...@listproc.autodesk.com
> [mailto:softimag...@listproc.autodesk.com] On Behalf Of Alan
> Fregtman
> Sent: Monday, July 25, 2011 6:47 AM
> To: soft...@listproc.autodesk.com
> Subject: Re: "Power Extrude"
>
>> - crash undoing MovePoint in Immed Mode
> Not getting this here. (2011 with hotfixes.)

Testing 2012sp1. No crash, but now undo is not working at all at with the
Move Component Tool on curves.
Undo on moving a curve point with the regular translate tool works ok.


>
>> - Wrong NURBS Curve Boundary display with multiple Subcurves
> Define wrong? Seems ok here.

Create a Text Curve, switch to Subcurves, turn on Nurbs Boundaries.
-> only the first Subcurve is displayed yellow (color code for
components), all others white, which is incorrect.
Multiple Subsurfaces are displayed correctly, though - all in yellow.

Fabricio Chamon

unread,
Aug 3, 2011, 8:17:03 PM8/3/11
to soft...@listproc.autodesk.com
update 4: http://www.vimeo.com/27256396

now officially rename to Power Extrude. 

It was a huge update, so I couldn't test enough all parameter combinations (it might still have some issues here and there).

As I said earlier, the extrusions are is now based on Data Providers, that means all curves you want to use with power extrude should have this property applied (single click through the menu).
Performance has dropped a bit because of the heavy computations, but in the other hand it gained a lot in features.

thanks everyone for the feedback, Eugen for the great curve tools (have used a lot!) and Stephan for the cool custom menu ideas.

Let me know what you think. (errors, bugs, good stuff, etc)

Changes / New Features:

- rebuilt from scratch, and now packed as .xsiaddon
- new command based, user-friendly workflow (icetree builder/inspector - user does not need to open the icetree)
- Implementation based on Data Providers (allows for reliable knot and subcurve information)
- support for multi-subcurve profiles
- fixed user having to explicitly set open/closed curve flags inside the compound (it now reads directly from the data provider)
- almost every extrusion parameter is now array-based (can be controlled per path/profile subcurve)
- changed subdivision rules (can be defined separately for path and profile):
   * Per Span (uses curve knots)
   * Evenly Spaced - Fixed
   * Evenly Spaced - Spacing Ratio
   * Use Custom Positions
- profile shape is properly oriented before starting the extrusion. Avoids squashed extrusion shapes.
- new extrusion profile center mode: 
   * use average subcurve point positions 
   * use curve center
- new "Build Geometry" flag. Extrusion can be filtered per path/profile subcurve
- new exposed Optimization settings for evenly subdivisions
- new per polygon/point/edge attributes (curve segment, is cap polygon, path/profile subcurve , edge is knot, etc)
- "evenly subdivision always hit knots" flag for path/profile.

ICE Compounds description:

(stored under: Task > Power Extrude)

Generator
   Power Extrude: The main compound

Modifiers
   Modify Radius Along Curve: modulates cross sections radius along the path curve (with fcurve control)
   Modify Roll Along Curve: modulates cross sections roll along the path curve (with fcurve control)
   Apply Spiral Displace Along Curve: displaces cross sections along the path curve in a spiral shape (with fcurve control)

Subcurves
   Get Current Subcurve: output current path/profile subcurve indices being used inside the extrusion loop (nested path/profile repeat nodes). 
   Set Values Per Subcurve: Allows to set different values for each path/profile subcurve, can be plugged on almost any input. (like radius or subdivisions, for example)
   Test Subcurve: Comparision node used to match any specific path/profile subcurve index on the loop.

Utilities
   Get Power Extrude Data Provider: can be used as a separate helper tool to get curve info that is not directly accessible from ICE, with support for subcurves. (normalized knot U values, open/closed curve, length, etc)
   Get Power Extrude Per Point Attributes: exposes all custom per point attributes created by power extrude
   Get Power Extrude Per Polygon Attributes: exposes all custom per polygon attributes created by power extrude
   Get Power Extrude Per Edge Attributes: exposes all custom per edge attributes created by power extrude


-----------

bugs/know issues:
- auto UVs not implemented
- curvature dependant subd rule not implemented
- moving/rotating/scaling powerextrude mesh gives bad geometry. (workaround for now is to use "clone polygon mesh" ice node in another empty mesh and transform this cloned mesh).
PowerExtrude.xsiaddon
It is loading more messages.
0 new messages