Jump to content
[[Template core/front/profile/profileHeader is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

Everything posted by LaidlawFX

  1. Houdini 20 Wishlist

    Statistically improbable until you factor in a pandemic! Houdini 19 is coming out this Halloween season! TM data analysis says it should have been here this summer based on years of old... I have to say I awoke from a long slumber for this release. So I am looking forward to seeing what good offerings there are in this issue. My only wish is for SideFX to still keep on being independent and carving its own path. Trying to get folks to understand the heart of Houdini is no small feat. As always, this is a non-official wish list. So please submit BUGs, RFEs, and Questions directly to support. Also for anecdotal questions and rants branch them to another thread. People will more likely help you in a dedicated thread. -Cera
  2. Houdini 19 Wishlist

    The End is Nigh! Houdini 18 is COMING!!! Kicking this wish list off as by all trending and statistical estimated Houdini 18 should be arriving in the Halloween time period of old. My first wish is a call to ARMs! Seriously speaking maybe one day Python 3 inline with the Visual Effects Society guidelines for 2020, but long term a lot of hardware profiles are switching to ye-old ARM based architecture something as old as SideFX itself and installed on over a 100 Billion devices. The catch is these are the IOT, Mobile, and XR hardware of the world which to be fair is still behind server racks. However the phone has drastic computing potential that if Intel would stop fighting it due to licensing issues ARM and RISC would have taken over the market. I really hope COPs has a second a life. It's easier to use SOPs and VEX for processing images and HEIGHTFIELDS than with COPs with far less bottle necks and crashing. The amount of nodes and stability in COPs is falling far behind all other contexts including every ones darling wrangle node. I would almost wish for COPs to be fully integrated into SOPs or MATs. Streamline the support into two heavily invested areas already. Gaining several debugging abilities that are just not implemented in COPs like the Geometry Spreadsheet. There are 151 nodes in COPs in which a lot of them could become quickly redundant if ported to either SOPs or MATs. If converted to MATs we would then have a Substance equivalent, especially if they gave the node UI a little love to show per node images. The biggest risk is overloading another context, but to be fair COPs is so severely under loaded it falls into the second tier of networks, so porting those tools would be a mere blip on the radar of total node count. My most realistic wish currently if for subnets and managers to have the flatten ability like foreach loops with the ability to collapse and dive into them. This would maintain networks for those of you who fear the combined context, but also allow to flatten simple networks so you can easily trace and debug all dependencies. As always this is a non-official wish list. So please submit BUGs, RFEs, and Questions to support. Also for anecdotal questions and rants branch them to another thread people will more likely help you for dedicated issues. -Ben
  3. I'm trying to build a list of all the parameters of a certain type from a node in python. For instance for a geo node, I want to build a list of all the toggle parameters on it. Comparing hou.node('/obj/geo1').asCode() and hou.node('/obj/geo1').parms() was going down a very messy road. I was hoping there was a way to use just the .parms() and check if each parameter is a toggle type? *Edit I feel like this may have something to do with it, https://www.sidefx.com/docs/houdini15.5/hom/hou/ToggleParmTemplate However only when I add a spare parameter and run .asCode() does it seem to reference this, and I can compare against .parms(), but it doesn't work on regular parameters.
  4. Channel Variables and uses?

    Hello, I came across the channel variables doc and was wondering if anybody could give me some short worded examples of how you would use them. Like the $CH was cool to use for an adjunct to relative/absolute referencing to modify the string, by replacing tx, ty, tz. The segment stuff has no context for me, nor the slope stuff. Help Channel Expression Variables Bad linkage, Type Global Expression Variables in sesi's help Here is the list I'm most curious about. Channel Variables $IV In value (value at start of segment). $OV Out value. $IM In slope $OM Out slope $IA In acceleration $OA Out acceleration $LT Local time - not including stretch or offset $IT Start time of segment $OT End time of segment $LIT Local start time of segment $LOT Local end time of segment $PREV_IT Previous segment start time $NEXT_OT Next segment end time
  5. Force Houdini to release files?

    The best answer I can say as to Alembic vs FBX is to pick the right tool for the job. Outside of playing 20 questions to ask about nuances it's easy to go either way. You may want to keep FBX as it's commonly supported across all packages. There is no nice Alembic Object node, so you are stuck using the Windows menu. The File Sop and Alembic Sop do a lot of the same thing. I guess I would say it comes down to are you porting materials, and how big are the files? With materials, I would stick with FBX unless you got a little R&D time to pack the materials. Or with big pieces of geometry go alembic. I would scarily enough suggest trying USD if you are still at the point of deciding a new format. That will be the best long term. Your tifs should not be held in memory by Houdini. EXR can have that issue like Alembic. It's possible that a specific node may be holding the texture in memory. The scene would have to be debugged to figure out that one. They don't refresh in the viewport in Houdini unless you press the refresh option in the windows bar.
  6. Force Houdini to release files?

    What texture format are you using?
  7. Force Houdini to release files?

    I believe this has more to do with the design of Alembic than Houdini. Don't quote me on this, however, Alembic turns into a memory like file state so that it can stream the data. This is one of the unique "features" of alembic compared to say FBX. This is how it allows the format to stream in the data so fast at runtime speeds. The workaround if you need access quickly and still want to keep performance, is to place a file cache node after it and write the alembic information to disk into Houdini's native file format, and then delete the alembic cache from Houdini. You can set this up in an HDA, with a call backscript, or in the hda's python module to press import alembic, press render file cache, and then press delete alembic file tree. If you need the hierarchy for say a DOPs sim it's best to make a copy of the Alembic file into something like a TEMP directory if you need simultaneous use of it.
  8. Open world roads

    I've only worked on a few AAA franchises, with a few GDC talks you may have watched. Maybe you should wait on someone else to answer
  9. Open world roads

    If you know how your terrain data is sliced for the 20kx20k world, you can just align the slices of the road geometry in Houdini. A roundtrip-able spline data is not common with off the shelf tooling. It's generally in the domain of studio pipelines. Even then mostly it's a one way process. It starts in the creation software saved to an external file then backed down in the engine. It generally does not come back in from the engine. However with Houdini Engine, you can take the splines you've created and write them out as your own data fromat. .svg should be able to handle most work by splines. However, Houdini does not have a native spline export tool. So you would be making one in python, or C++. You could write the data out as .csv if you really want, but then everything truely is a custom pipeline. One of the more efficient ways of doing open world roads is not to use mesh prefabs for the road, but to bake the main road texture directly into the heightmap. Then you instance decals onto the road to make it unique. This saves you from having multiple meshes representing the surface of terrain. You can then add street lamps, road signs etc via this method. The prefab for meshes works generally best in simple contained game environments like a city you teleport in and out of. Especially a city that does not use a heightmap. With a 20K world you will most certainly be using a heightmap nowadays.
  10. Exporting geometry to multiple meshes (FBX or Houdini Engine))

    Two alternate ways with Houdini Engine would be to make an object level subnet hda, then set up an geo node for each child and object merge each child sop piece into it. The other hack way to do it in an hda is to use groups an on the Unity hda importer toggle on the split geometry based on groups.
  11. Houdini 19 Wishlist

    Sometimes I feel like I can predict the future... https://developer.apple.com/wwdc20/videos/ Arm64 on mac will be a thing now.
  12. OpenCL Issue

    Hello, Houdini should respect your graphics card. The RTX 2060 is from January 15, 2019 so make sure you are on a version of Houdini that is created past that date i.e. if you are working with the latest production build of Houdini this should not be an issue. The second thing I would look for is to make sure your drivers are up to date. If they are the latest driver maybe roll back to last major driver, sometimes the newest drivers are ahead of the dcc developer cycle. The third thing I would check is to see if any other dcc or game does not recognize them too. Then it may be a more common issue like the drivers are the problem, or your motherboard may need updated drivers to see it correctly. Fourth I'm guessing this is very slim is that your OS is not recognizing the graphics card for some reason. Perhaps the cards is bad, or not set correctly, or your using an OS that may not support the drive. Houdini and Nividia's rarely have an issue. If it's none of these issues above I would send in a support ticket to SideFX with your system info Help > About and saving out all the info to disk and the card information. There is a rare chance that this specific GPU may be different. Generally that is reserved for the likes of your onboard intel graphics cards on your motherboard, which Houdini does not like, and will not support.
  13. changing $Home location

    For instance in your Houdini.env # Houdini Environment Settings # ACME = P:/path/on/disk HOUDINI_PATH = $HOUDINI_PATH;$ACME;& ACME will be evaluated first and then when HOUDINI_PATH is evaluated it can use it in the path. Of course Houdini.env is for your personal preferences. So say you use windows environment, do Windows Key + Edit the system Environment Variables, in the System Properties press the button Environment Variables... Here you can enter in local or system variables. Path on Windows is very common for say adding access to the command line for .exe say python, or Houdini's bin directory. If you put $HOUDINI_PATH here it will be processed first in the system. Thus having the inclusion of $HOUDINI_PATH; in my Houdini.env declaration of HOUDINI_PATH. Alternatively in this context any variable will be expanded prior to anyone of them being called. So unlike in Houdini.env or a python or bash script. You do't have to worry about order of operations. One of the more common ways to set HOUDINI_PATH in production is via wrapper made by python, or a bashrc in linux. If you declare ACME then HOUDINI_PATH in it, and then launch Houdini or say Houdini Engine, any variables will be called first before Houdini.env. This happens with a parent child relationship where each application that spawn another application will inherent the parents "environment" variables. There are many other ways to set up the environment variables, but this should give some of the more common methods with order of operations concept. Hope that helps.
  14. changing $Home location

    You just need to set them before, the Houdini ones are declared. Setting them in a shell prior to launching. Setting them in the global environment variables, they will all condense when anyone is called. You can even do it in Houdini.env if you set them prior to $HOUDINI_PATH.
  15. export exploded view animation fbx [✔️]

    The python and the fbx part can't really be speed up that much. The python code can be cleaned up a bit and made more robust. This is a few year old code that I abandoned. The extraction of transforms can be speed up quite a lot with a new set of nodes in Houdini. FBX in general is an outdated format for this type of work. If you are looking for straight transform Vertex Animation is the best bet. That where all my latest code and development have gone the last few years. As far as learning python, just picking up snippets here and there in Houdini helps. It does not have to be a full course. Like this example where you had a specific problem to solve. You might not understand all the code, and by my own admission it's not the best, but once you see more code like it you'll be able to compare. The basic concept of just having python in Houdini press a button when another task is done is where I got my start. I wanted to trigger one sim after another.
  16. export exploded view animation fbx [✔️]

    Preferably not. Thanks for thinking of it though.
  17. export exploded view animation fbx [✔️]

    Unlock the hda and copy channel reference the start/end frame to the ROPs/FBXSplit start/end frame. I forgot how slow of an export this method was. You will know when it is exporting.
  18. export exploded view animation fbx [✔️]

    Ok I shared the wrong FBX code with my repo. Need to fix that at some point. I hacked my own node to work again. It is really bad legacy code at this point, lol. Hopefully it works for you. It was missing a chunk of code that copied the extracted transforms to the geometry. Which is doing an old extract of transform at this point. Oh well, legacy junk. tempexporter.hda RBDtoFBX_export.hiplc
  19. export exploded view animation fbx [✔️]

    So I have my own that does this. I pulled it off Orbolt when SideFX came out with theirs. It still resides here : https://github.com/LaidlawFX/LaidlawFX/blob/master/otls/LaidlawFX.sop__rbdfbx__1.0.hda with the python needed here : https://github.com/LaidlawFX/LaidlawFX/blob/master/scripts/python/LaidlawFX/fbx.py You would need to pull the whole repo if you want to use it directly to add it to your $HOUDINI_PATH. If you do know python, then you can just grab the code and modify it. For an FBX export, you need to build an object tree of your geometry cloud at your initial state. Then extract the transforms from the moving objects, and reference the transforms on the object level nodes. There are a few examples if you look for that workflow out there. Since Houdini does support what you want from the exploded directly out of the box, you will have to pick your poison. There are a few ways to extract the positions you need, but you will need some python to create the object tree.
  20. export exploded view animation fbx [✔️]

    You need to change your sphere2 to a polygon from a primitive. FBX only works on polygon shapes. You can still use packed objects in the dop. The SideFX RBD to FBX will export packed object only based on the information given from DOPs, reverse of what I was saying. It has to be regular geometry prior to being pack however. I forgot they did not update it to work on non-RBD animations like your exploded view. To test just re-import it back into Houdini via the File > Import > FBX... menu rbdfbx_export_scene.hiplc
  21. orientation problem

    You'll need to effect the system that created the point cloud that the file sop is looking at. One way of doing this is to set the up and N vectors on the original point cloud, and then rotate. Example attached. rotate_v1.hiplc
  22. orientation problem

  23. export exploded view animation fbx [✔️]

    You'll need to provide an example scene of what your doing. FBX only exports regular geometry not packed geometry.
  24. export exploded view animation fbx [✔️]

    RBD to FBX shoudl work. Make sure all the pieces are correctly identified with the name attribute as separate pieces. The pieces should not be packed.
  25. There are a lot of ways to do it depending on the system and the personal preference. I don't personally have a good example maybe some one else will. You could do something as old school and simple like a bashrc script, or a .bat. Python wrappers are the most common ones now a days. Setting the environment there then launching Houdini from inside it. You could even set them in the windows/mac system variables too. Just having a common wrapper works the best though. There are quite a few environment management systems if you really want to go all in. You can then use the same method for all of your dccs. Most of that process is not Houdini specific so I go to stack overflow first