Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

10 Good


About violalyu

  • Rank
  • Birthday 10/15/1994

Contact Methods

  • Website URL

Personal Information

  • Name
    Wanqi Lyu
  • Location
    Los Angeles, CA

Recent Profile Visitors

1,142 profile views
  1. Hi Houdini friends, Does anyone know if there's a way to just load the metadata of a vdb file without loading the whole file? Trying some load settings on the File sop didn't achieve what I wanted, where "info" and "info bounding box" are both losing the detail attributes which are the metadata fields. Potential options are to use pyopenvdb or inlinecpp with the HDK openvdb classes (?), but maybe there's something I'm missing that is simpler? Thanks so much in advance! - Viola
  2. Hi @Stalkerx777 , thanks so much and sorry about the super late reply! I just realized that I've never replied... In my use case, it turned out to be that the third party library that I'm using is subclassing threading.Thread, and houdini is also doing something for each thread, I forgot the specifics but something related to `HOM_AutoLock`, thus when it runs those threads, something about the lock status cased it to hang
  3. Hi @toadstorm, thanks for the reply! I've tried to understand what it was, and so far I've got some more information on it: The python shell in a Houdini session is not running on the main thread, but the parm callback / shelf script is executed on the main thread (similar reason to when trying to launch any qt related stuff from that python shell it crashes Houdini); Now I can try to spawn a new thread in the shelf script and have it target to my function, however the issue is that calling `Thread.join()` hangs it (I need to get the result from the function, trying to use a `ThreadPool` and getting back the async result hangs the same), and I haven't been able to get a workaround for this yet.... import hdefereval from functools import partial from threading import Thread def test(result): result.append(hou.expandString('$HIP')) def run(): hdefereval.executeInMainThreadWithResult(partial(test, result)) result = [] t = Thread(target=run) t.start() t.join() // this hangs // -- Similar result def anotherTest(result): result.append(hou.expandString('$HIP') t1 = Thread(target=anotherTest, args=(result,)) t1.start() t1.join() // this also hangs
  4. Hi Houdini friends, I'm having a pretty weird issue right now and was wondering if this is something that someone else has encountered before: When I call a function as a callback to some button on an HDA/ shelf script, the result is different from when I directly call it in the python shell of an opened Houdini session / directly in a hython shell. More specifically, when called as a callback, it hangs; while when called from hython it went through as expected; The function involves some general wrapping code, that execute some houdini specific code, and it seems that any call from the hou module would hang when ran as callback. Does anyone have similar issues before / knows more about what might be different when something is executed as parm callback vs. directly from hython? Thanks soooooo much in advance!
  5. Hi Houdini friends, It seems that the flipbook lockfile name changed from 17.0 to 17.5? The hostname was using the one without the domain in 17.5, e.g. it is now .flipbook_lock.<hostname_with_out_domain>-<session_name> Is there a way / an env variable that is stored for this? trying to get it from socket.gethostname() or platform.node() would all produce the full host name with domain, and there seems to be only "HOSTNAME" in env related to this, which is also the full host name with domain. I could try to see if this lock file exists by wildcarding the domain, but just wanted to make sure that there might be a better way to know this for sure? Thanks so much in advance! - Viola
  6. Hi Mark, Thank you so much for the reply! The first part for setting env variables via hou.putenv(), I thought about that at first, then I realized that this would not work for multiple MPlay sessions parented under the same Houdini session( for example, user flipbooked from one angle, and then want to decide if they want to save/publish later, and they flipbooked from another angle/viewport, then we have 2 MPlay parented to this Houdini process,), unless we have a way in Mplay context to know which session it is in, we cannot distinguish which information is associated to which even if we serialized a dictionary and save it to Houdini env, or maybe you know how that could be achieved? Because as far as I know, the MPlay python exec seems to be running as a hython process? and doesn't have any context of the houdini session (nodes etc.) not even hou.ui is availble at that level... AND, I think you are absolutely right about the lock file part, it did created a lock file when it launched, before any flipbook call. I guess that is the mark of the socket connection finished? But thank you soooooooooooo much Mark, I think this is enough to confirm that the mplay session exists! This is really really helpful for me! Best, Viola Lyu
  7. Hi Mark, Thank you so much for the reply! I didn't have the .mplay_lock files existing, .flipbook_lock files do exist. I think the situation here is a little bit different, where the actual scenario here is, I was trying to launch an MPlay session with a given env dict where I stored some information I need in the environment variable via a subprocess.Popen in a dialog I created, and then I was calling the sceneviewer.flipbook() but with the desired settings passes in, so the session label matches the one I brought up, so that I can do things in the MPlay menu item etc. What I've noticed is that, sometimes the MPlay session I brought up may not been connected to the main Houdini process when the flipbook() is executed, so the flipbook() created its own MPlay session and that got the priority so the original one (the one I created before hand) got deleted, and I don't have the desired environment variable anymore. I was trying to see if there's a way that we can avoid this racing situation, other than have a magic number of sleep before the flipbook() runs. Is the .mplay_lock file created after it starts to listen to a flipbook session? Thank you sooooooo much again for the reply!
  8. Hi Houdini friends, Does anyone tried or know, how to get a list of active MPlay sessions from the main Houdini process? Basically like a list of port - Mplay session pairs or the like, or even session labels. Thank you so much in advance! Best, Viola Lyu
  9. Hi Houdini friends, Does anyone have any insights/experience on how you could get information within an MPlay session, for example the session label? The reason for this is that we want to have some support with the flipbook generation where for example we can take the rendered image sequence (filename is set and known) on disk and manipulate them. But when we are doing multiple MPlay session within one scene or, across multiple scenes, we kind of need some information from the MPlay session to distinguish which path to use. Or is there other way that would achieve similar things? Thank you so much in advance! Best, Viola Lyu
  10. Hi Houdini friends, I'm not sure if anyone had this before, I'm having this really weird issue where I specify a digital asset to show some info with its "Descriptive Parm" field, and I specified a parameter for it to read, say 'display_parm'. The result of evalParm('display_parm') shows the correct result, but the actual displayed info is different from this result. In this case it is a string containing 3 parts, the actual displayed part is missing the middle part. It is as if the actual displayed info is using another parm or something. And this is only happening to some of the test cases not all of them. Has anyone had similar issues before? Thank you so much! Best, Viola Lyu
  11. Pyro collision with packed objects

    Hi Dragan, If you would post an example file maybe it is easier to spot on what's going on:)
  12. Pyro collision with packed objects

    Hi Dragan, Maybe try use volume sample in collision and link the VDB of your object as proxy volume?
  13. Emit particles from falling RBD object

    Hi Art3mis, I think maybe one thing is that since it is a packed rbd object in your scene, when you try to source it it was only a point, I did a quick test and it was emitting particles at the center point; it worked as in the video when the torus is a RBD object instead of packed (as shown in attached example). Hope it helps! Best, Viola Lyu particleDopTest_vl.hipnc
  14. growing dynamic curve

    Hi Jason, I've seen this video that is similar where Nema was using pop grain to achieve similar stuff, and he shared his scene file as well so if you want to check it out and have a starting point: Best, Viola Lyu
  15. Simple Circle Packing

    Hi Vusta, Not sure if you still have question about creating the button to reset the sim, but it you do you could try this: You can create a button in your UI and in callback script you can use hou.node('PATHTOSOPSOLVER').parm('NAMEOFBUTTON').pressButton() Best, Viola