" for Topology there is no SDK access" does this mean none existent or locked ? and..Why ?
It means that you can't get the Topology attribute inside your custom node to play with it and you can't output Topology attribute from a custom node. The Topology attribute is not only the topology of the mesh. You can imagine the Topology attribute like a system that let you describe what you want to do on your mesh using standard Softimage modeling operators. Lets say you want to extrude and then add a vertex to your polygon mesh, the topology attribute will just store a "stack of actions" that will be executed only when you plug it into a Set Data node set to "Topology". The operations that can be added to this stack must be known by Softimage. For example, if you plug a Split Edge node into a Set Topology node, it will call the same Split Edge function than modelers are using since ...XSI can split edges :). Adding SDK support for ICE Topology would mean adding the ability for users to add their own custom modeling function callable from ICE. I have no idea how complicate it would be to implement such thing :). While I was working on ICE Modeling I added the "Create Topo" node to let users create custom topology from built in nodes or from a custom one. Create Topo just need the array of positions and the indices of the polygons to create the mesh. The advantage of native modeling commands vs Create Topo is that they can update clusters... Now you know as much as I know on ICE topo ;) Cheers G. -----Original Message----- From: "Sebastien Sterling" <sebastien.sterl...@gmail.com> To: softimage@listproc.autodesk.com Date: 05/15/13 14:58 Subject: Re: custom ICENode - questions and request for example source code " 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 <ml...@carbinestudios.com> 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: softimage-boun...@listproc.autodesk.com [mailto:softimage-boun...@listproc.autodesk.com] On Behalf Of Ahmidou Lyazidi Sent: Wednesday, May 15, 2013 3:07 AM To: softimage@listproc.autodesk.com 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 <ml...@carbinestudios.com> 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: softimage-boun...@listproc.autodesk.com [softimage-boun...@listproc.autodesk.com] On Behalf Of Raffaele Fragapane [raffsxsil...@googlemail.com] Sent: Tuesday, May 14, 2013 9:00 PM To: softimage@listproc.autodesk.com 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 <moloney.cia...@gmail.com> 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 <ml...@carbinestudios.com> 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!