Jump to content

Zbrush/houdini Workflow


JohnnyBGoode

Recommended Posts

Hi all,

Just wondering if anyone has any experience working between these two softwares, and if they can offer any advice with regards to workflow before i spend ages making loads of silly mistakes trying to work it out.

Ideally i'd like to get my findings up on the wiki, and maybe post some example .hips to help others in the future, so im after gathering as much of everyone's experiences.

I have read previous posts about setting the .OBJ to a lowercase .obj, but nothing really on getting the obj's set up right to go back and forth.

----------------------

Basically i have a model I have made in Houdini, and have want to take into Z brush for displacement maps.

I have managed to do this fine, but here are some of my thoughts/issues:

1) Say I have a model that is specifically grouped into separate objects (for example head as one object group, hat as another) how do i export an obj that keeps these objects together but as is understood by zbrush separate groups. Then after going through zbrush, import it back into houdini maintaining this information?

2) will i be able to do a UV pelt on the character, then export and use these UV settings in ZBrush? is there anything i have to do specifically and will this information be in the obj when i re-import it? I hqave read somewhere that each pelt has to be set on a different UV - which alaso means coming out of zbrush is different to normal.

3)If i subdivide at render time, will this have any effect on the texture/uv's/displacement? (sorry, never done before)

4) someone (i think it was sibarrick) wrote out their settings on zbrushcentral.com here - post 10 but i have had no luck getting it to work at all - - mantra crashes evey time. :(

sorry for the long post guys, im just really keen t get this working as zbrush just blows my mind and has given me the power to do things i never through possible - if i can get it to work with houdini....planets will be colliding.

Cheers

J

Link to comment
Share on other sites

I know lots of people have got the basics working, I'm not sure why mantra should crash. Any chance of a hip file?

As to the other questions, I think obj will support groups. Whether zbrush does is another question.

Subdivision shouldn't be a problem as it just interpolates the uvs at the subdivided steps. That test I did was a render done with render polygons as subdivision surface.

Unless you are making multiple uvs on the same geometry I don't see why you can't do multiple uvpelts on different parts just by using groups, you only need layers if you want different texture maps overlayed in some way.

Link to comment
Share on other sites

Johnny - give me a little bit time to write about the topic. I think I have a few answers. My raptor-project has a Houdini->ZBrush->Houdini-Workflow. I have a ZBrush-displacemnet-shader at home.

22897[/snapback]

Hey Leo - I would be so grateful! thanks loads, sounds very cool - cant wait to hear about it.

Sibarrick - cheers for your help, it appears that rendering polygons as subdivisions is causing mantra to crash - although i have no idea why as it normally it does this fine, i have tried with other models with no problem. The work around is to just use subdivide node, which works fine.

My only issue now is that im not sure how to get the default VEX displacement map shader to read middle gray as black, as you suggest in your instructions.

If u think im doing something drastically stupid, i can whip together a .hip tonight.

but Leo's answer sounds intreguing!

Cheers once again

J

Link to comment
Share on other sites

Yeah the way I did it was to edit the default houdini displacement shader.

Here's how.

1.Put down a VEX Displace Map

2. RMB go to operator type manager

3. in the operator type manager RMB on shop/v_dmap and make a copy

4. Put down a new shader of the name of your copy

5. RMB and go to the type properties dialog

6. Go to the VEX tab and find this line

 lum = amp*luminance(vector(texture(map, ss, tt, "wrap", wrap)));

add these two lines right after it...

lum -= 0.5;
lum *= 2;

7. Finally hit accept to recompile, and you should be done.

The other way is to make your own in VOPs.

Perhaps Leo has file with it in, it's pretty easy though. It probably would have been easier than me typing the above instructions... :D

Link to comment
Share on other sites

Yeah the way I did it was to edit the default houdini displacement shader.

Here's how.

1.Put down a VEX Displace Map

2. RMB go to operator type manager

3. in the operator type manager RMB on shop/v_dmap and make a copy

4. Put down a new shader of the name of your copy

5. RMB and go to the type properties dialog

6. Go to the VEX tab and find this line

 lum = amp*luminance(vector(texture(map, ss, tt, "wrap", wrap)));

add these two lines right after it...

lum -= 0.5;
lum *= 2;

7. Finally hit accept to recompile, and you should be done.

The other way is to make your own in VOPs.

Perhaps Leo has file with it in, it's pretty easy though. It probably would have been easier than me typing the above instructions...  :D

22902[/snapback]

thanks for that si!

yeah, i assumed that making one in vops would have been the way to go, but as you said to modify the default shader i wondered how i could do this ... now i know - cheers, will give it a shot! :D

Link to comment
Share on other sites

\Sibarrick - cheers for your help, it appears that rendering polygons as subdivisions is causing mantra to crash - although i have no idea why as it normally it does this fine, i have tried with other models with no problem.  The work around is to just use subdivide node, which works fine.

Hey there,

If you haven't tried with one of the very latest daily builds, please post your IFD (or hipfile) to the SESI forum and they'll fix Mantra for us all. I just wanted to say this because they are supporting Mantra development with a fervour and really appreciate feedback and testing.

Cheers

Jason

PS. Once we figure this ZBrush pipeline out, does the winner want to post all the findings to the OdWiki? I know this question is going to come up repeatedly. :)

