Jump to content

Leaderboard


Popular Content

Showing most liked content since 03/21/2018 in all areas

  1. 6 points
    I would use the wind tunnel option on the Pyro Object DOP. Enable the wind tunnel option and set the vector as the direction and magnitude of the wind tunnel. Make sure that it is a smoke sim. Disable anything to do with temperature. Set buoyancy to 0. Disable any temperature field in the source volume and the Fluid Source VOP. Get rid of gravity. Make the container size just big enough to run the sim. Very narrow. On the Solver, disable all shaping including diffusion except for confinement. Use lots of confinement to add nice swirling detail. See the attached hip file for one example setup. From my sim comparing to the reference footage, a lot of finessing with either localized sink in the shoe to velocity sculpting or invisible colliders are used around the shoe to get the streamers to do what they are doing which is to be expected. That the streamers would be art directed far beyond a simple physical simulation. wind_tunnel_shoe.hip
  2. 6 points
    Hi guys, i would like share with all of you my latest personal project i did on my spare time. Hope you like it.
  3. 5 points
    spammers will spam, that's the nature of the interwebs. We've turned on first post moderation for now, which will shield everyone from the spam. Hopefully it dies down soon and we can turn it off again. M
  4. 5 points
    Random placement using Cellular noise. cop_random_tiling_v2.hipnc
  5. 4 points
    Hey everyone, I just released my Pipeline called Prism, which I developed over the last few years. Prism is an artist-friendly Pipeline, mainly for animation and VFX projects, but it can help anyone who works within the CG industry. Prism does not only manage your scenefiles, exports and imports, but it also takes care of your playblasts, renderings and more. Prism works with many industry standard tools out of the box. This includes Houdini, Maya, 3ds Max, Blender and Nuke. And finally, Prism is free to use! Here is a short introduction video of Prism: https://vimeo.com/265003976 You can download it for free on the website: https://prism-pipeline.com/
  6. 4 points
    There are a couple of breakdowns on this out there... But beyond these, you probably need to check actual research papers and if you go onto Amazon I'm sure there are math books on the subject that goes into this way deeper...
  7. 4 points
    I know this is a bit late, but I missed this thread and felt like I should comment. Firstly, this topic amuses me since I think I could count on two hands (maybe some toes) the amount of times we've had to lock threads in the 20 years this site has been running. So the assertion that we're trigger happy thread lockers is a bit of a stretch. Now it may be that some of the very small number of locked threads belonged to some people in this thread, and if that's true then I would suggest taking a look at your online etiquette and perhaps adjusting a few things. You should note that we have very few rules governing each forum, where most other forums on the internet have a laundry list of do's and don'ts for posting. The reason for that is that we have an amazing community of professionals who actually like to help each other produce great work. Healthy debates are certainly welcome, but personal attacks are not. tl;dr: If the topic descends to the equivalent of "no, you!", "heck you!" etc, then it is looked at as a lockable entity. Don't want that to happen? Don't behave that way. M
  8. 3 points
    It is way to do with Vop cop. cop_tiling.hipnc
  9. 3 points
    Modular Toy Track HDA. Just add track. If use custom profile, simply create in front view a half profile across X axis. vu_modular_toy_track.hdanc
  10. 3 points
    updated to 3D as per OP's request... (please see orig thread for explainations) vu_Dejag3DMultiHoles.hipnc
  11. 3 points
    I don't know if this is useful to anyone else, but I often find that I need some simple shapes to run experiments on, but I never bother to apply consistent uv's. So I started a hip file which has some common shapes in it already uv'd. They all retain a uv size where 1m equals 0-1 in uv space. You can easily then scale the uvs after if you want a different rez. There's also one in there that just takes a faceted model and splats consistent uvs on each facet. Theres loads more I want to add, but I thought I'd just make a handful and see how useful I found them. Heres where you can get the hip - http://richardlord.tumblr.com/post/172592883216/shape-library-i-needed-a-bunch-of-shapes-that-were
  12. 3 points
    Hi everybody, Wanted to share the latest experiment and say that Houdini is absolutely a fun piece of software to work with. Nothing in this project is final yet. Cheers.
  13. 3 points
  14. 2 points
    1. you can close registration for a time 2. you can move new users to sandbox and set time interval (1 day for example) for a fist post 3. you can block all mesages from new users, leave only one first 4. you can install filters for non-english words and 5. you can block users who create more then one message after registration ...and you can do more another things for block spam.
  15. 2 points
    Hello fellow odforce-people, at the moment I'm working on my bachelor thesis which I'm writing about Dynamic Simulations for Film in Houdini. In order to demonstrate these effects, I'm producing two shots of a short film that I've wanted to do for a long time. And for the environment of this short film I decided to do some procedural modelling with Houdini. And since the houdini community is so extremely generous, I decided to take part myself and share my entire project file. It's slightly messy, but I hope it's useful. * I started out in Cinema 4D where I did some basic cloner-modelling to get all the basic shapes right. * Then I moved into Houdini, converted everything to an SDF and cut out dynamically generated holes. (Scatted loads of spheres into a vdb that I generated from the sdf, displaced the spheres, made an sdf from it and "difference-d" it away from the main mesh.) * Having converted the object back to polygons, I ran the mesh through Instantmeshes to get a clean quad-mesh. (Love this program almost as much as Houdini.) * For uv-mapping and memory-efficient exporting I got rid of all the faces that were not visible from the inside. (more than half) (I wrote a little script that sends rays from every point of the mesh to the 'god-points' in the center (because godrays, haha... ha...) and when any of these rays hit, it's marked as visible (green). Then I get rid of all the invisble points (red). * I unwrapped the mesh using Auto-Unwrap from the game-dev-toolkit and exported it (as well as the high-res-version from before) to Substance Painter where I baked all the maps (normals, AO, etc.) from the hi-res mesh to the low-res mesh. * In painter I just smashed a couple of smart material on there that I found on Substance Share, scaled up the UV-Tiling (because huge mesh) and was pretty much done with texturing. The render is a screenshot from painter's integration of I-Ray. (When I get everything together in Cinema and render with Octane, I'm gonna step the lighting up a notch of course. ) Here's a couple of pics: And attached you'll find the project file as well as the base-obj I started out with from Cinema (And one remesh to work with in case you don't have Instant-Mesh set up). To make viewing easier, I turned on a switch that sclices out only a small part of the arena for editing and increased the voxel-size so that loading only takes 15 seconds instead of half an hour. Cheers, Martin ARENAWRANGLE_TOODFORCE.zip
  16. 2 points
    you don't need loop at all, just promote your attribs to get average values per prim to each point compute transform attribute and invert transform then use Transform By Attribute SOP to transform back and forth as you need, see the file rotation_reset_at_origin_fix.hipnc
  17. 2 points
    The previous preset of .idx used to be ascii before they made if binary to optimize performance, however, this reduce the amount of control you can have with the system. Source and revision control are impossible in a binary format. You can longer edit by hand in each preset which is really needed for production control. Additionally you want to be able to have per project control of presets, which I can not at the moment recall if the previous ascii .idx could handle i.e. for each HOUDINI_PATH variable you have be able to add each new preset to the list for studio and project control. The previous system of having all the presets in one file, I'm not personally a fan of as I would like each preset to be it's on file. The old presets have their own custom format, which was not intuitive, so documentation and a standard jason or xml format would be helpful. For those not used to hand editing presets, which I'm guessing is nearly everyone in the last five years or more, perhaps a UI from within Houdini. This UI could also help all the new people. Also allowing for some more complex preset controls, like node name, color and shape that are now maintained by different systems. This may include also other on name change, ondeleted, on input change actions. Which it would be nice to perhaps have a way to subscribe a bit to the presets, and maintain more of an active link, so that you know that this node is actively prescribed to that preset so when the studio updates the node preferences they can update. While perhaps dangerous in some ways, in the course of a large production, in order to say change a whole sequence of .hip files or Houdini Engine .hda options for a level team. A studio could change the options on demand instead of tryign to change the defaults on the node which may not be at issue for the other half the studio. For instance, all volumetric redering mantra nodes need to have a better tweak, or you need to autocorrect all the settings because some juniors keep messing with the settings and you want to lock down or hide the parameters. Something I am not a total fan of but perhaps needed in the world of Orbolt where people are selling assets, is to be able to add these presets to the .hda. In production this would generally be more a piece of shit decision, but in the world of smaller teams this may be helpful to store all related items of an asset together, especially now that we can store asset in their uncompressed version. The current work around for this system is to make your own python preset system. Which is a bit on the companies burdensome side. This also means you now have multiple preset systems to maintain. The old Gear Menu setup, the newer wrangle drop down menu setups, and then your own studio one. Additionally this brings to light that unlike the L-System preset, now with wrangles people expect presets to live in multiple places. A lot of newer people not even being aware there is a preset menu in the gear menu. One of these should be eliminated in preference of the other. So that means to take all of one system and put it into the other including making it more production friendly. Which in reality means going to all the wrangle nodes and putting those options in the gear menu, to make one homogeneous system. Additionally fixing all the under the hood reason why those options were not included in the gear menu solution. While in theory it is OK to have two different preset options in two different places, when accounting for studio options it really makes three. At the end of the day this really just highlights the issue at hand that the original system needs to be upgraded.
  18. 2 points
    Looking for remote/freelance Houdini work. Have licenses of Houdini Indie, Octane and Redshift. contact: gabriel.roccisano@gmail.com LinkedIn: https://www.linkedin.com/in/gabriel-roccisano-7090489 Reel:
  19. 2 points
    Hi I'm still a beginner in Houdini and i decided to create a mini project to learn it and stay motivated. I want create a procedural train tracks. I would like to have the tracks follow a spline and depending on the angle and the lenght of the spline the system will place the correct blocks. I will build each blocks straight and curve separately. Here is the schematic of each blocks and a quick render i did in Houdini http://www.woodenrailway.info/track/trackmath.html# Any idea where to start ? Thank you for your help. Thomas
  20. 2 points
    Hey Guys I wanted to share with you a small script I've done to have a better support or external editors to edit your expressions and code. It works with a system or file watcher, that means it doesn't freeze Houdini and you don't need to close your editor to see you updates It's available by a simple right-click on a parameter => expression => External Expression Editor ( you can set a hotkey ). It works with VEX and Python expressions but also regular HScript expressions ( but with no completion ). It works very well with Visual Studio Code as it has a nice VEX and Python plugins, but it could work with sublime text, notepad ++ etc. ( I haven't tested all the IDE out there so if you find a bug with one of them, feel free to send an email to contact@cgtoolbox.com ). A small video about it: https://vimeo.com/242470411 You can download it for free here: http://cgtoolbox.com/houdini-expression-editor/ PySide, PySide2 and PyQt are supported, it is compatible with Houdini 15 to 16.5.
  21. 2 points
    Proper lighting first : you need to take HDRI pictures onset during the shot of your footage, then rework them to have a proper correspondance of colors (using things like mcbeth chart etc.). Those HDRI can then be used to light your scene (Image Based Lighting). That already helps a lot with integration. Materials : you need to have good material references and build nice shaders to mimic real world materials (if that’s the purpose : sometimes you want weird/unatural/scifi things to be integrated :-) Then in compositing, you have to tweak all of that to blend things as the director wants. In few lines that’s hard to tell you more : there so much parameters to makes things works, and so many different situations that will make solutions unique to one shot... I recommend you to look at some LookDev and Compositing courses on fxphd.com They are really great and taught by professionals : https://www.fxphd.com/details/499/ https://www.fxphd.com/details/555/ https://www.fxphd.com/details/556/ https://www.fxphd.com/details/292/ https://www.fxphd.com/details/283/
  22. 2 points
    Few tips and tricks to manipulate gas simulation. 1. Independent resolution grid. E.g. Overriding vel grid size independent to a density grid. 2. Creating additional utilities. E.g. gradient, speed, vorticity and etc which can be used to manipulate forces. 3. Forces via VEX and some example snippets. smokesolver_v1.hipnc P.S. Some of this technique are not Open CL friendly though.
  23. 2 points
    Scaling your lines so they're contained inside the box, adding normals and using normal direction for the ray node seems to work better? Is this what you're going for? --Dave test_DS.hipnc
  24. 2 points
    "wrap" is an intrinsic attribute to PackedSequence primitive you can set it using Primitive Wrangle setprimintrinsic(0, "wrap", @primnum, "mirror");
  25. 2 points
    "Brushed" I'm currently working on my first VR-Art-project with "Invisible Room" in Berlin and was exploring 3D-brushes from - in this case Tiltbrush - and Quill in our R&D. Here the result was exported as Alembic, procedurally coloured in Houdini and rendered with Redshift over a scanned-in rice-paper-texture: Interesting times... :-) Cheers, Tom
  26. 2 points
    Check for inspiration 00:15+ 00:50+
  27. 2 points
    Hey guys, Quick update on that tool, it is now compatible with Python SOP node code: More to come soon: python COP, digital assets extra code etc. http://cgtoolbox.com/houdini-expression-editor/
  28. 2 points
    Hello fellow Houdniks, FMX is around the corner again and of course there will be another user-meeting this year. od-lunch will be on Wednesday April 25 during the official FMX lunch break from 1PM-2PM. I made a reservation for 20 people at the restaurant “Logo” directly inside “Haus der Wirtschaft” (the FMX venue). Please RSVP here: http://meetu.ps/e/F11Q0/vSmyz/f Looking forward to seeing you again! Cheers Oliver
  29. 2 points
    Basic smoke solver built within SOP solver, utilising openVDB nodes. Happy exploring & expanding =) P.S. DOP’s smoke solver still solves quicker in many cases though. vdbsmokesolver_v1.hipnc
  30. 2 points
    please take a look at the attached file. it´s an example how you could create bezier curves with arbitrary degree and another one relying on beziers in hermite form since you wrote about blending curves... petz curves_vex.hipnc
  31. 2 points
    ok, here is the example file with 4 ways (cache the instance geometry first, both blue nodes ) 1. (Purple) rendering points with instancefile attrib directly through fast instancing 2. (Green) overriding unexpandedfilename intrinsic for any packeddisk primitive copied onto points without stamping 3. (Red) just for comparison Instance SOP, which is using copy stamping inside, so it will be slower than previous methods 4. (Yellow) copying static alembic without stamping and overriding abcframe in this case to vary time for each instance independently (if you need various alembics you can vary abcfilename as well) ts_instance_and_packed_examples_without_stamping.hip
  32. 2 points
    curvature computation on grid data like volumes is fairly easy. just compute the hessian and extract the curvature information you need. hth. petz vol_curv.hipnc
  33. 1 point
    What version/build of houdini are you using? I found that the version I was using had a bug in it - the latest build / an older build sorted it for me
  34. 1 point
    You get triangles if you add or subtract X and Y coordinates. shader_tri.hiplc
  35. 1 point
    Hi! Just use an assemble sop and turn on "Create Packed Geometry" option.
  36. 1 point
    a poly primitive can't branch you can however try appending PolyPath SOP to minimize number of primitives your geo is composed of
  37. 1 point
    or you can also use Add in VDB Combine then afterwards just divide by number of volumes to get the average
  38. 1 point
    Hi, Do you have a geometry of the forms / hollows you are showing us ? One idea can be to convert your pyro sim (once it is simed) to VDB, and from there substract the parts / blobs you want as hollow into your sim (VDB Combine). If you don’t have the geometry of the hollows, that will be tricky to obtain... I would calculate a gradient to determine the normals of the fluid and use that to carve the interior (using a volume wrangle maybe ?). Your start at the surface of the fluid, you travel a certain amount into the fluid (thickness of your « walls ») in the reverse direction of the normal, and from there you set the density to 0... Not sure it can works, but I would spend some time thinking of how to do it with those tools... Another idea could be to use a noise function to replace the density values only inside the fluid (using your sim surface as a mask, as described above, converting it to a SDF), and choose the right frequency and roughness of the noise to make those hollows (and maybe remap the with a ramp to create more abrupt change of densities and see clearly those hollows...) Hope that helps you a bit...
  39. 1 point
    Yeah, a wrangle is usually a good choice. The method is almost exactly the same. Here's a screengrab of the network and the code you'd use: vector p2 = point(1, "P", @ptnum); @N = normalize(p2 - @P);
  40. 1 point
    I don't have an answer, but I agree it's sort of weird. What also used to bug me a lot was that spaces aren't allowed between the operators here in the group fields, but work fine in hscript expressions and vex wrangles.
  41. 1 point
    Hey man put together a quick file to explain how I would go about it, pretty simple hope it helps To get the wispy smoke look - you'd need a lot of particles - or drive the particle movement from a smoke simulation for nicer movement particles_from_image.hip
  42. 1 point
    It's because adding Pz/Depth extra plane for Redshift works differently. Possibly camera parameter might have different name on RS rop. It's an easy fix if you have RS around (I don't till Monday, sorry). skk. damn you OSX with no X server anymore.
  43. 1 point
    Flex doesn't give you anything more than what you already have in Houdini with Grains on OpenCL. It's only as fast as your updates of simulation - which usually involve CPU (meshes, volumes) in real scenario. It's good for games I suppose (specially that they support AMD and Intel finally), but in FX you will quickly get back to realm of ordinary people using DOPs with total control and directibility. Saying that, I have to admit that having even basic hair simulation working in SOPs in realtime while animating rigged character is super fun to watch. You can check my messy github account for wire solver in Flex. But it useless in current state (I have slightly better implementation, but can't share it, sorry, and it isn't very practical anyway).
  44. 1 point
    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
  45. 1 point
    With some Triangulate 2D and Divide you can extract outlines like this: No need to do inverse transform, if you don't need it further, since Triangulate 2D will find best plane. silhouette_edges.hipnc
  46. 1 point
    Hi all. I made something a few weeks ago that I thought might be useful, so I somewhat tutorialised it here: http://www.pixelninja.design/manhattan-voronoi-approximation/ Basically it's a method of achieving something close to a Manhattan-distance voronoi diagram. I hope someone out there finds this useful If anyone knows of a better method, or a method of achieving an actual Manhattan voronoi I'd love to hear it! ManhattanApproximation_01.hiplc
  47. 1 point
    Since I couldn't figure out how to really fuse and connect points of different wires while still getting the wire solver to work properly I just connected the points with spring contraints. Much easier solution even though there's still lots of space for improvement... wire_constraints.hipnc
  48. 1 point
  49. 1 point
    Looks like you can do it using the Partition SOP, here's a quick file thrown together to show it working group_polygon_islands.hipnc
  50. 1 point
    For multiparm parameters, you need to use the opmultiparm hscript command to link them. The easiest way to see what the right command is to promote a ramp parameter in an HDA and then run opmultiparm on the node containing the ramp inside.
×