Jump to content

Leaderboard


Popular Content

Showing most liked content since 05/25/2019 in all areas

  1. 6 points
    Hello, friends! Finally, after 19 months of work, I finish my first Houdini project. This is a music video for my friend I did to learn Houdini. Rendered with 3x3 sampling on my laptop that`s why it`s so noisy. Working on the project, I develop an abstract production pipeline for Houdini called "Eve". It is a project management tool which can handle a large amount of data: https://github.com/kiryha/Houdini Thank you all for your support, it would not be done without your help! Cheers!
  2. 5 points
  3. 4 points
    WOWOWOWOWOW It's again been a hot minute since I posted anything here I recently gave a talk at the LA Houdini User Group on writing your own vex based polywire SOP, and figured it would be worth sharing here! I also recently redid my website so go check that out here as well: jakerice.design Love you fools <3 Jake
  4. 3 points
    Try give a look at the hipfile attached. There are some issues in the way you built your constraints and try to break them. Of course is good that you separated them in strong, weak for the frames etc... but glue constraints are not going to break if there aren't any forces applied to them that are stronger than their strength, gravity is not enough. If you have everything connected to everything, nothing is going to move. That's why we need to use metaballs or some other magic tricks to initialize the simulation, breaking some constraints so the simulation can start and propagate. If you just delete all constraints in a certain area, of course the whole structure is going to collapse and you are not going to have any big pieces. In scenarios like that is useful to give some conditions (for example using the name of the constraints) and break just some of them. That's why preparing as much as possible in SOP is going to make it easier later on. If you want to break a different type of constraint, just change the name in the SOP solver to match it. testtOd_00.hipnc
  5. 3 points
    I have used BVH files from both OSU and CMU. Also CG Speed has some of those same BVH file processed to various degrees. (Choose MotionBuilderSet) You can preview BVH files using BVHacker (free). Here is a basic workflow. 1.)Decide on a BVH file. 2.) Convert to the .bvh file to a .bclip file and companion .cmd file using Houdini's command line tool named mcbiovision. EXAMPLE .bat file for Windows to convert a BVH to a .bclip and .cmd companion file set. (Adjust path to your Houdini\bin folder) "C:\Program Files\Side Effects Software\Houdini 15.5.480\bin\mcbiovision.exe" -n 2 "C:\Users\Mitzumi\Documents\Mocap\cmuconvert-daz-60-75\60\60_01.bvh" "C:\Program Files\Side Effects Software\Houdini 15.5.480\bin\mcbiovision.exe" -n 2 "C:\Users\Mitzumi\Documents\Mocap\cmuconvert-daz-60-75\60\60_02.bvh" "C:\Program Files\Side Effects Software\Houdini 15.5.480\bin\mcbiovision.exe" -n 2 "C:\Users\Mitzumi\Documents\Mocap\cmuconvert-daz-60-75\60\60_03.bvh" 3.) Run the resulting .cmd file inside Houdini to re construct the BVH skeleton as a Houdini FK based skeleton. File/Run Script... 4.) Dive into the chop network, that will be built by the .cmd file, locate the File node and browse to the .bclip file which will finally cause the bones to move. The .bclip drives the associated bone network. Once you have an imported .BVH file, you can re-target it to another rig using the Goldfarb technique, here.
  6. 3 points
    https://github.com/kiryha/Houdini/wiki/vex-snippets http://lex.ikoon.cz/vex-snippets/ https://tosinakinwoye.com/2017/01/23/houdini-vex-snippets/ https://vfxbrain.wordpress.com/2016/10/02/vex-snippets/ you gonna find a version .
  7. 3 points
    And Librarian in Action ...play with this some Dude posted long long time a ago......You have fibonacci inside so play explore... noiseee.hipnc
  8. 3 points
    I wanted to share a music video that I directed with a bunch of CGI that I did in Houdini and rendered with Redshift. The concept is based on the idea of a future where a sort of Turing test is administered to humans as opposed to the other way around. Most of the compositing was done as a combination of Aftereffects, Fusion and Resolve. We shot the footage against green screen and then created all of the CGI assets for the environment through a mix of modeling and kit bashing. There is a brief behind-the-scenes video link in the description. I hope you enjoy watching it as much as I enjoyed making it!
  9. 2 points
    Amazing stuff, relay nice work.
  10. 2 points
  11. 2 points
    Hey folks, proud to present LYNX Tools, a collection of production proven open source tools to accelerate your workflows! All mentioned tools are free to download via the links below and are licensed with a full HoudiniFX license. Download them at: Website: https://www.lucascheller.de/resources/ Git: Repository: https://github.com/LucaScheller/VFX-LYNX Lastest stable release: https://github.com/LucaScheller/VFX-LYNX/releases Please give them a test drive, so we can improve them further Roadmap | https://trello.com/b/f8Pgip7s/lynxpipeline So far there are three tools: LYNX_force_general | Tweak your sims with this all purpose & intuitive force field. Built to mimic force fields in other DCC applications, but with support for more features and a natural Houdini user experience. https://www.lucascheller.de/vfx/2019/03/24/vfx-lynx-houdini-force-general-asset/ LYNX_fabric | Create fabric/weave patterns with ease. Perfect for creating that holiday sweater you never wanted. https://www.lucascheller.de/vfx/2019/03/16/vfx-lynx-houdini-fabric-asset/ LYNX_velocity | Get control of your velocities via an intuitive UI or groom them for absolute fine tuned control. https://www.lucascheller.de/vfx/2018/11/01/vfx-lynx-houdini-velocity-asset/ More info on my website: https://www.lucascheller.de/blog/ Houdini User Group Munich Presentation: https://vimeo.com/334887452
  12. 2 points
    This is more comedy than horror, but might give you some ideas. Need a better way to stick the worms to the character, right now I'm just doing a lowbrow 'find the closest point and head there, plus up a bit', so the worms throw themselves in a rather madcap way. I'm sure you or someone else can improve on this! vellum_worm_guy.hip
  13. 2 points
    Looks great. and fun. Huge project for one person! My last project I worked as Tech anim/CFX artist and just can not keep on looking at all those floating charters and feet intersections... Other than that looks really great. Good job.
  14. 2 points
    the ray sop either shoots a ray in some direction (default is normal) or chooses the closest point on a surface. extrudesop_002.hipnc
  15. 2 points
    You can 'remote-control' and repeatedly call the clipping SOP with python verbs.
  16. 2 points
    Hi. yes you should use a sopsolver dop to break glue constrains with a pop metaball force dop. Here is file with one of many approaches how to do that. metaball_test_01.hipnc
  17. 2 points
    Hi there. I have finished my 2nd year in uni and I'm looking to build a killer FX reel by the time I graduate next year. I would greatly appreciate advice on what to work on in the next year and criticism on my current showreel. For the next year at uni, we have to make a short film for which I'll be doing the fx.It is currently centred around a snow leopard in a Mongolian landscape. I was planning to create a custom material point snow solver and am currently learning c++ and the HDK. My current showreel is available here: Thank you and have a good day
  18. 2 points
    Just a tip from some one watching x amount of reels every month... Tone down or drop the music.
  19. 2 points
    you can for example age your Geometry or ConstraintGeometry using POP or Geometry Wrangle using f@age += @TimeInc; then in Vellum Constraint Property DOP either use float age = point(1, "age", @ptnum); restscale = 1 + age*.5; if you have @age only on points of the geometry (see example file) or if you have f@age on primitives of ConstraintGeometry you can do directly restscale = 1 + f@age*.5; anim_rest_scale_age_v001_fix.hip
  20. 2 points
  21. 2 points
    Houdini Tutorial Monument Construction Time-Lapse Download Houdini Project File - https://gum.co/timlapse Available for free: https://www.youtube.com/playlist?list=PLtCPgCB2Kw05gvrIR3CPCe8VhzCzl2HBd&fbclid=IwAR137yDe7ftp_aQtK3LoOCODQKVaJLa6d9AP7_wDjVVDAR1rDmLAUirto3k - Chapter 1 Dividing Geometry Into Bloks - Chapter 2 Gradual Emergence of Pieces - Chapter 3 Procedural Animation of The Crane - Chapter 4 Modeling The Crane - Chapter 5 Metal Scaffolding Download Houdini Project File - https://gum.co/timlapse Explore my products: https://gumroad.com/rart Follow me for updates on what I am creating: - Artstation https://www.artstation.com/raducius - YouTube https://www.youtube.com/channel/UC1Avewug9ZPCLx1URXVEw4g - Instagram https://www.instagram.com/raducius
  22. 2 points
    Hi BiZz, Vellum constraints can be very tricky and you can run into all sorts of problems setting up custom ones outside of the vellum constraint nodes when you are in DOPs. I gave you problem a go myself using a couple of wrangles and I managed to get a stable result working. For a longer explanation and a hip file is on my blog: https://zybrand.xyz/vellumcontinuous-emit-with-dynamic-constraints#more-324
  23. 2 points
    Hello, Tried to make some snow using Vellum grains. What do you guys think? https://danielezannone.tumblr.com/post/185340123069/houdini-vellum-solver Learned a great deal from Steven Knipping https://vimeo.com/297116432 Cheers!
  24. 2 points
    Here is a quick example of how you could achieve this kind of effect with the grain solver. If you wanted to get fancy with this, you could constrain pairs of grains together to more accurately represent the bee body shape. bees.hip
  25. 2 points
    you can convert it to set and back uniqueV = list(set(v))
  26. 2 points
    Another approach might be to skin the line, by placing a circular mesh around it then reference the points of the mesh inside a Gas Wrangle on the velocity update of the pyro solver. This way you can create a custom drag that reduces velocity the farther from the central line, that the smoke travels. The cage is not a collision mechanism, it merely offers a reference @P for the smoke to compare against. ap_SmokeAlongCurve.hiplc You will probably need to dial in the distance values of the fit to achieve the best look. vector p1 = point(0, "P", 0); float dis = distance(p1, @P); //Change fit range and resulting values to dial it in. // Get half as fast, the farther out it travels. @vel *= fit(dis, 0.5, 1, 1, 0.5); NOTE: Because the wrangle has no input, the point fetched, from input #0 is actually defined under the Inputs tab (which points to the mesh cage SOP) of the wrangle, this is a little different than standard SOP manipulations of input 0.
  27. 2 points
    Hey, On June 3rd I will be teaching an advanced Houdini masterclass at the Effects America conference in Montreal. I will be covering growth systems. Should be good fun: https://www.effects-events.com/en/master-classes/ Description: During this advanced Houdini masterclass you will learn how to create an art-directable growth system. Digitally constructing things can be as challenging if not more challenging than destruction, this class will focus on the former. The class is split into two main sections. The first section of the class will dive into building the growth solver prototype tool. This covers solvers, some vector math, chaos theory, 2d & 3d growth, custom forces and tool development. The second section of the class dives into using the tools to grow a 2d and 3d pattern that is procedurally animated and prepared for rendering. This covers path finding, procedural animation, combining 2d and 3d patterns, custom attributes and aovs/render passes for comp. Take away: Understand the algorithm and concepts for building a growth solver. Build a user-friendly and efficient tool that can scale from small scale single growth to growing large datasets for entire vfx sequences. Understanding and making use of Houdini’s data acceleration structures. Gaining insight into the art-direction and approval process for both the grown pattern as well as the procedural animation. The audience: This course is intended for intermediate to advanced Houdini users. Users should have a working understanding of the Houdini interface and overall data flow (contexts, attributes, datatypes). Houdini Apprentice can be used for this class. Hope to see you there or perhaps at the conference, Peter
  28. 2 points
    Tried to get mud surface effect with some reaction to the geometry without heavy simulations. iskalvlup_heightfields_mud_worms.hip
  29. 2 points
    My Vimeo Profile is online too for Tutorials https://vimeo.com/user95633319
  30. 2 points
    Here's my try at it. I reversed the faces of the bubbles, then merge them with the main/outer fluid mesh. cola.hipnc
  31. 2 points
    This is really great.The effects of these loops are exquisite and ingenious
  32. 2 points
    Not sure if I understand correctly, but if you want to bake in COPs point attribute in uv space, then VEX works as usual: vector uv = set(X, Y, 0); vector clr = uvsample("op:/obj/geo/geometry", "Cd", "uv", uv); R = clr.x; G = clr.y; B = clr.z; Copy this (replacing path and attribute name) into Snippet VOP inside vopcop2filter and you should have the attribute baked into texture.
  33. 2 points
    Hey all, here's a shot I've been working on! Speed Tree, Houdini and Redshift. Have a good one
  34. 2 points
    I believe what you are asking for is noise functions that are normalized over all dimensions, octaves and roughness. The Unified Noise VOP and Unified Noise Static VOP both return noise that is normalized for you. Both Unified Noise type VOPs inside their code snippet include $HH/vex/include/pyro_noise.h to generate normalized noise results. If you are writing your own vex (wrangles, vex shaders from scratch, etc) you can include pyro_noise.h and then use defined the noise functions within a fit range: nwrap_sine() nwrap_perlin() nwrap_pperlin() nwrap_simplex() nwrap_sparse() nwrap_flow() nwrap_pflow() nwrap_worleyFA() nwrap_worleyFB() nwrap_mworleyFA() nwrap_mworleyFB() nwrap_cworleyFA() nwrap_cworleyFB() nwrap_alligator() They all share the same interface which is nice. What's really cool about the pyro_noise.h vex file is that it also contains functions that return the statistical norm and min and max ranges for all the default vex noise functions. The results are also embedded in pyro_noise.h for you if you wish. This is the table built for you. Returns the noise name, min value, max value, median value and a bit to say if it is not celular 1 or celular 0 (I think...). Then followed by a probability variance of these values. Note all the function variations are included in the file for your reference: //------------------------------------------------------------------------------- // The constants used in this module were generated with the call: // // nstats(0.005, 10,20, 1000, (int)5e6, 0); // // which produces the following output: #define ns_fperlin1 \ nsdata ( "perlin" , 0.248834 , 0.767147 , 0.488376 , 1 ) // +/- 0.0024 #define ns_vperlin1 \ nsdata ( "perlin" , 0.229499 , 0.761877 , 0.509742 , 1 ) // +/- 0.0024 #define ns_fperlin2 \ nsdata ( "perlin" , 0.136616 , 0.864593 , 0.499529 , 1 ) // +/- 0.0024 #define ns_vperlin2 \ nsdata ( "perlin" , 0.033912 , 0.946057 , 0.511009 , 1 ) // +/- 0.0025 #define ns_fperlin3 \ nsdata ( "perlin" , 0.0832587 , 0.920337 , 0.497705 , 1 ) // +/- 0.0024 #define ns_vperlin3 \ nsdata ( "perlin" , 0.0013614 , 0.996832 , 0.335704 , 1 ) // +/- 0.0032 #define ns_fpperlin1 \ nsdata ( "pperlin" , 0.272539 , 0.732348 , 0.493888 , 1 ) // +/- 0.0024 #define ns_vpperlin1 \ nsdata ( "pperlin" , 0.24574 , 0.7608 , 0.493501 , 1 ) // +/- 0.0024 #define ns_fpperlin2 \ nsdata ( "pperlin" , 0.128858 , 0.839149 , 0.521924 , 1 ) // +/- 0.0024 #define ns_vpperlin2 \ nsdata ( "pperlin" , 0.0974457 , 0.914321 , 0.492854 , 1 ) // +/- 0.0024 #define ns_fpperlin3 \ nsdata ( "pperlin" , 0.0777629 , 0.911734 , 0.50605 , 1 ) // +/- 0.0024 #define ns_vpperlin3 \ nsdata ( "pperlin" , 0.0191109 , 0.982488 , 0.402437 , 1 ) // +/- 0.0025 #define ns_fsimplex1 \ nsdata ( "simplex" , 0.0135945 , 0.980643 , 0.503308 , 1 ) // +/- 0.0024 #define ns_vsimplex1 \ nsdata ( "simplex" , 0.00470505 , 0.979253 , 0.508709 , 1 ) // +/- 0.0024 #define ns_fsimplex2 \ nsdata ( "simplex" , 0.100222 , 0.909426 , 0.494677 , 1 ) // +/- 0.0024 #define ns_vsimplex2 \ nsdata ( "simplex" , 0.0576417 , 0.958953 , 0.491143 , 1 ) // +/- 0.0024 #define ns_fsimplex3 \ nsdata ( "simplex" , 0.15302 , 0.850784 , 0.497038 , 1 ) // +/- 0.0024 #define ns_vsimplex3 \ nsdata ( "simplex" , 0.0434933 , 0.970121 , 0.315176 , 1 ) // +/- 0.0076 #define ns_fsparse1 \ nsdata ( "sparse" , -1.05121 , 1.41258 , 0.437552 , 1 ) // +/- 0.0024 #define ns_vsparse1 \ nsdata ( "sparse" , -1.84633 , 1.41258 , 0.563931 , 1 ) // +/- 0.0025 #define ns_fsparse2 \ nsdata ( "sparse" , -1.85569 , 1.8013 , 0.514998 , 1 ) // +/- 0.0027 #define ns_vsparse2 \ nsdata ( "sparse" , -2.28436 , 2.08765 , 0.520132 , 1 ) // +/- 0.0025 #define ns_fsparse3 \ nsdata ( "sparse" , -2.34351 , 2.43843 , 0.49609 , 1 ) // +/- 0.0174 #define ns_vsparse3 \ nsdata ( "sparse" , -2.71525 , 2.64793 , 0.504632 , 1 ) // +/- 0.0256 #define ns_fflow1 \ nsdata ( "flow" , 0.191786 , 0.838335 , 0.476434 , 1 ) // +/- 0.0024 #define ns_vflow1 \ nsdata ( "flow" , 0.156953 , 0.847188 , 0.498596 , 1 ) // +/- 0.0024 #define ns_fflow2 \ nsdata ( "flow" , 0.110068 , 0.907473 , 0.489255 , 1 ) // +/- 0.0024 #define ns_vflow2 \ nsdata ( "flow" , 0.019407 , 0.977013 , 0.330133 , 1 ) // +/- 0.0032 #define ns_fflow3 \ nsdata ( "flow" , 0.0972697 , 0.879663 , 0.514725 , 1 ) // +/- 0.0024 #define ns_vflow3 \ nsdata ( "flow" , 0.0789278 , 0.909136 , 0.506907 , 1 ) // +/- 0.0024 #define ns_fpflow1 \ nsdata ( "pflow" , 0.192796 , 0.835272 , 0.483768 , 1 ) // +/- 0.0024 #define ns_vpflow1 \ nsdata ( "pflow" , 0.192727 , 0.834885 , 0.481012 , 1 ) // +/- 0.0024 #define ns_fpflow2 \ nsdata ( "pflow" , 0.0875699 , 0.872108 , 0.526021 , 1 ) // +/- 0.0025 #define ns_vpflow2 \ nsdata ( "pflow" , 0.0681927 , 0.928206 , 0.502054 , 1 ) // +/- 0.0025 #define ns_fpflow3 \ nsdata ( "pflow" , 0.0931273 , 0.896028 , 0.506575 , 1 ) // +/- 0.0024 #define ns_vpflow3 \ nsdata ( "pflow" , 0.0427369 , 0.940558 , 0.509313 , 1 ) // +/- 0.0024 #define ns_fworleyFA1 \ nsdata ( "worley" , 0 , 0.742495 , 0.0740117 , 0 ) // +/- 0.0024 #define ns_vworleyFA1 \ nsdata ( "worley" , 0 , 0.742495 , 0.0740117 , 0 ) // +/- 0.0024 #define ns_fworleyFA2 \ nsdata ( "worley" , 0 , 1.15271 , 0.108373 , 0 ) // +/- 0.0256 #define ns_vworleyFA2 \ nsdata ( "worley" , 0 , 1.15271 , 0.108373 , 0 ) // +/- 0.0256 #define ns_fworleyFA3 \ nsdata ( "worley" , 0 , 1.18895 , 0.159684 , 0 ) // +/- 0.0256 #define ns_vworleyFA3 \ nsdata ( "worley" , 0 , 1.18895 , 0.159684 , 0 ) // +/- 0.0256 #define ns_fworleyFB1 \ nsdata ( "worley" , 0 , 0.902963 , 0.118548 , 0 ) // +/- 0.0025 #define ns_vworleyFB1 \ nsdata ( "worley" , 0 , 0.902963 , 0.118548 , 0 ) // +/- 0.0025 #define ns_fworleyFB2 \ nsdata ( "worley" , 0 , 1.24931 , 0.108399 , 0 ) // +/- 0.0256 #define ns_vworleyFB2 \ nsdata ( "worley" , 0 , 1.24931 , 0.108399 , 0 ) // +/- 0.0256 #define ns_fworleyFB3 \ nsdata ( "worley" , 0 , 1.1101 , 0.118099 , 0 ) // +/- 0.0181 #define ns_vworleyFB3 \ nsdata ( "worley" , 0 , 1.1101 , 0.118099 , 0 ) // +/- 0.0181 #define ns_fmworleyFA1 \ nsdata( "mworley" , 0 , 0.587001 , 0.0971886 , 0 ) // +/- 0.0025 #define ns_vmworleyFA1 \ nsdata( "mworley" , 0 , 0.587001 , 0.0971886 , 0 ) // +/- 0.0025 #define ns_fmworleyFA2 \ nsdata( "mworley" , 0 , 1.29428 , 0.314845 , 0 ) // +/- 0.0059487 #define ns_vmworleyFA2 \ nsdata( "mworley" , 0 , 1.29428 , 0.314845 , 0 ) // +/- 0.0059487 #define ns_fmworleyFA3 \ nsdata( "mworley" , 0 , 1.56603 ,0.398481 , 0 ) // +/- 0.0124397 #define ns_vmworleyFA3 \ nsdata( "mworley" , 0 , 1.56603 ,0.398481 , 0 ) // +/- 0.0124397 #define ns_fmworleyFB1 \ nsdata( "mworley" , 0 , 0.618887 , 0.178215 , 0 ) // +/- 0.00249998 #define ns_vmworleyFB1 \ nsdata( "mworley" , 0 , 0.618887 , 0.178215 , 0 ) // +/- 0.00249998 #define ns_fmworleyFB2 \ nsdata( "mworley" , 0 , 1.25947 , 0.183175 , 0 ) // +/- 0.0153326 #define ns_vmworleyFB2 \ nsdata( "mworley" , 0 , 1.25947 , 0.183175 , 0 ) // +/- 0.0153326 #define ns_fmworleyFB3 \ nsdata( "mworley" , 0 , 1.45466 , 0.161667 , 0 ) // +/- 0.0213142 #define ns_vmworleyFB3 \ nsdata( "mworley" , 0 , 1.45466 , 0.161667 , 0 ) // +/- 0.0213142 #define ns_fcworleyFA1 \ nsdata( "cworley" , 0 , 0.587747 , 0.0978262, 0 ) // +/- 0.0025 #define ns_vcworleyFA1 \ nsdata( "cworley" , 0 , 0.587747 , 0.0978262, 0 ) // +/- 0.0025 #define ns_fcworleyFA2 \ nsdata( "cworley" , 0 , 0.901443 , 0.320862 , 0 ) // +/- 0.00593521 #define ns_vcworleyFA2 \ nsdata( "cworley" , 0 , 0.901443 , 0.320862 , 0 ) // +/- 0.00593521 #define ns_fcworleyFA3 \ nsdata( "cworley" , 0 , 0.843453 , 0.406956, 0 ) // +/- 0.00592824 #define ns_vcworleyFA3 \ nsdata( "cworley" , 0 , 0.843453 , 0.406956, 0 ) // +/- 0.00592824 #define ns_fcworleyFB1 \ nsdata( "cworley" , 0 , 0.619793 , 0.178844, 0 ) // +/- 0.0025 #define ns_vcworleyFB1 \ nsdata( "cworley" , 0 , 0.619793 , 0.178844, 0 ) // +/- 0.0025 #define ns_fcworleyFB2 \ nsdata( "cworley" , 0 , 0.849381 , 0.185333, 0 ) // +/- 0.00514269 #define ns_vcworleyFB2 \ nsdata( "cworley" , 0 , 0.849381 , 0.185333, 0 ) // +/- 0.00514269 #define ns_fcworleyFB3 \ nsdata( "cworley" , -0.0114286 , 0.776565 , 0.165661, 0 ) // +/- 0.0114286 #define ns_vcworleyFB3 \ nsdata( "cworley" , -0.0114286 , 0.776565 , 0.165661, 0 ) // +/- 0.0114286 #define ns_falligator1 \ nsdata ( "alligator" , 0 , 0.897279 , 0.13911 , 0 ) // +/- 0.0024 #define ns_valligator1 \ nsdata ( "alligator" , 0 , 0.931199 , 0.132454 , 0 ) // +/- 0.0024 #define ns_falligator2 \ nsdata ( "alligator" , 0 , 0.981734 , 0.117792 , 0 ) // +/- 0.0025 #define ns_valligator2 \ nsdata ( "alligator" , 0 , 0.980294 , 0.126717 , 0 ) // +/- 0.0024 #define ns_falligator3 \ nsdata ( "alligator" , 0 , 0.993732 , 0.117951 , 0 ) // +/- 0.0032 #define ns_valligator3 \ nsdata ( "alligator" , 0 , 0.992102 , 0.128566 , 0 ) // +/- 0.0025 #define ns_fperlin4 \ nsdata ( "perlin" , 0.0168713 , 0.998413 , 0.507642 , 1 ) // +/- 0.0073 #define ns_vperlin4 \ nsdata ( "perlin" , 0.00576016 , 1.025 , 0.518260 , 1 ) // +/- 0.0037 #define ns_fpperlin4 \ nsdata ( "pperlin" , 0.154528 , 0.828153 , 0.511577 , 1 ) // +/- 0.0024 #define ns_vpperlin4 \ nsdata ( "pperlin" , 0.149949 , 0.853128 , 0.49744 , 1 ) // +/- 0.0024 #define ns_fsimplex4 \ nsdata ( "simplex" , 0.0943673 , 0.912882 , 0.503625 , 1 ) // +/- 0.0064 #define ns_vsimplex4 \ nsdata ( "simplex" , 0.13602 , 0.848679 , 0.510355 , 1 ) // +/- 0.0025 #define ns_fsparse4 \ nsdata ( "sparse" , -2.18691 , 2.46426 , 0.476393 , 1 ) // +/- 0.0064 #define ns_vsparse4 \ nsdata ( "sparse" , -2.59173 , 2.50891 , 0.506553 , 1 ) // +/- 0.0145 #define ns_fflow4 \ nsdata ( "flow" , 0.0541632 , 0.942907 , 0.501736 , 1 ) // +/- 0.0025 #define ns_vflow4 \ nsdata ( "flow" , 0.0834745 , 0.893131 , 0.514653 , 1 ) // +/- 0.0024 #define ns_fpflow4 \ nsdata ( "pflow" , 0.144938 , 0.852499 , 0.501408 , 1 ) // +/- 0.0024 #define ns_vpflow4 \ nsdata ( "pflow" , 0.155242 , 0.840548 , 0.5022 , 1 ) // +/- 0.0024 #define ns_fworleyFA4 \ nsdata ( "worley" , 0 , 1.19425 , 0.314428 , 0 ) // +/- 0.0024 #define ns_vworleyFA4 \ nsdata ( "worley" , 0 , 1.19425 , 0.314428 , 0 ) // +/- 0.0024 #define ns_fworleyFB4 \ nsdata ( "worley" , 0 , 1.53913 , 0.1402 , 0 ) // +/- 0.0512 #define ns_vworleyFB4 \ nsdata ( "worley" , 0 , 1.53913 , 0.1402 , 0 ) // +/- 0.0512 #define ns_fmworleyFA4 \ nsdata ( "mworley" , 0.00495732 , 1.7116 , 0.482286 , 0 ) // +/- 0.0068835 #define ns_vmworleyFA4 \ nsdata ( "mworley" , 0.00495732 , 1.7116 , 0.482286 , 0 ) // +/- 0.0068835 #define ns_fmworleyFB4 \ nsdata ( "mworley" ,-0.0163645 , 1.42481 , 0.159796 , 0 ) // +/- 0.0163645 #define ns_vmworleyFB4 \ nsdata ( "mworley" ,-0.0163645 , 1.42481 , 0.159796 , 0 ) // +/- 0.0163645 #define ns_fcworleyFA4 \ nsdata ( "cworley" , 0.0274073 , 0.690122 , 0.521913 , 0 ) // +/- 0.00249996 #define ns_vcworleyFA4 \ nsdata ( "cworley" , 0.0274073 , 0.690122 , 0.521913 , 0 ) // +/- 0.00249996 #define ns_fcworleyFB4 \ nsdata ( "cworley" , 0 , 0.647968 , 0.156623 , 0 ) // +/- 0.00587861 #define ns_vcworleyFB4 \ nsdata ( "cworley" , 0 , 0.647968 , 0.156623 , 0 ) // +/- 0.00587861 #define ns_falligator4 \ nsdata ( "alligator" , 0 , 0.994222 , 0.117762 , 0 ) // +/- 0.0032 #define ns_valligator4 \ nsdata ( "alligator" , 0 , 0.991346 , 0.125998 , 0 ) // +/- 0.0025 #define ns_fsine1 \ nsdata ( "sine" , 0 , 1 , 0.5 , 1 ) // +/- 0 #define ns_fsine2 \ nsdata ( "sine" , 0 , 1 , 0.5 , 1 ) // +/- 0 #define ns_fsine3 \ nsdata ( "sine" , 0 , 1 , 0.5 , 1 ) // +/- 0 #define ns_fsine4 \ nsdata ( "sine" , 0 , 1 , 0.5 , 1 ) // +/- 0 #define ns_vsine1 \ nsdata ( "sine" , 0 , 1 , 0.5 , 1 ) // +/- 0 #define ns_vsine2 \ nsdata ( "sine" , 0 , 1 , 0.5 , 1 ) // +/- 0 #define ns_vsine3 \ nsdata ( "sine" , 0 , 1 , 0.5 , 1 ) // +/- 0 #define ns_vsine4 \ nsdata ( "sine" , 0 , 1 , 0.5 , 1 ) // +/- 0
  35. 2 points
    Hello, here is some of my attempts to do something similar. But I can't get a similar level of detalization in mantra. If somebody can suggest some tips it wound be amazing volume is still a little bit blurry, I guess it could be because of texture resolution vol-0001_volume_v01.hip
  36. 2 points
    You can use maketransform(): http://www.sidefx.com/docs/houdini/vex/functions/maketransform Put this in a pointwrangle and make sure to set all scale values to 1. int trs = chi('transformation_order'); int xyz = chi('rotation_order'); vector t = chv('translation'); vector r = chv('rotation'); vector s = chv('scale'); vector p = chv('pivot'); matrix m = maketransform(trs, xyz, t, r, s, p); @P *= m;
  37. 1 point
    Hello, I hope somebody can help me out as I have run into a problem when linking ramps via script that I have been unable to solve for more than a week now. What I would like to achieve is exactly the same effect that using "Copy Parameter" / "Paste Relative References" does when doing this from the user interface. I tried both python and hscript. The problem is that once the ramps are linked, when I add new control points to the parent, the child gets the control points but doesn't get the positions (ramp#pos) and values (ramp#value). In python I simply tried to set one float ramp parm to the other like this: hou.parm("/obj/node_B/ramp_B").set(hou.parm("/obj/node_A/ramp_A")) This seemed like the most simple and straightforward way of doing this but it failed so I reported it to the SideFX guys and they confirmed that python is not feature-complete for linking ramps with the .set() command - first they logged it as Bug #97192 then it was reconsidered to be an RFE with the same ID. After this SideFX suggested to use hscript opmultiparm which I proceeded to do but the ramp linking failed this time too. I am fairly confident using python but not so much with hscript so I am hoping it's my inability to use hscript properly this time rather than another bug - this is what I did: opmultiparm /obj/node_B/ 'ramp_B#pos' '/obj/node_A/ramp_A#pos' 'ramp_B#value' '/obj/node_A/ramp_A#value' 'ramp_B#interp' '/obj/node_A/ramp_A#interp' What I noticed in the "Edit Parameters" interface is if I manually type in the path to link the ramps then it does work the same as "Copy Parameter" / "Paste Relative References" - see below. I wonder if this field is exposed to python or hscript somewhere and maybe I should try to set this? Other than the above I also used both opscript and .asCode() after setting up the ramps links manually to see if it gives me the proper code and even if I run the code I get back from these the ramp linking still fails. Has anybody ever found a reliable solution for linking ramps in script? Anybody got any ideas where to go from here?:) EDIT: I found the solution on the SideFX forum by user jsmack in this post: https://www.sidefx.com/forum/topic/59899
  38. 1 point
    houdini.env should be created in the directory you mentioned when you start houdini the first time, assuming you haven't changed the $HOME environment variable. On windows you can got to start > search for "environment variables" and check out the HOUDINI_USER_PREF_DIR environment variable and make sure it's not getting put somewhere else.
  39. 1 point
    All that we hear from Simon on his presentations are: "I did it... Cool... Enjoy..." But how he did it
  40. 1 point
    DM 1.5 for Houdini. 3 days discount! https://gum.co/GVLLS/dm_discount
  41. 1 point
    https://www.sidefx.com/tutorials/houdini-16-masterclass-compiled-sops/
  42. 1 point
    Hi Everyone, I "expanded" and changed the solution by Atom and Delda a bit The script now expect you to select the SHOP network node created by the fbx importer. It then creates MAT network at obj level with the same name as the selected SHOP network node and then I use ATOM function to create the redshift shaders inside it. I puposely do not append the 'rs_' to the name of the material so it is easy to replace the original material by simply changing base directory of where the object is searching for the materials. Basically the same materials name will reside in a different container. The reason why I took out the part of the script that appended the new materials to the object was because I thought that as it was written it may have problem with the structure in which my FBX where built. Basically multiple materials adresses inside a single material SOP. Anyway, As @Atom script was very helpful I thought in adding my bit by sharing the adaptation here and hoping the community find it useful also. Nico. fbxMat2RSMat.py
  43. 1 point
    Hi all! My question is kinda simple but haven't found an answer yet. How can I achieve effect like this: This animated carbon fiber would be exactly the thing I'm looking for, but I know I should start just growing simpler stuff on the top of another surface. Any suggestion what tutorials I should watch? Thanks!
  44. 1 point
    Not quite sure what effect you're going for, so I may be completely minsunderstanding your setup but it looks like i) your limpHair attribute was a point attribute which really needed to be on the constraint primitives and ii) your Sop Solver was not acting on the Constraint Geometry (and also not really transferring the limpHair attribute over to stiffness. I've changed all of that so at least you get a 'reaction' to your growing @wet attribute. As I said, may not be what you were after.. FurSetups_v003.hipnc
  45. 1 point
    In a wrangle write: v@ndcP= toNDC(chs("cam"),v@P); float padding = chf("padding"); float nearclip = chf("nearclip"); if(v@ndcP.x > (1 + padding) || v@ndcP.x < (0 - padding) || v@ndcP.y > (1 + padding) || v@ndcpos12321.y < (0 - padding) || -v@ndcP.z < nearclip){ removepoint(0,@ptnum); } click on the spare parameters and add the camera you wanna add.
  46. 1 point
    I've gone this route...if someone asks you to bend a 1x1x1 segment box.......well you can't cos there ain't enough segments for it to bend. So I decide if the pearls are sooooo low res, they would less likely to deform. So in my new file, if you sim it now (don't go down to peak and subdiv yet) the pearl sphere have Freq at 2, you'll see deformations as they smash into each other. Substep for the sim is at 2 which is a minimal increase. Now go up to the sphere and change Freq to 1, sim again....to the naked eye...that's good enough for me as a rigid object. Then now you'll see the cheating purpose of the peak and subdiv, they are simply there to get back the volume of the pearls that were lost due to extreme low res setting. I'd take this approach with the cost as a minimal substep increase. Of course, I don't know how extreme your situation is....is there a mock up test file ? vu_hankypearls2.hiplc
  47. 1 point
    Hi all, I had been doing a rnd project on how to generate knitted garments in Houdini lately. And one my inspiration was from a project which was done by Psyop using Fabric engine and the other one is done by my friend Burak Demirci. Here are the links of them. http://fabricengine.com/case-studies/psyop-part-2/ https://www.artstation.com/artist/burakdemirci Some people asked to share my hip file and I was going to do it sooner but things were little busy for me. Here it is, I also put some sticky notes to explain the process better, hope it helps. Also this hip file is the identical file of the one that I created this video except the rendering nodes https://vimeo.com/163676773 .I think there are still some things that can be improved and maybe done in a better way. I would love to see people developing this system further. Cheers! Alican Görgeç knitRnD.zip
  48. 1 point
    No, your explanation is great. Looking at your file, I got the foreach loop part right(thanks to the Masterclass tutorial). I could not find a way to make the clip SOP to work. That is when I got lazy and posted here. My mind was heading in the right direction, but only starting to learn VEX now. I can see how much more control I will have once I understand it better. It would be awesome if you placed it on your wiki. The format and explanation is easy to follow, and would help me to understand the VEX part. Thanks for the incredible resource and effort. Your wiki page is permanently open on my pc. Now, the idea is to see if I can ad two more clip SOPS at -45 and 45, so that it randomly switches between the 4 angles. Thanks again.
  49. 1 point
    You don't need FLIP at all. All you need is a simple setup to move a point along the surface flow which can be calculated with the SDF gradient and some cross products to get your up and right directions. Then you can add some randomness by rotating around the gradient direction and add a trail sop to get the streak. Assign pscale based off of ptnum/numpt and VDB from particles the result with an SDF smooth and voila. I was able to get this result in a couple hours and while it needs tweaking it should get you started. drips.001.hipnc
  50. 1 point
    Is it possible to define cvex shader in VOP network and call it by path?
×