Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by LaidlawFX

  1. So in this example press the reload button and it will populate the number of tabs. This will help it from being autoset every time your values upstream change. You should avoid having the system inadvertently wiping previous set values in the multi-parms. This code is in the call back script. It looks for the name attribute information on the geometry of the node iterPython. Based on that if finds the length of the list. It then will set it to the multiparm. node = hou.node('iterPython'); geo = node.geometry(); attr = geo.findPrimAttrib('name'); list = attr.strings(); iter = str(len(list)); hou.parm('extrude').set(iter) ForLoopNameMultiparm_02.hip
  2. How to reload .sim files

    Welcome to the forums. If you search the forum you should see a few post on the subject. Good Luck
  3. I did notice some cook lag. You can do a callback in the group menu to update the drop down. You might be best off putting a button next to the multiparm list that will update when the user presses it. Avoid the issues where a bad cook will wipe out your settings. I would have to grab my example of it. It's a line of python or two. Sleeping baby wins this round.
  4. You need to use a foreach loop to iterate over your nodes. The add sop is a different case as it is a basic for loop. Where as you want to iterate over select items. As of note, avoid using groups to manipulate data like this. Since Foreach's no longer take groups as input it is best to handle them with attributes. Especially in consideration of the common name attribute, you save a lot of data overhead as opposed to having multiple groups to do the same work. Groups only represent Boolean data. They are either in or out. Unless in the case you have overlaps, but even then you should default to name first then groups for secondary sources. I have encapsulated the example in a subnet for a better real world example i.e. eventual use in an hda. On the subnet is the multiparm block. I split out the groups you want to work with first and bypass the rest. The multiparm list number is channel references to the max number of items in the list. Then I foreach loop on each name attribute. In a for loop like add sop you can just channel reference the multiparm number into the iteration of a for loop. Here you need to ne a bit tricky and take into account eh foreach loop will go inorder of the list of items. In order to make the user aware of what item they are rotating I made a label that indexs into the list items of the name attribute so you can identify which item is being manipulated. For additional help look at how I modified the channel references from the multiparm block to the parameters in the for loop. You need to edit the channel references so the # in the interface is the equivalent of the loop iteration in the for loop. ForLoopNameMultiparm.hip
  5. Houdini Engine is a realtime bridge between the two.
  6. Open Python panel from shelf item

    http://www.sidefx.com/docs/houdini/hom/hou/PaneTab.html I believe clone is what you are looking for.
  7. I can't take credit for it, but it needed to be shared. This made me cry with laughter.
  8. Add RealFlow or not?

    Yeah Houdini is more a toolbox than a set of specific tools, which is good and bad. The cloud setup is a few shelf buttons, and the fluid/particle setups are a few buttons and example files away. The defaults if you keep them within default Houdini scale, so not trying to make planets or microscopic sims, work pretty well. You can allways scale before and after sim. VEX is not really needed in DOPs. You can use it for sure, but it's the hundreds of microsolvers you use instead. If you run a few shelf operations you can see for sure the patterns on how to run the setups. DOPs has a different network flow than SOPs or COPs, etc... as time is the primary cyclical factor. So if you have time to play with a few of those setups to get your bearings, then it can be pretty quick. If that makes more sense wording it that way. Realflow on the other hand you don't have to worry how another context works it's just plug and play, like most plugins.
  9. Add RealFlow or not?

    Real flow is a very powerful piece of software that used to out handle Houdini real well. They have a lot of default behaviors that when you use it out of the box's are better than Houdini's setup. As far as adding it once you have Houdini is a different story. It used to be people would have realflow and the debate would be should you add Houdini. As Houdini was/is the more expensive product. The major different is Houdini was designed as a full 3-D app and Realflow is a really good specialist software. For those who only need a particle system and say after effects, Houdini doesn't make much sense. Or if you want you wanted to pair Realflow with Maya or Max it makes a lot of sense. Also if you are on a short term project with a Realflow specialist versus a Houdini specialist it makes sense. Additionally since Realflow is not a full 3-D package you will need to render, surface, instance, or cleanup in another app. Which often was the case of using Houdini or going straight to a 3rd party render engine. In your particular case it doesn't make as much sense. Houdini's particle and fluids are extremely comparable in today's builds. The default's in Houdini are not as good as in Realflow, but you can get there pretty quickly if you have a bit of time. Also if you already paid for Houdini FX you don't really need to splurge the extra money. In the end it comes down to time or money.
  10. I've attached an example where I've created the attribute id in a wrangle sop and and then used the add sops attribute to connect the lines. There are a few more alternatives, depending on what your goal is. Circunferences lines_2.hip
  11. You can save the point number as an attribute, and then use the add sop based on attribute value. But you can not have point numbers that repeat values. That is how the data entries are stored. Attributes will allow you to have multiple of the same value. Additionally you can do skin, and convert to lines as an alternate for the add sop. Also you can play with the sort sop to organize your points and prim numbers.
  12. Getting rotations from a copy stamp

    http://www.sidefx.com/docs/houdini/copy/instanceattrs.html Look at these help documents. You can use this same point cloud to visualize with copy to points, or instances at object to visualize the effects. If you system needs euler values to define rotation, you can set them as euler with a random seed and then use a euler to quat vop or equivalent to set the houdini quaternion option of rot or orient. If you are using rot as the attribute make sure you set your up and N attributes. http://www.sidefx.com/docs/houdini/nodes/vop/eulertoquat.html
  13. So there are a few options to do this. The method I described above can be done via python. The GameDev RBD exporter can do this separating based on name attribute. If you want I have my own version you can use too. In general instances will be your best bet. By standardizing your part library you can supply a point cloud to copy stance or an instance obj node. Unity will then treat these instances as prefabs. The latter instance object node will be more production friendly. Also this instance method will be faster to process and more runtime friendly than unique geo. You can't do what your intending via attribute that way. However, you can use vertex color, the extra UV layers, and custom attributes to be processed by Houdini engine by the shader and C#. These would be custom tricks to make it do what you want. Look at the Vertex Animation set up to see how this works as far as shaders. The fading out of the wall elements is done entirely in Unity. The best method is for each element to be a unique prefab like the instance, or rbd export method. As when the camera ray to your target intersect a prefab it can then fade it out. Hope that makes more sense.
  14. With Houdini Engine, you used to be able to use groups and enable an option on the Houdini Interface in Unreal to separate them based on groups. So depending on how old your version is you could do that. I'm not sure when they made the change, but now you just put your geometry into separate object nodes. The simplest way to do this is to create a object level subnet and inside create all your geometry in one geometry node called data or something, and shut of the the object level display parameter. Then create a new object for each element you want to separate and place object merge nodes in there. If you think of this in context to how Maya and Max works it will make more sense, one object equals one mesh.
  15. Measure length ?

  16. Measure length ?

    In addition to what Jesper said, even if you don't model to scale, but know the relative conversion ratio of your model the value should be correct. For example, if you are taking terrain data and scaling a mountain to the correct size, you can not do it at real world scale due to precision issue of 32/64 bit precision, however, you can scale your object by a percent and be good enough for CG.
  17. Measure length ?

    You can use the length vop from the original surface to the displaced surface and export to an image plane. If you have not changed scene scale, and your model is to correct units, the displacement should be in meters.
  18. Blackmagic Design Fusion, output space for imported EXR

    Houdini will export in Linear by default. The preview window will do a basic gamma 2.2 curve as I understand. Docs here : http://www.sidefx.com/docs/houdini/render/linear.html So you would not want a custom that just does a general curve not the "standardized" curves in the drop down.
  19. The file sop has been upgraded in recent versions so you can import geometry directly with out funny values required that the importer uses.
  20. Control Energy Conservation ?

    If you are picking the color in Houdini you are picking it in linear space. If you want to pick it as a float versus a vector, you can wire a float into the input. Then you can enter just .02, or just enter .02 in all three values as the values are 0-1, not in 256 numeration.
  21. Control Energy Conservation ?

    In general you should not use any non-linear textures in the shaders with a true PBR workflow. Then your float value and pixel values will line up correctly. Houdini is setup to assume a linear light workflow through the whole program. When you author them in Photoshop or whatever program you should apply the correct method for your texturing workflow upon export, or as a post conversion, so they are read in linear. Houdini nor most DCC have the full range of options to compensate for all of the different color spaces a texture can be authored in. Generally you can apply a gamma shift or sRGB shift in most programs. Houdini to my knowledge still does not have a sRGB to linear vop node to compensate. Though if you are worried about this already to this extent, you should do the correct conversion from the export to begin with then all the math will work out. I'm sure you are aware of Linear Light workflow, but this document speak directly to it as far as Houdini handles it : http://www.sidefx.com/docs/houdini/render/linear.html It's helpful as a reference guide, the core math is slightly beyond me to explain. I still can't describe a quaternion, lol.
  22. The FBX writer is not very sophisticated in Houdini. You can use the gamedev RBD FBX exporter and it will export it by name.
  23. Control Energy Conservation ?

    If you look at the BSDF in the principal shader you'll see how it controls the levels. I can't explain if mathematically, but it will balance the load for you. If you work with all the sliders for the different contributions and pretend they all represent part of a percent it will make sense. If you overload one of those values or all of them they will progressively flatten the values.
  24. How much instances can I render?

    Looking at the scene file, having depth of field, motion blur, pixel samples set to 8 by 8, diffuse limit to 1, on your ROP will slow it down a bunch. You should balance your samples more. Your tree is insanely dense at 106,318 prims when fully unpacked. You definitely need to do a second pass at your assets. Your instanced tree for a forest is not a hero tree. Even for a hero tree this is way too dense. You'll certainly want LODs too. Especially for the dense part of your forest. It's not surprising at all why it is taking so long to render.
  25. How much instances can I render?

    Collapsing the amount of calls is a very old fallback, still used in optimized renderers like game engines today. Generally it's done in a pre-compile pass with out one's knowledge. I'm guessing MtoA is collapsing a bunch of those calls under the hood if you are actually instancing leaves on top of instanced trees. Are you using another plugin to actually set those up, or are you doing exactly as described? Mantra is smart, but since it has a lot of flexibility you can still make it choke quite easily. Not sure about the ability with apprentice on something of this scope. So there could be limits I am not aware of. You can batch your environment into as many chunks as you want to best feed it to any engine. Whether your delayed load is a single tree or a cluster of trees just depends on your environment. Pre-baking into different IFDs(same as .ass) will help load issues for sure. How you batch that is up to you and varies per a scene. The Delayed Load is a pointer file for those pieces of geometry in the final .ifd for the scene. You can look at the ifd for the scene and see the actual path to that file as opposed to the geometry in the ifd. If your ifd is larger than a few mb you can tell you'll have issues already. Make sure you convert your incoming geometry into a native file format like .bgeo so it does not need to process it at render time. You can use a Mantra Archive if need be that will pack the materials and strip the attributes, too. You can do this in SOPs, too. .bgeosc will be the fast and most compressed for mantra. Make sure you are not using fbx or .obj as it will need to do conversion each time. You can also use alembic delayed load to avoid this conversion issue too. Anytime a computer program can not keep the process in RAM and has to save it disk should be a large warning flag. When a program goes from RAM to saving on disk process time will jump dramatically. So you need to balance your processing load correspondingly. You can change the $TEMP and $HOUDINI_TEMP_DIR to an SSD drive, but like I said if you are fallign back on that it's a bit worrisome. One of the things with time may be the density of the meshes in the scene. You may want to use some LODs. A render engine can reduce one large poly to a pixel easily, but a large number of polys in a pixel it will take longer to process. From games processing of forest what type of density do you have in your leaves is important. Are you leaves 100points, or only the bare minimum for the shape. Also are you using Alpha or Opacity to handle any texture based leaves? Opacity means more tracing. Which leads me to another culprit on time. I take it you are using an environment light for the scene. I would say check how many samples your are sending out from the light and mantra to get the render smoothness. One really dense meshes this can eat up more time. I actually do not know if you can use delayed load on copy to point. But you can use the instances attribute on your points to point to a any object that has the delayed load shader assigned to it. I'm guessing the Delayed Load may not be the final answer. You could actually be having a few other problems too. I admit I did not actually look at your scene file