Search the Community
Showing results for tags 'math'.
-
After more than 5 months of unimaginable amount of work, I am proud to release my first in-depth Houdini course on VEX More details in the video description and the website. Active Patreon members will receive additional discounts proportional to their lifetime support (25% of their lifetime support). Message me on Patreon for your discount coupon. Enjoy! 01 - Introduction [Point Clouds] 02 - Introduction [pcopen() vs pcfind() vs nearpoints()] 03 - Introduction 04 - Implementation 05 - pcfilter() Implementation for pcfind() 06 - pgfind() 07 - pcfind_radius() 08 - Excluding the Current Point & Ad-Hoc Groups 09 - Finding Min & Max Neighbour Points [Unique Pair Matching] 10 - Concept 11 - Implementation [Camera Based Occlusion with Variable Pscale] 12 - Concept 13 - Implementation [Uniform Point Distribution Over Polygonal Surfaces [Point Relaxation]] 14 - Concept 15 - Implementation 16 - Decoupling Operators [Convolution Kernels] 17 - Introduction 18 - Border Handling [Connectivity & k-Depth Point Neighbours Using Edges] 19 - Introduction 20 - Concept 21 - Implementation [Connectivity & k-Depth Point Neighbours Using Primitives] 22 - Concept 23 - Implementation [Extending k-Depth Point Neighbours Using Edges] 24 - Introduction 25 - Concept 26 - Implementation [Extending k-Depth Point Neighbours Using Primitives] 27 - Concept 28 - Implementation [smoothstep() [Cubic Hermite Interpolation]] 29 - Concept 30 - Implementation [Shaping Functions] 31 - Introduction 32 - Implementation 33 - Blurring Attributes [Sharpening Attributes Using Unsharp Mask] 34 - Concept 35 - Implementation [Generalizing the Kernel Code to Handle All Attribute Types] 36 - Concept 37 - Implementation [Attribute Gradient] 38 - Introduction 39 - Concept 40 - Implementation [Gradient Ascent & Descent] 41 - Planar Geometry - Introduction 42 - Planar Geometry - Concept 43 - Planar Geometry - Implementation 44 - 3D Geometry [Contour Lines] 45 - Introduction 46 - Concept 47 - Implementation 48 - Heightfields [Geometric Advection - Orthogonalization & Flowlines] 49 - Introduction 50 - Concept 51 - Implementation [Clustering & Quadtrees] 52 - Concept 53 - Implementation [Adaptive Subdivision] 54 - Introduction 55 - Implementation 56 - Hashing [Adaptive Subdivision] 57 - Improving OpenSubdiv Catmull-Clark Subdivision Surfaces Algorithm 58 - Half-Edges [Adaptive Subdivision] [Aggressive Performance Optimizations] 59 - Eliminating Groups 60 - Custom Fusing In VEX 61 - Recreating Proximity Structures In VEX 62 - Get Unshared Edges In VEX 63 - Final Optimizations [Limit Surface Sampling] 64 - Introduction 65 - OpenSubdiv Patches 66 - Moving Points to the Subdivision Limit Surface 67 - Scattering Points on the Subdivision Limit Surface 68 - Generating a Point Cloud on the Subdivision Limit Surface 69 - Pre-Generating a Point Cloud on the Subdivision Limit Surface 70 - Creating Isolines on the Subdivision Limit Surface [Adaptive Subdivision] 71 - Computing Surface Normals from the Subdivision Limit Surface [Custom Subdivision Surfaces] [Splitting Edges [Edge Divide]] 72 - Concept 73 - Converting Edges to Primitives 74 - Creating New Edge Points [Rebuilding Polygons] 75 - Concept 76 - Implementation 77 - Preserving & Interpolating Attributes 78 - Multithreading by Connectivity 79 - C++ vs VEX 80 - Preserving Groups 81 - Final Optimizations [Implementing Bilinear Subdivision] 82 - Introduction 83 - Concept 84 - Modeling Test Geometry 85 - Starting from Edge Divide 86 - Creating New Face Points 87 - Creating New Edge Points [Creating New Closed Polygons] 88 - Concept 89 - Implementation [Creating New Open Polygons] 90 - Concept 91 - Implementation 92 - Preserving Primitive Groups & Interpolating Primitive Attributes [Preserving Vertex Groups & Interpolating Vertex Attributes for Closed Polygons] 93 - Concept 94 - Implementation 95 - Preserving Vertex Groups & Interpolating Vertex Attributes for Open Polygons 96 - Implementing Iterations 97 - Preserving Literal Groups 98 - Creating Neighbour Primitives 99 - Final Changes 100 - Testing On Complex Geometry [Implementing Catmull-Clark Subdivision] 101 - Introduction [Closed Surfaces] 102 - Rules [Gathering Edge & Face Points] 103 - Concept 104 - Implementation [Computing Weights for New Edge Points] 105 - Concept 106 - Implementation [Computing Weights for Original Points] 107 - Concept 108 - Implementation [Attribute Interpolation] 109 - Concept 110 - Implementation [Boundary Interpolation Rules for New Edge Points] 111 - Concept 112 - Implementation [Boundary Interpolation Rules for Original Points] 113 - Concept 114 - Implementation 115 - Open Surfaces - Handling Corner Points 116 - Handling Non-Manifold Topology [Open Polygons] [Computing Weights for Original Points] 117 - Reverse Engineering OpenSubdiv 118 - Implementation [Computing Weights for New Edge Points] 119 - Reverse Engineering OpenSubdiv 120 - Implementation 121 - Handling Open Polygonal Curves [Handling Mixed Topology] 122 - Full Geometry 123 - Sub-Geometry 124 - Testing On Complex Geometry [Performance] 125 - Profiling [Grouping Boundary Edges from Primitive Group] 126 - Concept 127 - Implementation 128 - VEX vs C++ [Caustics] 129 - Introduction 130 - Sea Caustics 131 - Pool Caustics [Enhancing Gradient Ascent, Descent & Contour Lines] 132 - Introduction 133 - Implementation 134 - Tracing Both Directions [Updating Distances Properly] 135 - Concept 136 - Implementation 137 - Looping Streamlines Problem 138 - Adding Trace Parameter [Evenly Spaced Gradient Ascent, Descent & Contour Lines] 139 - Introduction 140 - White Paper 141 - Concept 142 - Constructing the For Loop Network 143 - Improving Seed Points Selection for Tighter Packing 144 - Implementing Separation [Enforcing Separation Using Self Proximity] 145 - Concept 146 - Implementation 147 - Optimization 148 - Final Tweak 149 - Applying to 3D Geometry [Custom Subdivision Surfaces] [Extreme Performance Optimizations] 150 - Introduction 151 - Establishing Baseline for Performance 152 - Updating Attribute Interpolate Nodes 153 - Interpolation vs Copying 154 - Optimizing Input Group 155 - Caching Geometry Data 156 - pointedge vs pointhedge 157 - Getting Primitives from Half Edges 158 - Eliminating Edge Groups 159 - Parallelizing Geometry Creation for New Primitives [Unrolling Loops] 160 - Parallelizing Geometry Creation for New Edge Primitives [Unrolling Loops] 161 - Finalizing the Network 162 - Performance Profiling the Latest Version 163 - Conclusion
- 51 replies
-
- 15
-
Ola Peoples! I'm just gonna post my adventure regarding and learning more about organic form and modeling. Have fun , and I hope that someone can help with tips and other Trix in Vex or just enjoying this Topic. Starting model, it's Lily - L-system. Reading ON GROWTH AND FORM BY D’ARCY WENTWORTH THOMPSON Cambridge: at the University Press 1917. This is not for professionally CG artists only for Hobbyist-sss
- 199 replies
-
- 7
-
- sacredgeometry
- guilloche
- (and 4 more)
-
Dear ODForcers, I have a question regarding increasing sub-steps to increase quality and accuracy of ANY dynamic sim [NB: this ALWAYS seems to be suggested by tutorials]. Obviously having less is helpful for iteration testing speed, however I find whenever I increase them I nearly always get dramatically different results, whether RBD, FLIP, PYRO, etc (or combos of these). Having had a bit of a think about this I was wondering what issues there are with cranking the sub-steps. I imagine 2 things may affect it: 1. Vector and Scalar quantities scaling differently (although maybe there's tricks in the solvers to get around this) (and surface stuff, 2D?) 2. [and I imagine this is the most important] Chaos Theory Anyway, trying to learn to be an FX TD from home and any advice and chat is MUCH appreciated. Thanks 5D
-
Has anyone done a biarc interpolation of a curve in Houdini? https://www.ryanjuckett.com/biarc-interpolation/
-
hey guys. simple question which I do not hold the answer to. I have a switch and I want it to switch input number every 50th frame going between 0 and 1. so example would be that for the first 50 frames the active switch value is 0 and then on frame 51 it goes to 1, hold that for 50 frames and then turns back to 0. I need this to be a procedural expression if possible rather than key framing it. Thanks
-
In short, how can I calculate the transformation matrix, or just rotation similar to how a geometry constraint/rivet works, where you define a few points as reference to glue a geo to an animated one? Long one: I want to procedurally animate the preroll of some packed RBDs, by comparing frame 1 and 2 of the simulation and project the objects backwards in time using that offset. It's a pre-broken sphere, so for translation, I find the average position of all points for both frames to calculate the offset per frame, which works great. [@P -= offset * backwardFrame;] The rotation part isn't as accurate though. I believe multiplying a rotation matrix with a scalar [@P*= rotMatrix*time] doesn't produce the desired results, so I am trying to calculate an axis and a rotation value that describes the difference between these two frames. I am currently picking the positions of 1 random but similar point in both geometries relative to their center, which I cross to find the axis. Then I use an acos(dot()) to get the angle between these two vectors. It almost works, but not 100% and picking a different point changes the result a bit. I guess that's happening because I need to take in consideration more than 1 points into the two geometry. thank you
-
Hi all, As some of you may know I have recently started a youtube channel where I am sharing some techniques, setups and tips. My goal is to first cover some of the fundamental tools/setups and then build more elaborate setups. I wanted to share this with the odforce community too as this community will always have a special place in my heart :). Thank you for watching & have fun learning! The channel: https://www.youtube.com/channel/UCZMPkkgnAFghvffxaTh6CsA My first video:
-
Hi guys/ladies, how can I compute a proper vector field that's tangent to any arbitrary mesh in VEX? I used the polyframe SOP but there are some inconsistencies with the vector directions and plus I'd love to know a VEX approach for creating a proper tangent field on arbitrary mesh. Thanks in advance. (I've provided a file with the mesh I'm currently working on; see attached) compute_tangent_field_HELP_01.hip
-
Hi guys/girls, so I built this voronoi scale set-up for a mesh (see attached file) and would like to transfer uvs from the original base mesh to the scales, I've tried several different look-up methods but nothing has worked thus far. I managed to bother Jonah Friedman on linkedIn who did a similar set-up on a chameleon spot for psyop (see video link attached below) and he said that he'd done that in fabric engine and to copy the uvs from the original mesh he did a closest point lookup, but sadly that has not worked thus far for me. The final model will be texture painted in substance painter. Any help from a some uv and texturing wizard would be much appreciated! OH, AND I THINK I HAD SET THE VIEWPORT STATE TO MANUAL REFRESH, JUST IN CASE SOMEONE DIDN'T REALIZE! TRIPS ME UP SOMETIMES. Psyop scale set-up voronoi_scales_RnD_06_odforce.hip
-
Hi guys and girls, I have this condensation on bottle shot I'm working and would love to create a poisson disk distribution with a uniform sample of points based on the area of the triangles in the mesh. I've been looking at the papers written about this but its a liittle bit technical for me at this time. I'm hoping some could maybe look at my file and point me in the right direction to use vex to create this algorithm. Thanks much in advance. poisson_on_bottle_setup.hip
-
Hi, This is something I really don't understand and I didn't find anything in the Houdini help. Can anyone explain it in simple terms? Is it only useful in shading? Thanks
-
Hi everyone! There is someone who took one of these course? Or other courses about math in Houdini? Have you got any advices? Thank you all! http://www.hossamfx.org/math-in-houdini-vol2/ (also vol1) https://www.rebelway.net/math-for-fx/
-
Hello! I am struggling to get what I want from a lens shader. It is somehow a math challenge. Let's see if there is someone who can figure it out... Simple scenario: - Perspective camera looking towards a grid made of 4 points (corners). - I want the camera to render the grid taking each corner as a reference to fill the frame completely with the grid (not more or less). Details: - The grid should be able to rotate on 3 axes and the camera should keep framing it. (So aspect ratio won't do it, since it has some perspective). - I have managed to do it in one axis, but additional axes seem to start acting weird, the results are close but not enough. Since it is math it should be perfect! (I does not have to be foolproof, looking towards the Z direction always and not handling more than 180-degree rotations is ok). Code of my lens shader #include "math.h" #pragma opname lens_shader #pragma oplabel "Lens_shader" #pragma hint x hidden #pragma hint y hidden #pragma hint Time hidden #pragma hint dofx hidden #pragma hint dofy hidden #pragma hint aspect hidden #pragma hint P hidden #pragma hint I hidden cvex anamorphic_lens( //Inputs float x = 0; // X screen coordinate in the range -1 to 1 float y = 0; // Y screen coordinate in the range -1 to 1 float Time = 0; // Sample time float dofx = 0; // X depth of field sample value float dofy = 0; // Y depth of field sample value float aspect = 1; // Image aspect ratio (x/y) //Outputs export vector P = 0; // Ray origin in camera space export vector I = 0; // Ray direction in camera space export int valid = 1; // Whether the sample is valid for measuring //Grid corners converted to camera space vector corner0 = 0; vector corner3 = 0; ) { float xmin_bounds = corner0[0]; float xmax_bounds = corner3[0]; float ymin_bounds = corner0[1]; float ymax_bounds = corner3[1]; float zmin_bounds = corner0[2]; float zmax_bounds = corner3[2]; float new_x = fit(x, -1, 1, min(xmin_bounds, xmax_bounds), max(xmin_bounds, xmax_bounds)); float new_y = fit(y, -1, 1, min(ymin_bounds, ymax_bounds), max(ymin_bounds, ymax_bounds)); // Calculations Z axis in relation to X float offset = min(zmin_bounds, zmax_bounds); float relation_x = (max(zmin_bounds, zmax_bounds)-offset)/min(xmin_bounds, xmax_bounds); if(xmin_bounds > xmax_bounds){ relation_x *= -1; } float relation_y = (max(zmin_bounds, zmax_bounds)-offset)/min(ymin_bounds, ymax_bounds); if(ymin_bounds > ymax_bounds){ relation_y *= -1; } float z = (-relation_x * new_x) + (-relation_y * new_y) + offset; P = set(0, 0, 0); I = set(new_x, new_y, z);
-
Hi People! this has a lot of potentials I think sources ---- https://github.com/JosephFiola/BookofShadersHoudiniVex https://thebookofshaders.com Joseph "While Houdini does support GLSL code to render shaders into the viewport, I have not implemented this yet. For now these examples are only visible in the render view using the Ray Tracing render engine." We have examples for 2 and 5 chapters .....if you plug inline-code in CD on Point Vop, you can see everything..and its easy to manipulate.. I am interested to know some process ( Just what to change ) and appreciate help with this. converting rest of some chapters like patterns for example to inline code https://thebookofshaders.com/09/ https://thebookofshaders.com/08/ Thanx
-
When you have complex ocean spectra layered together using masks with varying speeds, and even animated timescales, retiming them while keeping the same approved look becomes a technical challenge. In this lesson you will see how to achieve this as a procedural post-retime operation, without having to modify any ocean spectra individually.
-
Question 1 Hi guys/girls, so my issue is I have a branch-like structure growing around a bottle with some fruits being grown out at ends, however I used the findshortestpath node to get the branches to be correct size as they're grown and now the point sorting is all messed up and I was wondering if there is a better way to get correct scaling of branches? Question 2 How can I get the growing plants to offset there growth in time in an orderly manner once copied to the branches. Question 3 Any tips on how to properly generate UVs on the growing structure? I've attach the Hip file, any help would be much appreciated. Thanks in advance. growth_on_bottle_test_01.hip
- 2 replies
-
- sops
- for each sop
- (and 8 more)
-
Long time ago I got a file from @nosferatu_037 that explain how to achieve this ...can't find the file https://www.flickr.com/photos/deskriptiv/8142630082/in/photostream/ I have 2 files ..normally... found here I just know that he had something different in setup Hm .. can't figure it Out and I know that I have Fun with that file .. How ??? absi.hipnc travernira.hipnc
-
A shot in the dark here, but has anyone done any hyperbolic tiling in Houdini? The structure is really beautiful but the math is extremely complex, for me at least. Would love to see if anyone has tackled something like this in Houdini
-
I wrote an article that is probably only of interest for the .1% It is a crash introduction to HDK, C++ and the mesh laplacian. https://mbaadsgaard.com/portfolio/laplacian-eigenvector-plugin-for-houdini/ Feedback is, of course, also welcome
-
I am trying to figure out how to get the converse of a field, mathematically. I am attempting to blur a Cd field in using a Gas Blur microsolver. I have some mixed results, but I want to get some finer control over the radius, namely that I want it to blur more as it slows down. I have used the gas analysis microsolver to get the speed field by taking the length of the velocity, but I can't figure out how to get larger values to be in the lower speed areas. Obviously I would love to use a fit to invert the values, but I am struggling with an elegant way to get the minimum and maximum values for a given field. I could easily just do a loop in a wrangle and get the min/max values that way, but that is going to be extremely slow as this is a very large, dense simulation. Is there a simple way I can get the min/max values in a field so I can use fit(@speed, min, max, max, min) in a Gas Field Wrangle node to get the converse of my field?
-
Hi every one, I kinda have an idea to create, though not a good one, but wanted to show it here and ask how would you guys go about this effect in Houdini, let me know ur thoughts https://codepen.io/znah/pen/dKdoKW?editors=0010
-
Hi everyone! I've made an illustration video-tutorial about the Heat Method application to point clouds by Keenan Crane et al, Yang Liu et al and others.