mirabelavasilie Posted August 14, 2019 Share Posted August 14, 2019 Does anyone have any ideas on how to possibly model something like the images attached? 2 Quote Link to comment Share on other sites More sharing options...
konstantin magnus Posted August 14, 2019 Share Posted August 14, 2019 Hi Mirabela, you could trail curl noise and mesh it with varying thickness. Finer details could originate from a displacement shader utilizing to the same curves again. curly_curves.hipnc 7 1 Quote Link to comment Share on other sites More sharing options...
nicolas.schlafer Posted August 18, 2019 Share Posted August 18, 2019 Hello! I was wondering what would be the best strategy to get a clean UV unwrap with this setup? I tried quickly to get UVs along each trail and transfer the attributes to the mesh resulting from the VDB, but without real success. Quote Link to comment Share on other sites More sharing options...
Atom Posted August 18, 2019 Share Posted August 18, 2019 (edited) Here is one way to add UVs to those lines. It does not convert to VDB, it uses a sweep to loft the mesh along the line. If you need VDB output, you can do that at the end and use an AttributeInterpolate to transfer the UVs to your final mesh. This setup drops in an attribute VOP to add a secondary displacement map along the length of each spline. This means mesh displacement is happening prior to render, but you can still add more normal maps or bump maps to the surface when you get to adding materials. ap_uv_curly_curves_081819.hiplc Edited August 18, 2019 by Atom 3 1 Quote Link to comment Share on other sites More sharing options...
konstantin magnus Posted August 18, 2019 Share Posted August 18, 2019 Alternatively you could create a shader that refers back to the curves using xyzdist(). 1 1 Quote Link to comment Share on other sites More sharing options...
nicolas.schlafer Posted August 19, 2019 Share Posted August 19, 2019 (edited) Thanks a lot for your answers, i will dig the two options you propose tonight. Konstantin, your solution would work for pure procedural shading, or with triplanar maps, but you could not generate UV out of it right? Meanwhile i was playing with super simple polar UV projection and got nice results, here is a test render, but it will not do the trick for more detailed image based displacement. Edited August 19, 2019 by nicolas.schlafer 5 Quote Link to comment Share on other sites More sharing options...
Popular Post konstantin magnus Posted August 19, 2019 Popular Post Share Posted August 19, 2019 (edited) Great stuff, Nicolas. This is starting to look Giger-like already! You don't necessarily need to create UVs in SOPs, though. To project textures on those VDB meshes it's arguably more efficient to do in a shader: 1) Transform position to world space. 2) Curve IDs shown as random colors. 3) U value from curves in HSV colors. 4) Direction to nearest curve position. 5) Tangents from curves set to absolute. 6) Direction to curve oriented along tangents. 7) V coordinate enclosing each wire. 8) UV coordinates in red and green. 9) UV mapping an image texture. 10) Texture based displacement along curves or at least what happens when mandrills do the job ; ) The material snippet: string geo = 'op:/obj/curves/OUT'; P = ptransform('space:current', 'space:world', P); int prim = -1; vector uvw = vector(0.0); float dist = xyzdist(geo, P, prim, uvw); vector pos = primuv(geo, 'P', prim, uvw); float u = primuv(geo, 'u', prim, uvw); vector tangent = primuv(geo, 'tangentu', prim, uvw); matrix3 rot = dihedral(tangent, {0,1,0}); vector dir = normalize(P - pos); vector dir_mod = dir * rot; float v = fit( atan2(dir_mod.z, dir_mod.x), -M_PI, M_PI, 0.0, 1.0 ); P = set(u, v, 0.0); curly_curves_shader.hipnc Edited August 20, 2019 by konstantin magnus 15 6 Quote Link to comment Share on other sites More sharing options...
nicolas.schlafer Posted August 21, 2019 Share Posted August 21, 2019 This setup looks amazing, thanks Konstantin. I usually work with Redshift but this really open my eyes to the power of mantra shading. Still a lot of blackmagic there for me, but i will definitely dive deeper in it, and i think i grasp the base idea of it at least. Quote Link to comment Share on other sites More sharing options...
jonidunno Posted August 27, 2019 Share Posted August 27, 2019 On 8/19/2019 at 1:52 PM, konstantin magnus said: Great stuff, Nicolas. This is starting to look Giger-like already! You don't necessarily need to create UVs in SOPs, though. To project textures on those VDB meshes it's arguably more efficient to do in a shader: 1) Transform position to world space. 2) Curve IDs shown as random colors. 3) U value from curves in HSV colors. 4) Direction to nearest curve position. 5) Tangents from curves set to absolute. 6) Direction to curve oriented along tangents. 7) V coordinate enclosing each wire. 8) UV coordinates in red and green. 9) UV mapping an image texture. 10) Texture based displacement along curves or at least what happens when mandrills do the job ; ) The material snippet: string geo = 'op:/obj/curves/OUT'; P = ptransform('space:current', 'space:world', P); int prim = -1; vector uvw = vector(0.0); float dist = xyzdist(geo, P, prim, uvw); vector pos = primuv(geo, 'P', prim, uvw); float u = primuv(geo, 'u', prim, uvw); vector tangent = primuv(geo, 'tangentu', prim, uvw); matrix3 rot = dihedral(tangent, {0,1,0}); vector dir = normalize(P - pos); vector dir_mod = dir * rot; float v = fit( atan2(dir_mod.z, dir_mod.x), -M_PI, M_PI, 0.0, 1.0 ); P = set(u, v, 0.0); curly_curves_shader.hipnc This is super cool Thanks!!! 2 Quote Link to comment Share on other sites More sharing options...
Drughi Posted September 1, 2019 Share Posted September 1, 2019 (edited) Nice technique Konstantin! Thanks for sharing! Edited September 1, 2019 by Drughi Quote Link to comment Share on other sites More sharing options...
nicolas.schlafer Posted September 4, 2019 Share Posted September 4, 2019 I posted some results of first tries of adapting your workflow on my behance, Konstantin, i hope it's not a problem for you. https://www.behance.net/gallery/85035827/Dogs-of-Tindalos 5 Quote Link to comment Share on other sites More sharing options...
konstantin magnus Posted October 2, 2021 Share Posted October 2, 2021 Transferring curl noise curves into volumes along with displacements based on principal curvature is another way to shape organic sculptures. sculpture_2.hiplc 8 Quote Link to comment Share on other sites More sharing options...
Atom Posted October 3, 2021 Share Posted October 3, 2021 This is a fun one to play around with. Redshift doesn't support code snippets, like Mantra, but I was able to leverage texture maps for displacement. 2 Quote Link to comment Share on other sites More sharing options...
vinyvince Posted October 5, 2021 Share Posted October 5, 2021 (edited) This one is really really cool, probably you will love it @konstantin magnus artabstract_face_spline.mp4 ________________________________________________________________ Vincent Thomas (VFX and Art since 1998) Senior Env and Lighting artist & Houdini generalist & Creative Concepts http://fr.linkedin.com/in/vincentthomas artabstract_face_spline.mp4 Edited October 5, 2021 by vinyvince 1 Quote Link to comment Share on other sites More sharing options...
vinyvince Posted October 5, 2021 Share Posted October 5, 2021 On 02/10/2021 at 11:34 AM, konstantin magnus said: Transferring curl noise curves into volumes along with displacements based on principal curvature is another way to shape organic sculptures. sculpture_2.hiplc We could also advect and grow few frames . I totally forgot the existence of the softpeak , thanks to refresh my memory 2 Quote Link to comment Share on other sites More sharing options...
konstantin magnus Posted October 24, 2021 Share Posted October 24, 2021 (edited) For UV unwrapping a mesh based on underlying curves1, you can also use this code inside a Point or Vertex Wrangle: // INPUT 0: MESH // INPUT 1: CURVES with 'tangentu'-attribute int prim_crv; vector uvw_crv; float dist = xyzdist(1, v@P, prim_crv, uvw_crv); vector tangent = primuv(1, 'tangentu', prim_crv, uvw_crv); matrix3 rot = dihedral(tangent, {0,1,0}); vector pos = primuv(1, 'P', prim_crv, uvw_crv); vector dir = normalize(pos - v@P) * rot; float angle = fit11(atan(dir.z, dir.x) / M_PI, 0.0, 1.0); float perim = primintrinsic(1, 'measuredperimeter', prim_crv); float u = (angle * 2.0 * M_PI * dist); float v = uvw_crv[0] * perim; v@uv = set(u, v, 0.0); 1 https://forums.odforce.net/topic/43213-biological-modelling-methods/?do=findComment&comment=204915 Edited July 11, 2022 by konstantin magnus Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.