Link to comment
Share on other sites

Here the basic workflow Houdini->ZBrush->Houdini

- Create your poly-model in Houdini.

- Export the model in OBJ-format (left click on the last SOP-operator and use in the context-menu 'Save Geometry...') (1).

- Start ZBrush and import the OBJ-file ('Tool/Import').

- Set the obj into the scene and switch to edit-mode (click on 'Edit'-button).

- Subdivide the model (up to level 4 to 6) and detail the geometry in ZBrush.

- Set the 'SDiv'-factor back to level 1 ('Tools/Geometry').

- Open the 'Displacement'-option in 'Tools' and click the 'Adaptive'-button (2). Hit the 'Create Displacement'-button.

Wait for ZBrush...

- Select the new map in 'Alpha' and change the map with 'Flip V' (3) and export the image with the 'Export'-buton

(use TIF-format).

- Export the detailed geometry in OBJ-format: Use the button 'Tool/Export'.

- Change the OBJ-extension to lower case.

- Start Houdini, add a geometry-operator and enter the SOP-level.

- Add a file-SOP and set the path to the OBJ-file from ZBrush.

- Switch to the shaders (SHOP) - open the palette-window (Alt+g or menu 'Tools/Shader Palette ...').

Change the directory with the 'VEX_ZBrush_Displacement.palette' - import the shader for the displacement-map (use 'Drag&Drop').

- Open the option for the new shader and enter the location for the by ZBrush generated displacement-image - 'D-Map (ZBrush)'.

- Go back to the SOP-level and add a shader-SOP to the network. Select in the option-pane (press 'P') the new displacement-shader for 'surface'.

- Add a subdivision-SOP to the network.

- Render the scene. Refine the displacement-level in the shader-option-pane if necessary and re-render.

(1) Make sure there are no N-gons (polys with more than 4 sides) in the geometry. ZBrush will show a warning if there are n-gons in the geometry and convert this to quads and tri-sided polys. Don't use this way - expect render-artifacts (check this picture).

(2) Please refere the ZBrush-manual for more export-options - the adaptive-option is the 'easy way'.

(3) The shader in 'VEX_ZBrush_Displacement.palette' has an option to flip the map in x- and y-direction.

Groups: ZBrush will detect groups in a OBJ-file and use them. I think they offer an option re-export this information from ZBrush. Please refere the ZBrush-manual for details.

UVs: ZBrush reads the UV-informations from an OBJ-file and exports all informations. UV-pelting/unmap is not necessary for the export and the other steps. ZBrush will unmap the model automatically - check the following image (UV-view in Houdini):

post-171-1133216735_thumb.jpg

I recommend to UVpelt/unmap the model, if you want to paint the color-map in Photoshop or an other painting-application. ZBrush keeps the UV-information. I will make an example later. If you read the OBJ and the displacement/color-map in a 3d-painter (f.e. 'BodyPaint' or 'DeepPaint 3D') and you change the UVs - you have to re-export the maps for using in Houdini.

VEX_ZBrush_Displacement.zip

@Johnny - please try this and let me know how it works.

Link to comment
Share on other sites

hey Leo

just wanted to say it all worked a treat - the Shader is great - very helpful, and i got no artifacting, even with a crazy animation test i did.

thanks a lot!

will post my results as soon as i can get things finalised.

Also wanted to mention that if using Uv pelt - after doing some tests it is clear that there has to be a different method - using the multi-uv plugin with zbrush.

For now i will use the pre-generated GUV's from zbrush, but if we are to post to the wiki, it would be worth us putting up a uv-pelt example too - for those that want to have uv's laid out for 2d painting purposes too.

Cheers

J

Link to comment
Share on other sites

Sounds Johnny. I will perpare the text and samples. Maybe someone have to check my spelling and grammar.

I had a test on OBJ-groups. It works wonderful:

