they don't provide access to the 'topology' type input or output port. you
have to make a node that outputs point positions and polygon description.

here is an example node which meshes and openvdb grid from an incomplete
project of mine...

https://github.com/caron/OpenVDB_Softimage/blob/master/VDB_Node_VolumeToMesh.cpp

s


On Wed, May 15, 2013 at 11:57 AM, Sebastien Sterling <
[email protected]> wrote:

> " for Topology there is no SDK access" does this mean none existent or
> locked ? and..Why ? if Matt wants to create custom nodes, are the
> limitation inherent to ice, or is ice like the standard SDK locked in
> certain areas ?
>
>
> On 15 May 2013 20:25, Matt Lind <[email protected]> wrote:
>
>> That’s what I was afraid of.****
>>
>> ** **
>>
>> I remember your findings from a while ago, which was part of my incentive
>> to pursue this route.  500ms vs. 20ms is quite significant (2500%). In my
>> case it would be the difference between acceptable performance and
>> unacceptable performance.****
>>
>> ** **
>>
>> I’m OK with having to break this down into a small handful of nodes
>> (~10), but I’m not OK with having to use 300 or so as is currently the case.
>> ****
>>
>> ** **
>>
>> On the kinematics front, I’d like to compute the local transform of one
>> object relative to another and spit out the result as a 4x4 matrix.  That
>> alone would eliminate 50 nodes from the tree for each instance which the
>> functionality is needed.  Another node to convert a UV location from
>> non-uniform to uniform parameterized space would eliminate a significant
>> number of nodes too, and that’s really the bottleneck at this point because
>> doing searches and reverse lookups using the factory nodes is quite
>> cumbersome and impractical.****
>>
>> ** **
>>
>> ** **
>>
>> ** **
>>
>> Matt****
>>
>> ** **
>>
>> ** **
>>
>> ** **
>>
>> ** **
>>
>> *From:* [email protected] [mailto:
>> [email protected]] *On Behalf Of *Ahmidou Lyazidi
>> *Sent:* Wednesday, May 15, 2013 3:07 AM
>>
>> *To:* [email protected]
>> *Subject:* Re: custom ICENode - questions and request for example source
>> code****
>>
>> ** **
>>
>> 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 2nd polygon
>> 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