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!
>>>
>>
>>
>

Reply via email to