ExortHoudini->ImportZBrush->Rework->ExportZBrush->ImportHoudini

The same for

UVwarp->ExportHoudini->ImportZBrush->Rework->ExportZBrush->ImportHoudini

I will check this UV-PlugIn for ZBrush...

Link to comment
Share on other sites

Hi, I wonder if any of you guys who have played with zbrush can answer this quick question (I don't have time at the mo to download it and try it myself)

1. Can you load other geometry that you are not painting/sculpting to use as templates? I've not seen this in the demos but I assume you must be able to, however just like to know for sure you can.

2. Can you easily reapply a sculpt to different versions of the model in new poses - assuming point numbers stay the same? Again I assume you can but just want to make sure.

ta :)

Link to comment
Share on other sites

Hi, I wonder if any of you guys who have played with zbrush can answer this quick question (I don't have time at the mo to download it and try it myself)

1. Can you load other geometry that you are not painting/sculpting to use as templates? I've not seen this in the demos but I assume you must be able to, however just like to know for sure you can.

2. Can you easily reapply a sculpt to different versions of the model in new poses - assuming point numbers stay the same? Again I assume you can but just want to make sure.

ta

Edited by JohnnyBGoode
Link to comment
Share on other sites

Sorry, I meant a template like a houdini template, just as a reference while you sculpt a difference model. For example say you have a head model and a hat model and you are sculpting the head but you don't want it to start pushing through the hat, you need to turn on the hat as a template to check where it is.

Link to comment
Share on other sites

Sorry, I meant a template like a houdini template, just as a reference while you sculpt a difference model. For example say you have a head model and a hat model and you are sculpting the head but you don't want it to start pushing through the hat, you need to turn on the hat as a template to check where it is.

23127[/snapback]

ohhh my bad - sure. Yes you can, if ive got you right this time, what zbrush does is masking - you select the area you want to mask by dragging over it, or Ctrl Alt click on that group and then define it as a masked area (ie the hat - assuming it is a group defined as the hat. is tricky otherwise with dragging approach)

The masked group wont be effected by brush strokes or deformations, and i recall that you can change its opaciity in the work view so that it does not get in the way of your work - though i willl have to double check that

hope thats what you meant mate,

J

Link to comment
Share on other sites

  • 3 months later...
UVs:[/b] ZBrush reads the UV-informations from an OBJ-file and exports all informations. UV-pelting/unmap is not necessary for the export and the other steps. ZBrush will unmap the model automatically - check the following image (UV-view in Houdini):

so that image i take it is a ZBrush UV it made after you painted?

I recommend to UVpelt/unmap the model, if you want to paint the color-map in Photoshop or an other painting-application. ZBrush keeps the UV-information. ini. 

is this true when you do a projection based painting inside Zbrush?

-k

Link to comment
Share on other sites

@kenny

If you dont UVunmap or unpelt - ZBrush will do this for you.You will get a lot simple squares. If you unmap/pelt the model - ZBrush will take the informations and keep them. The informations still there after detailing and export of the model/textures. It is possible to make a model in Houdini and give it to an animator. He can work with the stuff and you can detail in ZBrush... Later you add the detailed maps. There are a few PDFs at the Pixologic-website. They explain this workflow in combination with Maya and XSI. I think it is easy to pick up some points.

I have a few samples and pictures on this. Let me know in PM/Mail and I will send you this stuff.

Link to comment
Share on other sites

I have a few samples and pictures on this. Let me know in PM/Mail and I will send you this stuff.

25720[/snapback]

thanks,

i've read the docs and i'm trying to go through the 'pratical guide' just to see what it offers.

the stuff i've been seeing lately is really interesting. i looked at the website for Hexagon 2 and it looked like it could be houdini doing brush modeling.

personally i'd like to stick to houdini and would LOVE for them to implement subDs in a different manner into the package so you could actually model like you the vides for Hexagon 2 show. the leap to doing 'paint' work like you can in both packages is just the next step in that development course.

It would be interesting to see what would happen..

one can dream.

-k

Link to comment
Share on other sites

  • 4 weeks later...

Hey Guys,

I was thinking we need to write a ZPipeline Tutorial and submit to Pixelogic for Houdini. I think it would be good if Houdini was represented up there with XSI, Maya, and Max. I mean Houdini is the best program out of the 3 and it would not hurt for other users to know that they can use it with Houdini also.

http://pixologic.com/zbrush/class/zpipeline.html

We could roll it into a OTL too just to make it easier even though its pretty easy but I mean 1 more step to making life easier and getting people on Houdini the better I think.

Cheers,

Nate Nesler

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...