As my blog is rather dead those days, I put the code, compound and scenes on this public repo: https://github.com/frenchdog/ICEConvexHull
Cheers, Guillaume On Wed, May 15, 2013 at 6:39 AM, Guillaume Laforge < [email protected]> wrote: > For topology, there is no SDK access. But a custom node can do all the low > level stuff (manipulating the so called PolygonalDescription). > Same for Kinematics, a custom node can manipulate a 4X4 matrix. > At the end you need to set the topo/kine using the corresponding attribute. > > Here is an example (with source code) to create topology using a custom > ICE node: http://frenchdog.wordpress.com/2012/01/05/happy-2012/ > > If you want to do everything with one node, it is a job for a custom > operator I think. > > Guillaume > > > On Wed, May 15, 2013 at 6:07 AM, Ahmidou Lyazidi <[email protected]>wrote: > >> From my small experience about this, you can't make a custom topology or >> kinematics "node", you make a node that abstract the more or less complex >> computation, then you feed the topology nodes (or a matrix in the case of >> kinematics). >> As you stated you can't use locators, or location queries in a custom ice >> node, so if you need them the workflow is to break you ice node in smaller >> parts. >> >> About the preformance sometimes it's faster, sometimes quite the same. I >> made a parallel transport frame node, the gain was only 15% but the setup >> faster. >> This node seems to perform way faster: >> >> http://shaderop.com/2011/07/cubic-bezier-curve-node-for-softimage-ice/index.html >> >> A >> >> >> ----------------------------------------------- >> Ahmidou Lyazidi >> Director | TD | CG artist >> http://vimeo.com/ahmidou/videos >> >> >> 2013/5/15 Matt Lind <[email protected]> >> >>> well, let's answer the questions first: >>> >>> 1) Does anybody have source code they are willing to share for custom >>> ICE Nodes that deal with topology and/or geometry? >>> >>> 2) Does the lack of reference, location, and execute ports for custom >>> ICE nodes mean I cannot cast a location search from inside an ICE node? >>> >>> >>> >>> To answer your question: >>> >>> Imagine two nulls and two NURBS Surfaces. the task is to find the >>> nearest location from the first null to the first surface. At that >>> location, build an orthonormal basis and compute the local transform of the >>> null relative to that basis. Then reconstruct that relationship by >>> applying it to the 2nd null relative to the 2nd surface assuming both >>> surfaces use uniform parameterization, not non-uniform as is the softimage >>> default. Version 2: extend to operate on vertices of polygon meshes >>> instead of nulls. I have a working version, but it is slow and not very >>> stable. >>> >>> The problem I'm encountering is it simply takes too many factory nodes >>> to be able to work efficiently. Each node has a certain amount of overhead >>> regardless of what it does. Plus, the support for NURBS in ICE is rather >>> abysmal. I have to construct my own orthonormal basis plus implement my own >>> algorithm to convert from non-uniform parameterization to uniform >>> parameterization. Both are doable, but take very many nodes to do it >>> (including support for edge cases) making the whole effort rather clumsy at >>> best. The parameterization conversion is expensive as it involves sorting >>> and searching (while/repeat/counter nodes). When applying the ICE Compound >>> to a polygon mesh with 5,000+ vertices.....it gets the job done, but >>> chugs. >>> >>> I have a version of this tool written as a scripted operator, and it >>> performs really well because it has better SDK support and the >>> sorting/searching can be better optimized. But one shortcoming of scripted >>> operators is they self-delete if an input goes missing (which often happens >>> on scene load or model import when the content has been modifed >>> externally). This in turn causes content using the operator to malfunction >>> generating bug reports which are sent to artists to fix. Unfortunately >>> most artists weren't around when the content was created years ago, so they >>> have no idea what's wrong, what the expected output is supposed to look >>> like, or how to fix it. Often an asset has to be retired and replaced. >>> This is my motivation for rewriting the tool as a custom ICE node as ICE is >>> much more graceful when it's inputs don't exist - it just turns red and >>> sits patiently until conditions improve. This gives artists a chance to >>> fix the problem without having to sweat the details because they can read >>> the GetData node to see what's missing, then find and repair it. I'm >>> trying to make the content in our pipeline more durable. >>> >>> So...I'm looking for code samples of how to deal with topology and >>> geometry in ICE. So far I have not found any. >>> >>> >>> Matt >>> >>> >>> >>> >>> >>> >>> ------------------------------ >>> *From:* [email protected] [ >>> [email protected]] On Behalf Of Raffaele >>> Fragapane [[email protected]] >>> *Sent:* Tuesday, May 14, 2013 9:00 PM >>> *To:* [email protected] >>> *Subject:* Re: custom ICENode - questions and request for example >>> source code >>> >>> Yeah, same hunch here. >>> Unless the performance expectations are in the multiple characters >>> real-time concurrently, in which case I think neither way is gonna get >>> there usually. >>> >>> >>> On Wed, May 15, 2013 at 1:04 PM, Ciaran Moloney < >>> [email protected]> wrote: >>> >>>> I'm sorta , kinda sure that's a dead end for a custom node. You might >>>> be better off optimizing your ICE tree. It doesn't sound like such a >>>> complex problem, care to share? >>>> >>>> >>>> On Wed, May 15, 2013 at 2:41 AM, Matt Lind <[email protected]>wrote: >>>> >>>>> I’ve been looking at the ICE SDK as a start to the process of >>>>> writing custom ICE Nodes in C++. I need to write topology generators, >>>>> modifiers and deformation nodes. So far all the source code I’ve seen >>>>> supplied with Softimage only deal with particle clouds or primitive data >>>>> such as converting integers to scalars. Does anybody have source code for >>>>> working with the Softimage SDK inside an ICE Node to modify >>>>> topology/geometry?.....or Kinematics? Example: creating a polygon mesh >>>>> from scratch, adding/removing subcomponents, dealing with clusters, etc… >>>>> I >>>>> ask this partly because the ICE SDK docs say to not use the object >>>>> model….which leads to the question – how do I do anything?**** >>>>> >>>>> **** >>>>> >>>>> **** >>>>> >>>>> **** >>>>> >>>>> **** >>>>> >>>>> While also browsing the SDK docs, I saw in the ‘limitations’ section >>>>> that custom ICE Nodes cannot define reference, location, or execute >>>>> ports. Since I am very interested in working with locations, does this >>>>> mean I cannot do queries for locations from inside the ICE Node? Or does >>>>> it only mean I cannot send/receive locations from other ICE nodes?**** >>>>> >>>>> **** >>>>> >>>>> Example:**** >>>>> >>>>> **** >>>>> >>>>> I need to write an ICE Node which takes a polygon mesh and 2 NURBS >>>>> Surfaces as inputs, and whose output is the deformation of a 2ndpolygon >>>>> mesh. To accomplish this feat requires the use of point Locators >>>>> to map the relationship between the first polygon mesh’s points relative >>>>> to >>>>> the first surface, then re-interpret that information to deform the points >>>>> of the 2nd polygon mesh in relation to the 2nd surface. You can >>>>> assume the two polygon meshes and two surfaces have identical topology. I >>>>> need to write this as a custom ICE node because it is prohibitively >>>>> expensive to use the factory nodes (too many nodes/workarounds required >>>>> leading to severe performance degradation).**** >>>>> >>>>> **** >>>>> >>>>> I’d like to be able to do a point locator query from inside the custom >>>>> ICE node for performance (and convenience) reasons. Sample code would be >>>>> a >>>>> big help.**** >>>>> >>>>> **** >>>>> >>>>> **** >>>>> >>>>> Anybody?**** >>>>> >>>>> **** >>>>> >>>>> **** >>>>> >>>>> Matt**** >>>>> >>>>> **** >>>>> >>>>> **** >>>>> >>>> >>>> >>> >>> >>> -- >>> Our users will know fear and cower before our software! Ship it! Ship it >>> and let them flee like the dogs they are! >>> >> >> >

