Re: Beginners Guide to Python
I was lucky enough to take Raff's workshop back when, and I highly recommend it. It's fantastic to hear it's going to be available soon. Sent from my iPad On May 1, 2012, at 10:24 PM, Raffaele Fragapane raffsxsil...@googlemail.com wrote: If you can hang in there for a month or so, some time in June a review and repackage of my CGS workshop on technical direction with python/xsi will most likely be released as training material ;) Regardless, good call moving away from VB. Youtube is full of solid Python training material these days. If you can already script within xsi a bit you should be able to get decent mileage learning as you're doing by converting what you've done first, and getting over some of the inevitable differences that make VB seem easier in the beginning. O'Reilly's Learning Python if you feel like killing some trees is a fantastic first book to have, and I've had pretty good feedback on it from various students or just people I helped who picked it up. On Tue, May 1, 2012 at 11:30 PM, Gareth Bell gareth.b...@primefocusworld.com wrote: Afternoon all, I'm in the need of learning some serious Python - specifically geared towards Softimage. Does anyone have any recommendations for literature or useful web-based resources in order for me to get acquainted? I'm reasonably proficient in VBScript (self-taught) if that makes any difference. cheers gareth bell | xsi artist t: +44 (0)20 7565 1000 e: gareth.b...@primefocusworld.com a: 37, dean street, london, w1d 4pt, uk. www.primefocusworld.com -- Our users will know fear and cower before our software! Ship it! Ship it and let them flee like the dogs they are!
Re: PyQt For Softimage
Just bringing this thread back to life. We are getting more into using PYQT here and I am looking into completely replacing synoptics and use PYQT instead. I was hoping somebody could help me figure out how to get information from XSI sent to PYQT currently everything that I have done has been the opposite, where PYQT drives something, but does very little evaluation of the scene. An example would be. When a characters facial animation is animated, and the time slider scrubs, I will need the PYQT slider that drives that facial animation to detect the value change in XSI and show its new value in the menu. Currently I don't really know how to do that, as the example SignalSlot function that comes with this implementation only covers something with a registered event. Do I need to create onValueChanged events for every value on the rig? any help would be awesome, I'm pretty new to PYQT still. thanks, Enrique On Wed, Feb 29, 2012 at 3:29 PM, Enrique Caballero enriquecaball...@gmail.com wrote: For those of us using linux, is there an out of box PYQT implementation such as this that we can use? On Thu, Dec 8, 2011 at 6:45 AM, Alok Gandhi alok.gandhi2...@gmail.comwrote: Oh ok, thanks for the info Steven. On Wed, Dec 7, 2011 at 5:24 PM, Steven Caron car...@gmail.com wrote: well for your reference, i am using Alan Jones' cmake softimage module. it automates a lot of the process for creating softimage plugins with cmake. it can be found in the src\CMake\Modules folder. its very handy :) s On Wed, Dec 7, 2011 at 2:21 PM, Alok Gandhi alok.gandhi2...@gmail.comwrote: Yep that works too, I knew that it did not need shader lib for sure, but was not sure, so I set the path anyways. On Wed, Dec 7, 2011 at 2:08 PM, Steven Caron car...@gmail.com wrote: well it doesn't need that actually, let the entry in the cmake gui stay red. just hit generate... does this work for you? -- --
Re: [ICE] curve manipulation issues
Hey Sebastian, hey Chris, awesome, both solutions work perfectly - cheers for that! :-) Wasn't aware at all of both *Get Element Index* and *Build Array From Set. * Thanks again, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] On Mon, May 7, 2012 at 12:33 PM, Chris Chia chris.c...@autodesk.com wrote: Hi Martin, I think you are looking for this. You can use Select in Array ice node to query the individual vertex's position. [cid:c02c4ea5-dd64-448b-91cb-a705c756] Regards, Chris Chia Softimage QA Analyst Autodesk Media Entertainment From: softimage-boun...@listproc.autodesk.com [ softimage-boun...@listproc.autodesk.com] on behalf of Martin Chatterjee [ martin.chatterjee.li...@googlemail.com] Sent: Monday, May 07, 2012 5:11 PM To: softimage@listproc.autodesk.com Subject: [ICE] curve manipulation issues Hello clever people out there, I'm experiencing some annoying issues when trying to deal with Curve Manipulation in ICE - hopefully somebody can help me out here with some insight? 1.) I am looking for the Curve equivalent to self.ID (for PointClouds) or self.VertexIndex (for polyMeshes). Bottom line I want to be able to access a Curve Point Location in the same way I can access PointCloud points via ID to Location or Polymesh vertices via PointIndex To Location 2.) While attempting to workaround this issue I have stumbled over this: (see attached screenshot) When trying to get a full array of all Point Locations of a curve via Get Closest Points I NEVER get the correct point count... When the curve is closed, it will give me one more, when the curve is open I will get two less than the actual point count. Has anybody out there succeeded in working around this somehow? Thanks a lot in advance for any hints, Cheers, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de]
Re: PyQt For Softimage
I'm just diving into it as well, but the way I'd do it is to implement a siOnTimeChange event that either calls a function in your UI (or menu) to update it's parameters, or, if you want the UI to respond to value changes happening without the time slider being moved (somebody changes a parameter through scripting or the normal Softimage interface) you probably have to implement an onValueChanged event. How sophistivated this event is (whether it checks for what values actually have changed and whether the Qt UI has to be upated or not, or whether it just stupidly calls the Update QT UI function every time) comes down to performance. Keep it simple first and optimize if required. Would love to hear more ideas on this as well. Just bringing this thread back to life. We are getting more into using PYQT here and I am looking into completely replacing synoptics and use PYQT instead. I was hoping somebody could help me figure out how to get information from XSI sent to PYQT currently everything that I have done has been the opposite, where PYQT drives something, but does very little evaluation of the scene. An example would be. When a characters facial animation is animated, and the time slider scrubs, I will need the PYQT slider that drives that facial animation to detect the value change in XSI and show its new value in the menu. Currently I don't really know how to do that, as the example SignalSlot function that comes with this implementation only covers something with a registered event. Do I need to create onValueChanged events for every value on the rig? any help would be awesome, I'm pretty new to PYQT still. thanks, Enrique On Wed, Feb 29, 2012 at 3:29 PM, Enrique Caballero enriquecaball...@gmail.com wrote: For those of us using linux, is there an out of box PYQT implementation such as this that we can use? On Thu, Dec 8, 2011 at 6:45 AM, Alok Gandhi alok.gandhi2...@gmail.comwrote: Oh ok, thanks for the info Steven. On Wed, Dec 7, 2011 at 5:24 PM, Steven Caron car...@gmail.com wrote: well for your reference, i am using Alan Jones' cmake softimage module. it automates a lot of the process for creating softimage plugins with cmake. it can be found in the src\CMake\Modules folder. its very handy :) s On Wed, Dec 7, 2011 at 2:21 PM, Alok Gandhi alok.gandhi2...@gmail.comwrote: Yep that works too, I knew that it did not need shader lib for sure, but was not sure, so I set the path anyways. On Wed, Dec 7, 2011 at 2:08 PM, Steven Caron car...@gmail.com wrote: well it doesn't need that actually, let the entry in the cmake gui stay red. just hit generate... does this work for you? -- -- -- --- Stefan Kubicek Co-founder --- keyvis digital imagery Wehrgasse 9 - Grüner Hof 1050 Vienna Austria Phone:+43/699/12614231 --- www.keyvis.at ste...@keyvis.at --- -- This email and its attachments are --confidential and for the recipient only--
Re: [ICE] curve manipulation issues
Hi Chris, well, I don't want to be a pain - but I've used Get Closest Points quite often and very successfully with both PointClouds and PolyMeshes. I mis-used it to get an array of all Point Locations in the per-object context (as I didn't know Build Array From Set ... :-/ ) This node works for Polymeshes and Point Clouds, and sort-of-works for Curves - but with wrong results. So my reasoning is that this is a bug that should be logged. I personally don't see a reason why this should work on polymeshes but not on curves. But if that is the case then the node should turn red and not work at all on Curves. But regardless of this specific issue - what is the best way to formally log a bug nowadays? Thanks, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] On Mon, May 7, 2012 at 2:17 PM, Chris Chia chris.c...@autodesk.com wrote: Hi Martin, From what i know, Get Closest Points works for point cloud data. If you need to find the closest point position to a geometry, you can do something like my screenshot below. I have used null as the geometry. I am sure others can do a simpler ice tree. But I believe this one is more comprehensive. [cid:56b2533f-ae43-45f5-952c-05915526f22d] Regards, Chris Chia Softimage QA Analyst Autodesk Media Entertainment From: martin.chatter...@googlemail.com [martin.chatter...@googlemail.com] on behalf of Martin Chatterjee [martin.chatterjee.li...@googlemail.com] Sent: Monday, May 07, 2012 7:27 PM To: Chris Chia Subject: Re: [ICE] curve manipulation issues Hi Chris, thanks again for the quick reply on the list. For the sake of completeness I'd love to see the faulty behaviour of the Get Closest Points node logged as a bug. It's been a while - in fact I guess this might be my first official bug report since the aquisition... Soo, what is the correct/easiest way of formally logging a bug? Cheers, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] On Mon, May 7, 2012 at 12:33 PM, Chris Chia chris.c...@autodesk.com mailto:chris.c...@autodesk.com wrote: Hi Martin, I think you are looking for this. You can use Select in Array ice node to query the individual vertex's position. [cid:c02c4ea5-dd64-448b-91cb-a705c756] Regards, Chris Chia Softimage QA Analyst Autodesk Media Entertainment From: softimage-boun...@listproc.autodesk.commailto: softimage-boun...@listproc.autodesk.com [ softimage-boun...@listproc.autodesk.commailto: softimage-boun...@listproc.autodesk.com] on behalf of Martin Chatterjee [ martin.chatterjee.li...@googlemail.commailto: martin.chatterjee.li...@googlemail.com] Sent: Monday, May 07, 2012 5:11 PM To: softimage@listproc.autodesk.commailto:softimage@listproc.autodesk.com Subject: [ICE] curve manipulation issues Hello clever people out there, I'm experiencing some annoying issues when trying to deal with Curve Manipulation in ICE - hopefully somebody can help me out here with some insight? 1.) I am looking for the Curve equivalent to self.ID (for PointClouds) or self.VertexIndex (for polyMeshes). Bottom line I want to be able to access a Curve Point Location in the same way I can access PointCloud points via ID to Location or Polymesh vertices via PointIndex To Location 2.) While attempting to workaround this issue I have stumbled over this: (see attached screenshot) When trying to get a full array of all Point Locations of a curve via Get Closest Points I NEVER get the correct point count... When the curve is closed, it will give me one more, when the curve is open I will get two less than the actual point count. Has anybody out there succeeded in working around this somehow? Thanks a lot in advance for any hints, Cheers, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de]
Re: [ICE] curve manipulation issues
Hi Martin, I will bring this up to the development team to see how it should support with the curves. I will handle the filing of defects. If you ever find any defects in the future, you can report it here in this mailing list. Cheers. Regards, Chris Chia On 7 May, 2012, at 9:46 PM, Martin Chatterjee martin.chatterjee.li...@googlemail.commailto:martin.chatterjee.li...@googlemail.com wrote: Hi Chris, well, I don't want to be a pain - but I've used Get Closest Points quite often and very successfully with both PointClouds and PolyMeshes. I mis-used it to get an array of all Point Locations in the per-object context (as I didn't know Build Array From Set ... :-/ ) This node works for Polymeshes and Point Clouds, and sort-of-works for Curves - but with wrong results. So my reasoning is that this is a bug that should be logged. I personally don't see a reason why this should work on polymeshes but not on curves. But if that is the case then the node should turn red and not work at all on Curves. But regardless of this specific issue - what is the best way to formally log a bug nowadays? Thanks, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] On Mon, May 7, 2012 at 2:17 PM, Chris Chia chris.c...@autodesk.commailto:chris.c...@autodesk.com wrote: Hi Martin, From what i know, Get Closest Points works for point cloud data. If you need to find the closest point position to a geometry, you can do something like my screenshot below. I have used null as the geometry. I am sure others can do a simpler ice tree. But I believe this one is more comprehensive. [cid:56b2533f-ae43-45f5-952c-05915526f22d] Regards, Chris Chia Softimage QA Analyst Autodesk Media Entertainment From: martin.chatter...@googlemail.commailto:martin.chatter...@googlemail.com [martin.chatter...@googlemail.commailto:martin.chatter...@googlemail.com] on behalf of Martin Chatterjee [martin.chatterjee.li...@googlemail.commailto:martin.chatterjee.li...@googlemail.com] Sent: Monday, May 07, 2012 7:27 PM To: Chris Chia Subject: Re: [ICE] curve manipulation issues Hi Chris, thanks again for the quick reply on the list. For the sake of completeness I'd love to see the faulty behaviour of the Get Closest Points node logged as a bug. It's been a while - in fact I guess this might be my first official bug report since the aquisition... Soo, what is the correct/easiest way of formally logging a bug? Cheers, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] On Mon, May 7, 2012 at 12:33 PM, Chris Chia chris.c...@autodesk.commailto:chris.c...@autodesk.commailto:chris.c...@autodesk.commailto:chris.c...@autodesk.com wrote: Hi Martin, I think you are looking for this. You can use Select in Array ice node to query the individual vertex's position. [cid:c02c4ea5-dd64-448b-91cb-a705c756] Regards, Chris Chia Softimage QA Analyst Autodesk Media Entertainment From: softimage-boun...@listproc.autodesk.commailto:softimage-boun...@listproc.autodesk.commailto:softimage-boun...@listproc.autodesk.commailto:softimage-boun...@listproc.autodesk.com [softimage-boun...@listproc.autodesk.commailto:softimage-boun...@listproc.autodesk.commailto:softimage-boun...@listproc.autodesk.commailto:softimage-boun...@listproc.autodesk.com] on behalf of Martin Chatterjee [martin.chatterjee.li...@googlemail.commailto:martin.chatterjee.li...@googlemail.commailto:martin.chatterjee.li...@googlemail.commailto:martin.chatterjee.li...@googlemail.com] Sent: Monday, May 07, 2012 5:11 PM To: softimage@listproc.autodesk.commailto:softimage@listproc.autodesk.commailto:softimage@listproc.autodesk.commailto:softimage@listproc.autodesk.com Subject: [ICE] curve manipulation issues Hello clever people out there, I'm experiencing some annoying issues when trying to deal with Curve Manipulation in ICE - hopefully somebody can help me out here with some insight? 1.) I am looking for the Curve equivalent to self.ID (for PointClouds) or self.VertexIndex (for polyMeshes). Bottom line I want to be able to access a Curve Point Location in the same way I can access PointCloud points via ID to Location or Polymesh vertices via PointIndex To Location 2.) While attempting to workaround this issue I have stumbled over this: (see attached screenshot) When trying to get a full array of all Point Locations of a curve via Get Closest Points I NEVER get the correct point count... When the curve is closed, it will give me one more, when the curve is open I will get two less than the actual point count. Has anybody out there succeeded in working around this somehow? Thanks a lot in advance for any hints, Cheers, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] attachment: winmail.dat
Re: [ICE] curve manipulation issues
Excellent, thanks Chris. Cheers, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] On Mon, May 7, 2012 at 4:07 PM, Chris Chia chris.c...@autodesk.com wrote: Hi Martin, I will bring this up to the development team to see how it should support with the curves. I will handle the filing of defects. If you ever find any defects in the future, you can report it here in this mailing list. Cheers. Regards, Chris Chia On 7 May, 2012, at 9:46 PM, Martin Chatterjee martin.chatterjee.li...@googlemail.commailto: martin.chatterjee.li...@googlemail.com wrote: Hi Chris, well, I don't want to be a pain - but I've used Get Closest Points quite often and very successfully with both PointClouds and PolyMeshes. I mis-used it to get an array of all Point Locations in the per-object context (as I didn't know Build Array From Set ... :-/ ) This node works for Polymeshes and Point Clouds, and sort-of-works for Curves - but with wrong results. So my reasoning is that this is a bug that should be logged. I personally don't see a reason why this should work on polymeshes but not on curves. But if that is the case then the node should turn red and not work at all on Curves. But regardless of this specific issue - what is the best way to formally log a bug nowadays? Thanks, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] On Mon, May 7, 2012 at 2:17 PM, Chris Chia chris.c...@autodesk.com mailto:chris.c...@autodesk.com wrote: Hi Martin, From what i know, Get Closest Points works for point cloud data. If you need to find the closest point position to a geometry, you can do something like my screenshot below. I have used null as the geometry. I am sure others can do a simpler ice tree. But I believe this one is more comprehensive. [cid:56b2533f-ae43-45f5-952c-05915526f22d] Regards, Chris Chia Softimage QA Analyst Autodesk Media Entertainment From: martin.chatter...@googlemail.commailto: martin.chatter...@googlemail.com [martin.chatter...@googlemail.com mailto:martin.chatter...@googlemail.com] on behalf of Martin Chatterjee [martin.chatterjee.li...@googlemail.commailto: martin.chatterjee.li...@googlemail.com] Sent: Monday, May 07, 2012 7:27 PM To: Chris Chia Subject: Re: [ICE] curve manipulation issues Hi Chris, thanks again for the quick reply on the list. For the sake of completeness I'd love to see the faulty behaviour of the Get Closest Points node logged as a bug. It's been a while - in fact I guess this might be my first official bug report since the aquisition... Soo, what is the correct/easiest way of formally logging a bug? Cheers, Martin -- Martin Chatterjee [ Freelance Technical Director ] [http://www.chatterjee.de] On Mon, May 7, 2012 at 12:33 PM, Chris Chia chris.c...@autodesk.com mailto:chris.c...@autodesk.commailto:chris.c...@autodesk.commailto: chris.c...@autodesk.com wrote: Hi Martin, I think you are looking for this. You can use Select in Array ice node to query the individual vertex's position. [cid:c02c4ea5-dd64-448b-91cb-a705c756] Regards, Chris Chia Softimage QA Analyst Autodesk Media Entertainment From: softimage-boun...@listproc.autodesk.commailto: softimage-boun...@listproc.autodesk.commailto: softimage-boun...@listproc.autodesk.commailto: softimage-boun...@listproc.autodesk.com [ softimage-boun...@listproc.autodesk.commailto: softimage-boun...@listproc.autodesk.commailto: softimage-boun...@listproc.autodesk.commailto: softimage-boun...@listproc.autodesk.com] on behalf of Martin Chatterjee [martin.chatterjee.li...@googlemail.commailto: martin.chatterjee.li...@googlemail.commailto: martin.chatterjee.li...@googlemail.commailto: martin.chatterjee.li...@googlemail.com] Sent: Monday, May 07, 2012 5:11 PM To: softimage@listproc.autodesk.commailto:softimage@listproc.autodesk.com mailto:softimage@listproc.autodesk.commailto: softimage@listproc.autodesk.com Subject: [ICE] curve manipulation issues Hello clever people out there, I'm experiencing some annoying issues when trying to deal with Curve Manipulation in ICE - hopefully somebody can help me out here with some insight? 1.) I am looking for the Curve equivalent to self.ID (for PointClouds) or self.VertexIndex (for polyMeshes). Bottom line I want to be able to access a Curve Point Location in the same way I can access PointCloud points via ID to Location or Polymesh vertices via PointIndex To Location 2.) While attempting to workaround this issue I have stumbled over this: (see attached screenshot) When trying to get a full array of all Point Locations of a curve via Get Closest Points I NEVER get the correct point count... When the curve is closed, it will give me one more, when the curve is open I will get two
Re: Getting the objects to which a material was assigned in siOnEndCommand
XSI already takes care of telling my renderer when we need to render. That includes preview renders, region renders and batch renders for animation. These all happen using the same mechanism - by calling the custom renderer Process callback. Since all these types of rendering are handled by a single unified system, I'm designing my dirty system to be more or less agnostic to the type of rendering that's being performed. I want to avoid having to distinuish between preview renders, animation renders, region renders etc... For example, there's no reason to assume everything is dirty for a preview render (case #3 above). Basically, every time I'm told to render a frame, I need to determine what's been added, what's been removed and what has changed since the last render. Also, I need to distinguish between different kinds of edits - e.g. a change in a mesh's xform only doesn't require me to re-extract the geometry data from XSI. To do this, I simply keep track of what (meshes, materials, etc...) I rendered last time. Let's call this the previous render list. When it's time to render, I first mark everything in my previous render list as unused. I then traverse the XSI scene to collect things to render. For each thing I check whether it's already in my previous render list. If not, it's a new thing and it gets marked for full processing. If it is found, I mark the thing as used, then determine what kind of processing it needs (full processing, xform only change, etc...). After everything has been collected, I go through my render list and anything still marked as unused is removed. The determine what kind of processing it needs stage above is what needs to check for dirty information. Currently I'm relying on a bunch of callbacks to maintain a data structure that I can quickly query to see if a particular object has been dirtied. I am investigating the possibility of replacing all those callbacks with some checking of the evaluation ids or hierarchical evaluation ids. This would happen only during the step when I'm querying the dirty information, not on some regular interval outside the context of rendering. Thanks again for suggesting the evaluation id stuff. It looks like that going to simplify my checks a lot and make the system more robust. It's absolutely essential for the system to not miss anything - a false negative will mean we're rendering data that's inconsistent with the current state of the XSI scene which will lead to a lot of head scratching and frustration. I'll likely need to accept some false positives in exchange for never having false negatives - a compromise that is completely acceptable in this context. -Nicolas On Fri, May 4, 2012 at 7:12 PM, jo benayoun jobenay...@gmail.com wrote: Hey Nicolas, I think there is a misunderstanding on what I'm suggesting and what you could expect. 1/ When I was talking about increasing the frequency of the custom scene graph traversal, I was thinking to it in the context of a quick preview ala render region where things have to be updated when a slider is touched. subscribing to the siOnValueChanged or with a custom timer fit the case. 2/ A regular scene graph traversing would happen in the context of your render is launched but with a range of frames (let say 0-100) where you dont need to take care of user edits. It means, that the user press starts, your scene graph gets initialized and scene graph traversing is done for every frame. ID is ideal to track animated objects, ... 3/ The other and last one Im thinking about is if the user ask the renderer for one frame and press the button start, no need of a custom scene graph. You have to evaluate everything. In this three cases, I don't see which one would make the system breaks considering the ID increased or decreased between updates. If there is a context or something I didn't think about, please, let me know, that I could try to think to something else ! :) :) -jo 2012/5/4 Alok Gandhi alok.gandhi2...@gmail.com Hi Nicolas, If I understand what you are saying, for each dirty of your interest, you would like to capture and store that as soon as it happens and compare it with last render event to process the delta change. And right now you the challenge that you are faced with is capturing the dirties, specially with the material assignment. But isn't it true that Joe's proposal lets you visit the scene graph to capture the scene graph changes at each render, still doing the same thing but with a different approach. Please correct me if I am wrong. Alok.
Re: PyQt For Softimage
Hi Enrique, You can still (as suggested by Stefan) subscribe to the siOnValueChanged which will give you back a reference to the parameter to retrieve its new value. A good option would be to implement a custom engine. You can imagine a mechanism implemented in your main SynopticWidget which will be responsible to catch the xsi parameters bound to your sliders (acting like a mapping). For convenience, you should also implement a custom slider widget ala softimage reproducing the main signals/slots of the existing QSlider. Then a good API to bind/add a slider to a xsi parameter could be something like mysynoptic.addSlider(mysiobject.kine.posx), behind the scenes everything would be handled by your custom synoptic If you're worried by the performances especially with python, you still have the option to implement everything in cplusplus which should be faster in communicating with qt widgets and create a command to add xsi parameters to you synoptic. Considering the type of the parameter (string, float, whatever), your engine would be capable of install and bind the right widget. xsiparameters | handle by (siOnValueChanged) | SynopticWidget contains and bind to xsi parameters SynopticSlider contains and bind to xsi parameters SynopticController (why not to recreate a facial panel, its just 2d graphics ...) contains and bind to xsi parameters -jo 2012/5/7 Stefan Kubicek s...@tidbit-images.com I'm just diving into it as well, but the way I'd do it is to implement a siOnTimeChange event that either calls a function in your UI (or menu) to update it's parameters, or, if you want the UI to respond to value changes happening without the time slider being moved (somebody changes a parameter through scripting or the normal Softimage interface) you probably have to implement an onValueChanged event. How sophistivated this event is (whether it checks for what values actually have changed and whether the Qt UI has to be upated or not, or whether it just stupidly calls the Update QT UI function every time) comes down to performance. Keep it simple first and optimize if required. Would love to hear more ideas on this as well. Just bringing this thread back to life. We are getting more into using PYQT here and I am looking into completely replacing synoptics and use PYQT instead. I was hoping somebody could help me figure out how to get information from XSI sent to PYQT currently everything that I have done has been the opposite, where PYQT drives something, but does very little evaluation of the scene. An example would be. When a characters facial animation is animated, and the time slider scrubs, I will need the PYQT slider that drives that facial animation to detect the value change in XSI and show its new value in the menu. Currently I don't really know how to do that, as the example SignalSlot function that comes with this implementation only covers something with a registered event. Do I need to create onValueChanged events for every value on the rig? any help would be awesome, I'm pretty new to PYQT still. thanks, Enrique On Wed, Feb 29, 2012 at 3:29 PM, Enrique Caballero enriquecaball...@gmail.com wrote: For those of us using linux, is there an out of box PYQT implementation such as this that we can use? On Thu, Dec 8, 2011 at 6:45 AM, Alok Gandhi alok.gandhi2...@gmail.com* *wrote: Oh ok, thanks for the info Steven. On Wed, Dec 7, 2011 at 5:24 PM, Steven Caron car...@gmail.com wrote: well for your reference, i am using Alan Jones' cmake softimage module. it automates a lot of the process for creating softimage plugins with cmake. it can be found in the src\CMake\Modules folder. its very handy :) s On Wed, Dec 7, 2011 at 2:21 PM, Alok Gandhi alok.gandhi2...@gmail.com **wrote: Yep that works too, I knew that it did not need shader lib for sure, but was not sure, so I set the path anyways. On Wed, Dec 7, 2011 at 2:08 PM, Steven Caron car...@gmail.com wrote: well it doesn't need that actually, let the entry in the cmake gui stay red. just hit generate... does this work for you? -- -- -- --**- Stefan Kubicek Co-founder --**- keyvis digital imagery Wehrgasse 9 - Grüner Hof 1050 Vienna Austria Phone:+43/699/12614231 --- www.keyvis.at ste...@keyvis.at --- -- This email and its attachments are --confidential and for the recipient only--
Re: Getting the objects to which a material was assigned in siOnEndCommand
yes, we need improvements to the SDK to bring parity to the mental ray integration in regards to scene graph changes. On Mon, May 7, 2012 at 9:14 AM, Nicolas Burtnyk nico...@redshift3d.comwrote: It's absolutely essential for the system to not miss anything - a false negative will mean we're rendering data that's inconsistent with the current state of the XSI scene which will lead to a lot of head scratching and frustration. I'll likely need to accept some false positives in exchange for never having false negatives - a compromise that is completely acceptable in this context.
Re: PyQt For Softimage
hey enrique i have been meaning to create an example 'synoptic' but haven't had time. my current inspiration for a synoptic view is very similar to paolo's zvgui... http://www.paolodominici.com/products/zvgui/ there are a lot of fancy aspects to it, but i think the built in synoptic editor and the panning are the most attractive parts of it. i hope you can share your findings using pyqt as a synoptic view for animators. s On Mon, May 7, 2012 at 3:32 AM, Enrique Caballero enriquecaball...@gmail.com wrote: Just bringing this thread back to life. We are getting more into using PYQT here and I am looking into completely replacing synoptics and use PYQT instead. I was hoping somebody could help me figure out how to get information from XSI sent to PYQT currently everything that I have done has been the opposite, where PYQT drives something, but does very little evaluation of the scene. An example would be. When a characters facial animation is animated, and the time slider scrubs, I will need the PYQT slider that drives that facial animation to detect the value change in XSI and show its new value in the menu. Currently I don't really know how to do that, as the example SignalSlot function that comes with this implementation only covers something with a registered event. Do I need to create onValueChanged events for every value on the rig? any help would be awesome, I'm pretty new to PYQT still. thanks, Enrique On Wed, Feb 29, 2012 at 3:29 PM, Enrique Caballero enriquecaball...@gmail.com wrote: For those of us using linux, is there an out of box PYQT implementation such as this that we can use? On Thu, Dec 8, 2011 at 6:45 AM, Alok Gandhi alok.gandhi2...@gmail.comwrote: Oh ok, thanks for the info Steven. On Wed, Dec 7, 2011 at 5:24 PM, Steven Caron car...@gmail.com wrote: well for your reference, i am using Alan Jones' cmake softimage module. it automates a lot of the process for creating softimage plugins with cmake. it can be found in the src\CMake\Modules folder. its very handy :) s On Wed, Dec 7, 2011 at 2:21 PM, Alok Gandhi alok.gandhi2...@gmail.comwrote: Yep that works too, I knew that it did not need shader lib for sure, but was not sure, so I set the path anyways. On Wed, Dec 7, 2011 at 2:08 PM, Steven Caron car...@gmail.com wrote: well it doesn't need that actually, let the entry in the cmake gui stay red. just hit generate... does this work for you? -- --
Species in NYC
Hey everyone, Just wanted to drop a note that Chris Covelli and I will be in the city tomorrow doing some demos at some of the studios. We are planning to go out tomorrow night for a few drinks. We would love to see anyone who is around. Not sure where we are meeting for drinks yet but will post back to let everyone know. Later! Eric Thivierge
Re: PyQtForSoftimage vs Blur-dev
Hi Ana, Qt on windows relies on the win32 api as well as Softimage (MFC). As they share a common base, both are hackable. So, whatever the strategy that is used, it still remains the same ... hooking a widget into the main softimage app by going thru the win32 api. The only main difference I would say by using pyQtSoftimage (except the source codes) is to not have to deal with all the overhead and extra layers Blur developers put over their modules/wrappers ... Those packages are both first steps considering more should be done by spending time on it and make things working better. I had lot of feedback around me saying studios are using this implementation ... so it should be solid enough to go with it. So feel free to make your own additions and come back here to share them with us ... :) -jo 2012/5/7 Ana Gomez agomezalca...@gmail.com Hello everybody! I'm trying PyQtForSoftimage and I'm wondering some questions. As far as I know, this plugin is based on Blur tools. So, which are the differences between them? Do they have the same features? (of course, from the point of view of PyQt) Thanks in advance and thanks to Steven Caron and Jo Benayoun for sharing it.
Re: PyQtForSoftimage vs Blur-dev
hey ana originally i planned on exposing blur's pyqt implementation and simplify it but its proved a lot harder (not impossible). then jo came along and showed us a much easier way to host a pyqt app inside softimage. so pyqtforsoftimage is a lot lighter than blur's implementation. the python key stroke rerouting is very similar, in fact is a near copy of it. as jo points out, blur's implementation has a lot of wrappers to provide cross platform (3dsmax, softimage, motionbuilder) functionality but that comes at a cost. outside that, they provide very similar functionality because they really just expose pyqt. with all that said, pyqtforsoftimage needs to be tested more and pushed harder. i would love to hear more about how people are using pyqt and provide example code and tutorials. there is one issue someone logged last week... https://github.com/caron/PyQtForSoftimage/issues/2 please test to see if this is an issue for you and if it is provide feedback on the github issues page. s On Mon, May 7, 2012 at 12:38 PM, jo benayoun jobenay...@gmail.com wrote: Hi Ana, Qt on windows relies on the win32 api as well as Softimage (MFC). As they share a common base, both are hackable. So, whatever the strategy that is used, it still remains the same ... hooking a widget into the main softimage app by going thru the win32 api. The only main difference I would say by using pyQtSoftimage (except the source codes) is to not have to deal with all the overhead and extra layers Blur developers put over their modules/wrappers ... Those packages are both first steps considering more should be done by spending time on it and make things working better. I had lot of feedback around me saying studios are using this implementation ... so it should be solid enough to go with it. So feel free to make your own additions and come back here to share them with us ... :) -jo 2012/5/7 Ana Gomez agomezalca...@gmail.com Hello everybody! I'm trying PyQtForSoftimage and I'm wondering some questions. As far as I know, this plugin is based on Blur tools. So, which are the differences between them? Do they have the same features? (of course, from the point of view of PyQt) Thanks in advance and thanks to Steven Caron and Jo Benayoun for sharing it.
OT: @ fmx
Hi fellows, I'm here in Germany. We'll be presenting a new project we are workinghttp://getteamup.comon at FMX. If you are around, please drop by at our Session on the 10th, or just drop me a line. Sorry for the plug, but I thought this might interest you. :) cheers, -Thiagoq
Re: OT: @ fmx
For those of us who can't make it, I hope you'll be sharing lots of details soon! Paul On May 7, 2012, at 7:57 PM, Thiago Costa thiagocost...@gmail.com wrote: Hi fellows, I'm here in Germany. We'll be presenting a new project we are workinghttp://getteamup.comon at FMX. If you are around, please drop by at our Session on the 10th, or just drop me a line. Sorry for the plug, but I thought this might interest you. :) cheers, -Thiagoq
Re: PyQtForSoftimage vs Blur-dev
i was looking into implementing PYQT at our studio for a while. I used both blur and PYQT for softimage and in the end decided to go with PYQTforSoftimage because it is much lighter. As jo and steven said, the blurcore has a lot of overhead, and I did not want to bloat our pipeline with tools that we might not use On Tue, May 8, 2012 at 3:44 AM, Steven Caron car...@gmail.com wrote: hey ana originally i planned on exposing blur's pyqt implementation and simplify it but its proved a lot harder (not impossible). then jo came along and showed us a much easier way to host a pyqt app inside softimage. so pyqtforsoftimage is a lot lighter than blur's implementation. the python key stroke rerouting is very similar, in fact is a near copy of it. as jo points out, blur's implementation has a lot of wrappers to provide cross platform (3dsmax, softimage, motionbuilder) functionality but that comes at a cost. outside that, they provide very similar functionality because they really just expose pyqt. with all that said, pyqtforsoftimage needs to be tested more and pushed harder. i would love to hear more about how people are using pyqt and provide example code and tutorials. there is one issue someone logged last week... https://github.com/caron/PyQtForSoftimage/issues/2 please test to see if this is an issue for you and if it is provide feedback on the github issues page. s On Mon, May 7, 2012 at 12:38 PM, jo benayoun jobenay...@gmail.com wrote: Hi Ana, Qt on windows relies on the win32 api as well as Softimage (MFC). As they share a common base, both are hackable. So, whatever the strategy that is used, it still remains the same ... hooking a widget into the main softimage app by going thru the win32 api. The only main difference I would say by using pyQtSoftimage (except the source codes) is to not have to deal with all the overhead and extra layers Blur developers put over their modules/wrappers ... Those packages are both first steps considering more should be done by spending time on it and make things working better. I had lot of feedback around me saying studios are using this implementation ... so it should be solid enough to go with it. So feel free to make your own additions and come back here to share them with us ... :) -jo 2012/5/7 Ana Gomez agomezalca...@gmail.com Hello everybody! I'm trying PyQtForSoftimage and I'm wondering some questions. As far as I know, this plugin is based on Blur tools. So, which are the differences between them? Do they have the same features? (of course, from the point of view of PyQt) Thanks in advance and thanks to Steven Caron and Jo Benayoun for sharing it.
RE: Why is Material::operator private?
Hi Nicholas, My name is Bosheng and I am a developer from Softimage. Thank you for your statement here and your mention is true, but I think we designed these comparison logic purposely. We just defined our CRef and that way. I guess what you would like to do is twisting the predicate in your sort function a bit to: using == to check whether the two operands are the same object before invoking or . Sorry for the inconvenience. Thanks and Regards, Bosheng. From: softimage-boun...@listproc.autodesk.com [mailto:softimage-boun...@listproc.autodesk.com] On Behalf Of Nicolas Burtnyk Sent: Saturday, May 05, 2012 7:31 AM To: softimage@listproc.autodesk.com Subject: Re: Why is Material::operator private? Well I'm glad this list exists! It's great for bouncing ideas around and the fact that the Soft devs are actually active here is fantastic! I hope I can start to contribute more and be helpful to others. On Fri, May 4, 2012 at 3:59 PM, Raffaele Fragapane raffsxsil...@googlemail.commailto:raffsxsil...@googlemail.com wrote: I don't know who you are Nicolas, but I'm suddenly glad we have you around on the list and using Soft :) On May 5, 2012 2:21 AM, Nicolas Burtnyk nico...@redshift3d.commailto:nico...@redshift3d.com wrote: Unfortunately, that doesn't work. CRef::operator performs a lexicographical comparison using CRef::GetAsText(). In my scene when I have the same material assigned to multiple objects, the CRefs I get back from X3DObject::GetMaterials() give me different results from GetAsText even though they compare equal (and they are indeed the same material). Example: A bunch of objects with Scene_Material assigned, and 1 object (torus) with Material assigned. This is the result of calling GetAsText on all the materials I get from calling GetMaterials on all the meshes in the scene. //all materials (unsorted) Model1.sphere.Scene_Material Model.cube.Scene_Material Model.cylinder.Scene_Material Model_Instance.torus.Material cone.Scene_Material Material disc.Scene_Material Material These materials are in a std::vectorCRef called materials. I then want to remove duplicates, so I call: std::sort( materials.begin(), materials.end(), CRef_Pred::less() ); materials.erase( std::unique( materials.begin(), materials.end(), CRef_Pred::equal() ), materials.end() ); where the predicates here evaluate to CRef::operator and CRef::operator==, respectively. In case you're not familiar with the stl algorithms, std::unique removes duplicates from a sorted range by moving them to the end of the container and returning the new end of the range with no duplicates. The important thing is that the range must be sorted for the algorithm to work correctly. Turns out that the lexicographical comparison is not appropriate for CRef sorting since 2 CRefs can be both equal and less than at the same time! CRef m1, m2; m1.Set(Lcone.Scene_Material Material) m2.Set(Ldisc.Scene_Material Material) m1 == m2; //true! m1 m2; //true! assert( (m1 == m2) != (m1 m2) ); // --- Wrong assumption! So, as a result, calling std::sort on my vector of CRefs doesn't correctly sort the vector: //all materials (sorted) Model.cube.Scene_Material Model.cylinder.Scene_Material Model1.sphere.Scene_Material Model_Instance.torus.Material -- Oops! cone.Scene_Material disc.Scene_Material And therefore my removal of duplicates doesn't work correctly: //all materials (unique) Model.cube.Scene_Material -- ! Model_Instance.torus.Material cone.Scene_Material-- ! So CRef::operator is not suitable for sorting. On a side note, that means it's also not really suitable for use in a map (the line in the docs This is useful for sorting operations with stl maps. is not correct.). -Nicolas On Fri, May 4, 2012 at 4:27 AM, Marc-Andre Belzile marc-andre.belz...@autodesk.commailto:marc-andre.belz...@autodesk.com wrote: Do you really need to instantiate ProjectItem objects ? Try using CRef::operator in your predicate instead. -mab From: softimage-boun...@listproc.autodesk.commailto:softimage-boun...@listproc.autodesk.com [softimage-boun...@listproc.autodesk.commailto:softimage-boun...@listproc.autodesk.com] on behalf of Steven Caron [car...@gmail.commailto:car...@gmail.com] Sent: Thursday, May 03, 2012 8:46 PM To: softimage@listproc.autodesk.commailto:softimage@listproc.autodesk.com Subject: Re: Why is Material::operator private? in a rendering context speed is paramount, keep up the good fight! and the pressure on the autodesk to make the improvements you need. On Thu, May 3, 2012 at 5:41 PM, Nicolas Burtnyk nico...@redshift3d.commailto:nico...@redshift3d.commailto:nico...@redshift3d.commailto:nico...@redshift3d.com wrote: the on-the-fly construction of 2 ProjectItems to do the comparison is a lot slower than if I had those ProjectItems (or Materials or whatever) already. Slow is a relative term so let me be more specific - on my machine, constructing 100
Re: OT: @ fmx
Cool, I will be there :-) Cheers Steffen Sent from no IPhone Am 08.05.2012 01:57 schrieb Thiago Costa thiagocost...@gmail.com: Hi fellows, I'm here in Germany. We'll be presenting a new project we are workinghttp://getteamup.comon at FMX. If you are around, please drop by at our Session on the 10th, or just drop me a line. Sorry for the plug, but I thought this might interest you. :) cheers, -Thiagoq