nice boots. I think my char (who is presently, unshod) also needs some boots! I was thinking some knee-highs and play around with seeing how well houdini does leather.
A little update on the beauty render, worked on the pose, and got everything into houdini. Working on the light setup. I'll start working on the shaders and materials, once I get the lights working like I want. The final render will have this shot in big, and three smaller thumbnails of different views on the side.
Sorry for the bad quality, I didn't my aprentice hd licence yet. And for some odd reason, when I save the rendered frame, it outputs to a square format, so resizing to the proper format makes the image even more blurry.
Apparently Houdini does not support tangent space normal maps. I can't rebake my maps, because I've made a ton of changes to the low rez mesh, and it doesn't line up with my high rez mesh anymore, and since my uv's are mirrored, it won't work with an object space normal map.
I'm a little bummed out. I can continue without normal maps, but it looks awfully flat. I'll try to find a solution, but houdini isn't very generous with solutions out of the box. It seems very powerful, but not very artist friendly. We'll see if I can find a solution within the billion nodes of houdini, or else it's the end of the road for me.
For deforming geometry, Houdini does not support normal maps. Houdini has strong support for displacement maps - are you exporting from Z-Brush? Exporting a displacement map from there will work in Houdini.
@Robert.Magee Thanks for your help! I saw that houdini supports displacement maps. The problem is I have changed the model drastically(scale, orientation, tweaks to the geometry) so it's not aligned at all with my high rez model. That means I can't bake maps from the high rez model. So unless I redo the whole model, it's difficult. I'll see if I can make a disp map from my normal map.
Erice - do you mean that you have changed the scale, orientation in ZBrush or later in Houdini? have your UVs changed anywhere in the process? If they haven't changed then you should be able to export the displacement maps and it should work fine. I have a guy here that exports from Z-Brush to Houdini all the time. Let me know more and I will share your issues with him.
@Robert.Magee As I like to bake using xnormal rather than zbrush, my working model is very different from my high rez sculpt. And after I finished baking what I thought I needed, I changed the working mesh. The head, the hands were tilted, rescaled, etc...
So unfortunately it's not going to be as easy, for me, than simply going back to Zbrush and exporting disp maps. I brought this on myself, I should have looked at this before, but it honestly never crossed my mind that Houdini wouldn't support normal maps.
@TeriyakiStyle Thanks for the links, I stumbled on those as well yesterday trying to find a solution. The problem is that I can't convert the normal maps that use mirrored UV's to object space normal maps. And that's half my model. I think in the end I'm going to have, some parts with obj space N maps, some with disp Maps, and some with nothing. Hoping it doesn't show.
Yeah so Object Space Normal Maps is buggy as well. So it's displacement maps only. The problem is that if you displace geometry at render time, it's not going to be the geometry used for the cloth simulation, meaning that things will likely poke through the cloth at render time. Sooooo you can untick "true displaments", that way your geometry isn't changed but you still get the details back. I hope it helps someone. I'm going back to trying salvage some disp maps.
@TeriyakiStyle : I haven't done the real simulation yet, (no constraints set, and running only on the dress and coat), but on my test I was running at 1-2minutes per frame, so maybe double that for the final sim. So yeah that would give me ~1h30 for 24 frames. I have an i7 running at 3.10ghz and 8gigs of ram, if that helps you compare. It seems normal to me, actually since you can simulate multiple layers of cloth in one pass(not all cloth solvers can do this, in my experience) it's actually quite fast. I think if you're worried or if performance is an issue, you can simulate on a much lower resolution proxy, and then transfer the animation to a higher res mesh. You lose in fidelity what you save in simulation time though.
1.5 hours for a 24 frames seems a little high. It might depend on how you have the cloth design set up - if the cloth is intersecting the collision geo at the first frame this will cause problems and slow things up. Also there settings in the cloth solver that you can tweak to speed things up a bit.
I'm having issues with the simulation cache. Even with the "Allow caching to disk" option turned on, it doesn't save the simulation. So if I have to reopen the file, I have to redo the simulation entirely. If I check "Explicit Cache" it does save the simulation, but it's unable to pick the simulation from there. The cloth just disapears, after the cached sim frames. Any input is appreciated.
Go to your cloth geometry and after the DOPImport node connect a ROP Output driver. In the ROP Output driver specify the frame range and file path, like c:/myClothSim_$F4.bgeo . The $F4 tells it to put 4 numbers in the file name. Then hit the render button in the ROP Output Driver Node.
After it is done, you can put down a Geometry node and then inside find the file and point it to the bgeo sequence you just rendered out.
Cheers Todd, I'm not sure I understand everything, but it gives me a lead to work from and that's good! However, I can't add the ROP Output driver between my "dotimport" and the "initial" node. The real problem is I don't understand what the nodes do, and how they work. All of this makes no sense to me right now, like what's bgeo, what's up with $$$$ everywhere, and so on. Still a lot to learn and understand, I'm not sure I'll be able to finish in time.
Setting up the cloth was super easy, it's too bad the rest isn't going as smoothly.
The ROP driver has to come after the DOP IMport node. If you used the standard Shelf Cloth Object, then you should have three nodes near the end, something like SIMULATION, REST, and ANIMATION. the last two are referenced by the DOP simulatio nodes to work stuff out (like velocity, etc) and the SIMLUATION node is the one which has all the geo that's been altered by the DOP simulation. So you should be able to take the output ot that node and put it into the intput of the ROP Output driver.
The bgeo is simply one of two Houdini native geometry formats (one is called .geo and I think it's an ascii representation of the geo, and the other is .bgeo, same thing, but in a binary format, so not human readable and smaller in size).
the "$" is part of an expression and is used to prefix a variable. For example, if you have saved your scene (or .hip file) in "C:/myprojects/blah/" then you can easily reference that in nodes that need a file name (like textures, shadow maps, etc) by using $HIP. If you want to get the current frame number use $F, and so on. Here's a list of global variables
So when you add the new file node, it will be on it's own - it will not have any input to it and you'll have a new chunk in the network. In fact, once you set this as the display/render node (see here http://www.sidefx.com/docs/houdini12.0/nodes/sop/ about the display and render flags), then ALL of the rest of the graph/network that you created will be ignored, those node will not get processed, the DOPImport node will not be pulling from the sim, and you won't need to run the simulation anymore, since all you'll be doing is reading in files via the File node. This doesn't mean that you should delete them, if you need to re-run the sim for whatever reason (new settings, geo changes to the original mesh, etc) then you'll just go to the ROP Geo node and re-render the geo again.
An easy technique to keep the two nodes file names in sync (the ROP geo, and the importing file node) is to set the name in the ROP geo node, then right click on the file name and click Copy, then go to the File node and right click on the file name and choose Paste as Relative Reference. This will create an expression that uses the data in the Rop node's file name, and reference's it here in the File node. So you only need to set this once, and then from there on both are linked.
You don't have to use the this method, it's just a simple shortcut for writing the expression from scratch.
Thanks Jim, I think I have a better grasp on the whole thing. I'll try to implement this. So if I get this right, I'll be outputing the simulation to a houdini file that contains the geometry deformed by the simulation. And I have to do this for every piece of cloth. And this will allow me to pause and pick up the simulation at a later time?
It feels a bit odd that it's that complicated, it feels more like a work around, than a built in function. Setting up cloth is as simple straightforward process, with a clean ui and good on screen feedback on what you're doing and how to do it. I was expecting to hit play, let it simulate, stop it when I need to, then reopen the file and finish the rest when I have time.
I'm more an artist than a technical guy, so staring at node graphs, typings expressions, reading pages and pages of documentations hoping to find what I need, is not really my thing. Ah this brings back memories from my beginnings in 3d with POVray.^^
Yes, you're outputting this for and saving the deformed per frame geo, as opposed to saving the simulation state. And then after that, when you scrub, you're simply loading up each geo file per frame.
So the workflow is:
1) create your cloth geo.
2) add those to the AutoDops network as Cloth objects (via the Cloth Object shelf tool)
3) go back into the geo object node for the cloth geo, and add the two extra node for ROP Geo driver and teh file node to read the file back in. Make sure the SIMULATION node is the display node
4) Run the sim
5) render the sim results to disk via the ROP Geo node and make sure to set the file node as the display node
Note that you don't necessarily have to make separate cloth objects for all you clothing, the cloth object sim will self intersect. I don't know what the optimal settings are so I can't offer much advice here, this is the first time I've done much with cloth.
Also note that you *can* save the simulation, but I think this might be limited to full version of Houdini (not the Apprentice versions).
Most of this does become pretty easy to set up, but it is technical, and if you've never used houdini, then there's a lot to learn. I'd suggest checking out the stuff here on Sidefx's Vimeo channel https://vimeo.com/goprocedural/videos
Start experimenting with mantra because that has a fair number of settings as well, that might be a little different from what you're used to.
Thanks Jim, it does help! I'll try to wrap my head around these concepts.
Mantra I can handle, I've used a lot of render engines over the years, and it's not so different. Did a few test renders to try out some of the settings. Within an hour I got the results I expected. The only thing I couldn't do is color bleed in the indirect illumination. Ahhh sliders, tooltips, and a few options to check, it should always be that easy.
Edrice, I tried saving the actual sim data and for me at least (using Apprentice HD) it worked. The test I tried involved using RBD objects colliding with a floor plane, but it should work for other stuff as well. I think the problem you ran into involved terminology - you mentioned altering the Explicit Cache file. Unfortunately the way Houdini uses "cache" doesn't mean what it does in Maya - the cache here is the temporary data used to store the sim. To store it permanently on disk, you use the same technique that do for SOPs (or anything else for that matter), you use a File node in the DOPs network.
The trick is also in how you name the sim - you *MUST* have a frame number in the sim file name so that you end up with multiple sim files (one per frame), otherwise you'll end up with one file that keeps getting the last frame that was simulated dumped into it.
So the workflow is:
1) generate your DOPs network and adjust accordingly
2) add a file node to the last "display" node of the DOPs network (i.e. make sure you take the output of the last node, and connect it to the input of the file node).
3) adjust the file name to whatever you want, just make sure to keep the "$SF4" part in the file name as the last bit, so you end up with foo_bar_sim_0001.sim, foo_bar_sim_0002.sim, etc.
4) make sure the File node's Operation Mode is set to "Write"
5) set the file node's display flag on, and run the sim. This will create the files as the sim runs, or it should. If this doesn't work, then there's something else going on and sim saving maybe isn't going to be an option
6) You should be able to create a different File node, by itself with no input, set it's operation mode to "Read" and then use the same file name (you can copy/paste with the expressions like I mentioned with the ROP node) to read in the sim. Set this nodes display flag on and when you play back it should be real quick, it's reading the saved sim now.
7) At this point you can add new nodes to the network for other simulations if you want
Replies
12++
Sorry for the bad quality, I didn't my aprentice hd licence yet. And for some odd reason, when I save the rendered frame, it outputs to a square format, so resizing to the proper format makes the image even more blurry.
I'm a little bummed out. I can continue without normal maps, but it looks awfully flat. I'll try to find a solution, but houdini isn't very generous with solutions out of the box. It seems very powerful, but not very artist friendly. We'll see if I can find a solution within the billion nodes of houdini, or else it's the end of the road for me.
For deforming geometry, Houdini does not support normal maps. Houdini has strong support for displacement maps - are you exporting from Z-Brush? Exporting a displacement map from there will work in Houdini.
Robert
Robert
So unfortunately it's not going to be as easy, for me, than simply going back to Zbrush and exporting disp maps. I brought this on myself, I should have looked at this before, but it honestly never crossed my mind that Houdini wouldn't support normal maps.
@TeriyakiStyle Thanks for the links, I stumbled on those as well yesterday trying to find a solution. The problem is that I can't convert the normal maps that use mirrored UV's to object space normal maps. And that's half my model. I think in the end I'm going to have, some parts with obj space N maps, some with disp Maps, and some with nothing. Hoping it doesn't show.
@ TeriyakiStyle the learning3d link is actually me
1.5 hours for a 24 frames seems a little high. It might depend on how you have the cloth design set up - if the cloth is intersecting the collision geo at the first frame this will cause problems and slow things up. Also there settings in the cloth solver that you can tweak to speed things up a bit.
After it is done, you can put down a Geometry node and then inside find the file and point it to the bgeo sequence you just rendered out.
Then you can turn off the original simulation.
Hope this gives you some help, I'm no expert tho.
Setting up the cloth was super easy, it's too bad the rest isn't going as smoothly.
The bgeo is simply one of two Houdini native geometry formats (one is called .geo and I think it's an ascii representation of the geo, and the other is .bgeo, same thing, but in a binary format, so not human readable and smaller in size).
the "$" is part of an expression and is used to prefix a variable. For example, if you have saved your scene (or .hip file) in "C:/myprojects/blah/" then you can easily reference that in nodes that need a file name (like textures, shadow maps, etc) by using $HIP. If you want to get the current frame number use $F, and so on. Here's a list of global variables
http://www.sidefx.com/docs/houdini12.0/expressions/_globals
The ROP geo node (this guy here http://www.sidefx.com/docs/houdini12.0/nodes/sop/rop_geometry) never has an output from it. It's there simply to produce a series of geometry files from in it's input over a set number of frames.
So when you add the new file node, it will be on it's own - it will not have any input to it and you'll have a new chunk in the network. In fact, once you set this as the display/render node (see here http://www.sidefx.com/docs/houdini12.0/nodes/sop/ about the display and render flags), then ALL of the rest of the graph/network that you created will be ignored, those node will not get processed, the DOPImport node will not be pulling from the sim, and you won't need to run the simulation anymore, since all you'll be doing is reading in files via the File node. This doesn't mean that you should delete them, if you need to re-run the sim for whatever reason (new settings, geo changes to the original mesh, etc) then you'll just go to the ROP Geo node and re-render the geo again.
An easy technique to keep the two nodes file names in sync (the ROP geo, and the importing file node) is to set the name in the ROP geo node, then right click on the file name and click Copy, then go to the File node and right click on the file name and choose Paste as Relative Reference. This will create an expression that uses the data in the Rop node's file name, and reference's it here in the File node. So you only need to set this once, and then from there on both are linked.
You don't have to use the this method, it's just a simple shortcut for writing the expression from scratch.
It feels a bit odd that it's that complicated, it feels more like a work around, than a built in function. Setting up cloth is as simple straightforward process, with a clean ui and good on screen feedback on what you're doing and how to do it. I was expecting to hit play, let it simulate, stop it when I need to, then reopen the file and finish the rest when I have time.
I'm more an artist than a technical guy, so staring at node graphs, typings expressions, reading pages and pages of documentations hoping to find what I need, is not really my thing. Ah this brings back memories from my beginnings in 3d with POVray.^^
So the workflow is:
1) create your cloth geo.
2) add those to the AutoDops network as Cloth objects (via the Cloth Object shelf tool)
3) go back into the geo object node for the cloth geo, and add the two extra node for ROP Geo driver and teh file node to read the file back in. Make sure the SIMULATION node is the display node
4) Run the sim
5) render the sim results to disk via the ROP Geo node and make sure to set the file node as the display node
Note that you don't necessarily have to make separate cloth objects for all you clothing, the cloth object sim will self intersect. I don't know what the optimal settings are so I can't offer much advice here, this is the first time I've done much with cloth.
Also note that you *can* save the simulation, but I think this might be limited to full version of Houdini (not the Apprentice versions).
Most of this does become pretty easy to set up, but it is technical, and if you've never used houdini, then there's a lot to learn. I'd suggest checking out the stuff here on Sidefx's Vimeo channel
https://vimeo.com/goprocedural/videos
Start experimenting with mantra because that has a fair number of settings as well, that might be a little different from what you're used to.
Hope this helps!
Mantra I can handle, I've used a lot of render engines over the years, and it's not so different. Did a few test renders to try out some of the settings. Within an hour I got the results I expected. The only thing I couldn't do is color bleed in the indirect illumination. Ahhh sliders, tooltips, and a few options to check, it should always be that easy.
Great works so far Edrice
The trick is also in how you name the sim - you *MUST* have a frame number in the sim file name so that you end up with multiple sim files (one per frame), otherwise you'll end up with one file that keeps getting the last frame that was simulated dumped into it.
So the workflow is:
1) generate your DOPs network and adjust accordingly
2) add a file node to the last "display" node of the DOPs network (i.e. make sure you take the output of the last node, and connect it to the input of the file node).
3) adjust the file name to whatever you want, just make sure to keep the "$SF4" part in the file name as the last bit, so you end up with foo_bar_sim_0001.sim, foo_bar_sim_0002.sim, etc.
4) make sure the File node's Operation Mode is set to "Write"
5) set the file node's display flag on, and run the sim. This will create the files as the sim runs, or it should. If this doesn't work, then there's something else going on and sim saving maybe isn't going to be an option
6) You should be able to create a different File node, by itself with no input, set it's operation mode to "Read" and then use the same file name (you can copy/paste with the expressions like I mentioned with the ROP node) to read in the sim. Set this nodes display flag on and when you play back it should be real quick, it's reading the saved sim now.
7) At this point you can add new nodes to the network for other simulations if you want