Hello,
This is a first proof of concept about generating a vector displacement from any arbitrary model.
There is still a lot of unknown, and areas I need to test :
- Trying different smooth algorithm to remove overlapping geometry when flattening the model in Houdini.
(Maybe using the one used to flatten uv texture). This is the area that takes a bit a computing time.
- I wish to find a way to write negative value in .exr generated in Houdini, to avoid to do a refit from a normalized texture in Terragen (seems to work, but Min and Max value to re-apply the vector displacement map have to be entered by hand)
- Terragen smooth interpolation in the image map shader seems to wash a lot of details (especially around the ears in this case). Disable it make the model too ugly (faceted). Furthers test need to be done, maybe an higher resolution from Houdini model can helps a lot.
The result is not that bad so far 8)
[attachimg=1]
That is amazing! :)
Hehe, looks cool. I guess complicated terrain generation can be made easier with your solution? Unless the same amount of work is needed in Houdini for the same effect.
That's really interesting. Turning geo into vector displacements. How does Houdini do that?
Hello,
Well the idea is to create a uniform skin around the object and a plane. I use voxels for that (vdb). (image 2)
That's the model A.
Then I flatten the model (scale y = 0) (image3) , and I relax the point until there is no overlapping : model B. (image 4)
Finally I subtract point position from model A with point position from model B, and that creates the vector displacement (display as vertex color in image 5)
I've been thinking about this for some time now.
Glad to see it's doable, even more in such an elegant way. Looking forward to the development on this!
Very exciting :)
Right on paq...freakin brilliant...
Great work!
Nice.
[Hello and thanks !
I have a better system now, using an uv unwarp (uv-pelt) to flatten the model. (mid resolution)
Works much better, and I'm starting to keep much more detail than the previous prototype.
For a 2K output, it takes a little while to process, about 5-10 minutes, ... mainly because I use a very slow operator in Houdini.
It's far to be a digital asset that anyone could use with predictable result,but I will share a scene and maybe a little video to explain the process.
But first I have to test more advanced structure 8)
[attachimg=2]
[attachimg=1]
simply wow
Hello Paq !! I like your vector displacement workflow.. One question - Tell me please - What node did you use to vector colorization ??!! ??? ::)
Hello Artice-3d,
Just add a point wrangler, with @Cd=@P;
Mine not looking good as yours :( Geometry lost all details at all !!! Your geometry clean and beautiful!! Please, maybe you'll make a little tutorial with your dinosaur results, it looks very good!! I even don't know how to export from houdini in proper way :(((
Ok update--- i've got clean geometry !! Need to pelt it correctly ;)))
Brilliant work. I did some experiments in mudbox quite a while ago, but there you have to use 2 planes with equal amount of vertices, work your magic on one and subtract to vector displacement map.
Dune mudbox is good, but for really good result this technique is much better.. When i'll finish, i'll show you what we can do with this !!! 8) :o ;D ;)
Paq thanks for your answer, but... ;D :o one more question - When a pelted object i transfered it's uvs to mesh points by point node, but it's doesn't match with original object's position and orientation why?!! Thanks you help me a lot!! At your image with dinosaur original object position and orientation look absolutely exactly as pelted!!
Hi Artice-3d,
Here's my way to align the 2 geometries (attach .hip) :
- In a vop, I compute the angle between point 0 of mesh A and mesh B using the Align operator. I receive a transformation matrix that I can use to orient Mesh A (P * Matrix)
- For the size I use the matchsize sop.
(blendshapes_TEST_RESULT can be used to check if the transformation is right).
I still such a noob in Houdini, let me know if you find a easiest way ;)
Thanks Paq i'm very appreciate!!! I'm a square noob in houdini, if it's help to you ;D ;D Your solution is too complicated for me :o ;D I did it different (use simple orientation option in UVpelt), but don't know if it will work at all.. Need an export to see... So thanks for all your help - next question how to project colors from original mesh to uvpelted (mine all blue).. Tell me please that it's not as difficult as with orientation !!! ;D ;D :o
Hi Artice,
(1) (2) (3) (4)
Attribute wrangle
v@vdisp=point(1,"P",@ptnum)-@P;
In the input (1) : pelted (flatten) meshed
In the input (2) : original mesh point position (not flatten)
This way you will store an attribute called @vdisp, storing the vector displacement.
If you want to test the displace :
On the pelted mesh :
Point wrangler
@P+=v@vdisp;
About the pelt rotation,
Maybe a solution is to use the frame input (second input of the pelt operator), but I don't get yet how to use it to have a consistency in the pelt orientation.
//
Hopefully I'm on holiday next week, I will get some time to continue this vdisplace project ;)
Hello Paq, mine still blue !! Something went wrong :-\
No idea, could you post the .hip ?
Yep!! ;) Correct it please and send me back final version, i won't wanna bother you anymore ;D ;) You help me a lot already!!! ::) ;D Thanks for that you're a man!!
Ok, at that point you have to use @Cd=v@vdisp; to display the vector displacement, sorry for the confusion.
Oh god thanks !!! And now you're just render it in .exr file and that's it ?!!!
Yup.
But you need to avoid negative value (I can't manage to write signed .exr with Houdini).
So the model need to be moved (normalized) in 3d space between 0-1 ... and that's a bit annoying because if you need to push point below the level0, you need to refit the vector inside Terragen
https://www.planetside.co.uk/forums/index.php/topic,23958.0.html
I also did a bit of upscaling after this first pass, using the divide operator, and the ray operator to re-project the fine detail.
Paq 0-1 on x-z or y too?!!! And thank you very much for all.. I'm happy with results... THANK YOU SO MUCH ONE MORE TIME ;D 8) :o ;) ;) ;) ;)
(you're welcome)
Now that's intriguing, because I had lot's of trouble exporting my .exr image.
How did you setup your render ? (it's my turn to learn something :) )
I have never touched Mantra, so I'm using one of those game baking tool, and maybe lot's of my problems are coming from that :'(
I used camera positioned vertically 90 degree than used mantra output to .exr file and rendered it to 3000*3000 px than import in terragen and make it beautiful!!!!
images for understanding below!!!
And one more - i used glow shader to luminance displacement !!!
Ho nice, so simple ... and, as far as I can see, signed .exr is working, there is no need to refit the data.
Thanks a lot !
(Strata pig is cool 8) )
//edit
glow shader to luminance displacement ?¿ ( I'm nowhere when it comes to render in Houdini)
Thanks Paq, now it will be a whole new dimention for terrains creation!!! 8) :o ;)
--------------------------------------------
Paq about luminance... You need to create a glow shader in material browser and assign it to your flatten object, to create model without diffuse, shadow and reflection stuff.. I'll post images a bit later!!
Thanks for the update Artice ! 8)
No problem!!! ::) ;) ;D If you'll have any questions, ask me ;) !!! 8)
Great thread guys!
bobbystahr - Thanks ;D ;) ::)
Quote from: Hetzen on January 07, 2018, 02:25:20 PM
Quote from: bobbystahr on January 07, 2018, 09:06:10 AM
Great thread guys!
Agree! Very art 'directable'.
That's the most clever answer my friend.. :o ::) ;) That's why i need this, to create what i want ::) 8)
Paq hello! Do you know how to relax uv after pelting?? Smooth SOP and point relaxing doesn't relax much!!! ::) ;)
Hi Artice,
No, I don't know.
Well you can indeed smooth the point position after the uv's to mesh transfer.
Never get any result from the relax, but smooth can do a very good job, if you set quality on 1, and strength pretty high (100 - 500 - 1500).
The other operator is the attribute blur, but I don't think it will help you better than the smooth one.
Thanks Paq i tried already all this stuff with no success, but it's ok.. thanks for answer!! ;) ;D
Really nice tool ! But you talk about houdini... can I do the same in another software like Blender ? Do you have a tutorial so I can try this at home?
@Artice-3d Hi Artice-3d.i have readed you master thread and that's awesome.i try a lot and can not get the expecting result.
here is the .hip file,
VdMap_test.7z
could you give me some tips about how to export the vdmap correctly and it is appreciate.
regards.
Hi,i try this some times but still get the correct result.i render the vdisp map from houdini and input to terragen.the result is the geometry is intersect as the pic show below.
may you guys could give me some tips.that will be appreciated.
regards
000.jpg111.jpg
How do you mean, intersect? If the displacements point the wrong way, the vdsip map may originally not be done in the right 'definition' (can't remember the right word). Or you could try flipping the X or Z by splitting the vdisp up into color channels, and reattaching them to a build vector, but with other inputs (X to Z, Z to X). At least that is what I had to do sometimes in the past.
Quote from: Dune on March 25, 2020, 02:17:07 AMHow do you mean, intersect? If the displacements point the wrong way, the vdsip map may originally not be done in the right 'definition' (can't remember the right word). Or you could try flipping the X or Z by splitting the vdisp up into color channels, and reattaching them to a build vector, but with other inputs (X to Z, Z to X). At least that is what I had to do sometimes in the past.
Hi dune.thank you very much .you are so passion and professional in the forum.
i alter the X and Z axis and get this.it is a great upgrade.but still is not the right result.
here is the screenshot.
111.jpg
Did you already try to flip the whole map vertically or horizontally?
Quote from: Dune on March 25, 2020, 02:17:07 AMHow do you mean, intersect? If the displacements point the wrong way, the vdsip map may originally not be done in the right 'definition' (can't remember the right word). Or you could try flipping the X or Z by splitting the vdisp up into color channels, and reattaching them to a build vector, but with other inputs (X to Z, Z to X). At least that is what I had to do sometimes in the past.
Coming from Houdini, you don't need to swap any channels, but you need to flip the Z.
Either: Flip the Z value in the Image Map Shader simply by enabling "Multiply RGB" and changing the 3rd value to -1.
Or: Flip the Z value in the Vector Displacement Shader by changing the Z multiplier to -1.
@j meyer @WAS @MattHi guys.thank you very much finally i get the right result.it touble me some days.
i flip the y axis in the flip/repeat tab and alter "date is linear" in the colour table of the image colour node.the it works.
111.jpg111.jpg
i am appreciated very much and you kind guys save me lot of time.
regards.