Jump to content

Search the Community

Showing results for tags 'vex'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Lounge/General chat
    • Education
    • Jobs
    • Marketplace
  • Houdini
    • General Houdini Questions
    • Effects
    • Modeling
    • Animation & Rigging
    • Lighting & Rendering
    • Compositing
    • Games
    • Tools (HDA's etc.)
  • Coders Corner
    • HDK : Houdini Development Kit
    • Scripting
    • Shaders
  • Art and Challenges
    • Finished Work
    • Work in Progress
    • VFX Challenge
    • Effects Challenge Archive
  • Systems and Other Applications
    • Other 3d Packages
    • Operating Systems
    • Hardware
    • Pipeline
  • od|force
    • Feedback, Suggestions, Bugs

Product Groups

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Skype


Name


Location


Interests

  1. I've tried: if(find(s@name,"rock")==1) @group_rock=1; but the number of primitives in the groups is 0, while there are a lot. Basically there are a lot of primitives, some have the word "rock" in the @name attribute, others don't I just need to isolate the ones with "rock" in the name. Should I be using a different function?
  2. 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! Table of Contents 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 - Intro 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 - Intro 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 150 - Conclusion
  3. How do i write function that can override it variables like the &prim and &uv in xyzdist. float xyzdist(<geometry>geometry, vector origin, int &prim, vector &uv) float myProcess(float &space; float sideBar ) { float space=1; space = 15 * sideBar; }
  4. I'm trying to recreate this cool effect I came across. It looks like an infection system that's getting traced so I started to go down that path. With a basic infection step-up, I got the leading edge of the infection so I could trace it. I actually don't think that's going to work having had a look at the set up now and wondered if anyone else had any ideas of how to achieve something like this? grow_lines.mp4 infection.mov Infection_Lines_02.hip
  5. Hello, I'm trying to grow multiple lines at different times, with attribute values triggering this growth. If I create an infection system as demonstrated in the video below, it triggers the growth if set to do so from the first frame and works fine. However, if I create an attribute that triggers the infection to commence at frame 26 for example, the infection does not spread. I am baffled as to what's going on here. Is it possible to grow multiple lines based attribute values changing over time? Hip and explanatory image attached. Any ideas on how to achieve lines being grown on changing attribute values would be greatly appreciated. TriggerLineGrowth.hiplc
  6. Hey all, this is probably a simple question but cant really figure it out. I have a grid, and a sphere that i am animating over the grid. This transfers a mask attribute with the mask from geometry node. I would like to take this mask attribute and use it as a trigger for playing alembics. Using the solver node for comparing and storing the mask attribute so it stays on 1 if the sphere has moved over a point. I create a attribute named trigger. Say if mask is > 0.5 the trigger attribute is 1. When trigger attribute is 1 i need to start incrementing another attribute named animation from 0 and upwards over time. How would i write this in vex so i can plug it into the primintrinsics of alembics that i copy on the grid? Thx!
  7. Hey there! I'm trying to assign a 'MatID' prim attribute value based on incoming data. I'm currently importing data from a JSON file which has an array called 'primMatID'. There are 10 entries in this array and they are being read into Houdini as separate attributes; primMatID[0], primMatID[1]..... primMatID[9]. Using an attribute wrangle, I'm assigning the value of each of those 'primMatID' entries to the 'MatID' attribute on a specific prim/face of a simple model (eg pentagon). I've only been able to achieve the first four, inappropriately treating the 'primMatID' entries as vectors *blushes* in a vex wrangle, but obviously vector4 is the biggest there is, so the fifth through tenth entries of the JSON array cannot be captured with this approach. For the attached image, is it possible to transfer the primMatID[4] value of 8 to prim 6? Any help would be greatly appreciated! Thanks in advance.
  8. https://alexeyvanzhula.gumroad.com/l/modeler2023/black_friday
  9. Hi, Learning VEX and this is simply out of curiosity since I'm trying to build an intuition for how houdini works under the hood. I know I can read a vector from say point 5, like so: vector test = point(0, "P", 5); printf("%f", test); {0.091506,0.482963,-0.091506} Is there a way I can directly access only a component, like P.x with the point function? To my surprise, substituting "P" with "P.x" doesn't work, i.e: float test = point(0, "P.x", 5); printf("%f", test); 0.000000 I know I can access it via variable indices in the first example like vector test = point(0, "P", 5); printf("%f", test[0]); 0.091506 but it doesn't seem to work within the function. Neither "P.x" nor "P[0]" works. Is there a good reason for this? Grateful for any input you may have! GG
  10. Houdini was getting bored doing hours of simulation, so I gave him something to play with. - Done in Houdini, script in VEX, rendered using Karma.
  11. "Loops" is my latest Houdini.School class covering process loops like for, for-each, while and do/while loops. I'll illustrate numerous examples that will focus on SOPs, VOPs, VEX, COPs, and LOPs. Learn more about the class and enroll here: https://bit.ly/hsloops
  12. I hope to get the nearest position on a surface or line that is somewhere along the inverse normal, searching in a range of angles (a cone if you will). If this can be done in vex that'd be ideal (I've messed around sop loops and group stuff but that as expected gets very slow). Too aid with the question there is an expertly drawn diagram.
  13. http://www.patreon.com/posts/31506335 Carves out polygons using a point attribute with the ability to define the carve values per primitive using primitive attributes. Pure VEX implementation, 10x faster than the default Carve SOP (compiled). It preserves all available attributes. It supports both open and closed polygons.
  14. Hi all, I have a single poly prim with 1+polys ontop/inside, I would like to remove the smaller ones from the larger one (think bool) ideally not using a bool operation (but may be unavoidable) and using VEX, my current approach would be to extract to points and knowing the small prims figure out a way to rebuild a prim from these . (easy right ?) and suggestion welcome. Curt
  15. Hello guys, I try to implement the thin sheet feature (from this paper : http://www.cs.kent.edu/~zwang/schedule/zy11.pdf) but I'm stuck on this : How can I implement this, or translate this into vex ? I'm not sure if it's working with the grids and I should try to code it in a volume wrangle but I really don't know how I have to implement it. I tried this in a point wrangle (in a sop solver) : int pts[]; float kernel_result[]; pts = pcfind(0, "P", @P, ch("search_radius"), chi("search_count")); for(int i = 1; i < len(pts); i++){ vector pos1 = point(0, "P", pts[0]); vector pos2 = point(0, "P", pts[i]); float radius_mult = ch("radius_multiplier"); float radius = @pscale * radius_mult; float sum = (1 - pow(length(pos2 - pos1), 2) / pow(radius, 2)); if(0 <= length(sum) <= radius){ float result = sum; } else{ float result = 0; } append(kernel_result, result); } I'm sure it's not good and it's why I'm asking help ! If anyone here can help it would be much appreciated !! Cheers,
  16. Hi All, Quick question, Objective: I have two points (could be any orientation), If the distance is greater than "x" meters ( in world units, 0.5m in this example) I would like to add an additional point 0.25 Meters along the vector (eg.from first point two second point direction) is there a VEX function for this? cheers
  17. How does one deal with multiple paths in POP Steer Path I would like to be able to assign a list of possible paths to each agent particle instead of all the particles following all the paths. Currently I set up multiple sops and multiple agent groups but that's not very scalable. Cheers
  18. 3@transform = set( {-0.146396,-0.0727609,0.0550026},{0.0605058,0.000363445,0.161525},{0.0682531,-0.156387,-0.0252152} ) ; -- Instance with @transform p@orient = quaternion(3@transform); DELETE @transform attribute -- Instance with p@orient Different Results of orientation! If I instance the point with p@Orient converted from 3@transform using quaternion() , the orientation is flipped . It seems that I get the same p@Orient value with ident() and ident() * -1 . Is it the problem? How can I obtain the correct p@orient ? Thank you for reading my question
  19. Hey guys. I want to display info of each LOD on parameter editor panel and I got it work in Houdini, but when I use this hda in UE, all detail scripts turn to be strings rather than values, and horizontal layout of labels messed up, too. Is that because UE don't support runtime vex in label parameter?
  20. I want to split a string after a specific number of characters. ie. split after the 5th character (position 5) string s = "0123456789"; into "012345" and "6789" I don't have any consistent separator. I have a consistent amount of characters after which I want to split. Split function won't work because by default it will set space as the separator if none is specified. My approach would be. Split the string into a characters array, and then recreate the separated strings using a for loop string s_char[] => (0, 1, 2, 3 , 4, 5, 6 , 7, 8, 9) int coord = 5; //coord to split at string s_1, s_2; for(int i; i <= coord; i++){ s_1 += s_char[i]; } for(int i; i>coord && i<max; i++){ s_2 += s_char[i]; } Any ideas on how to achieve this?
  21. whenever I try to use pcfind() I get perfect circle shaped sampling I tried to break this pattern by adding noise to P position in pcfind() as such : if(intpointgroup(0, 'infected', @ptnum)) { @myArray = pcfind(0, 'P', @P+v@noise, radius, max_pts); } *noise was generated in vex using voplib.h but somehow it just shifted the start position, not the sampling pattern itself. (I still get clean circle shape sampling) is there another way I can break this pattern in one wrangle? I've used attribnoise to P and rayed it back to get a similar result, but it messes up the rest position and doesn't feel right sorry for horrible English and thank you in advance!
  22. I feel like the answer is going to be simple but I have been hung up on this for a while. I am finding the nearpoint and storing its vector as a lerp target. That part works fine but as the rest position moves I want it not look for a new closest point until distance from rest to the last nearpoint is x far away. Instead of constantly looking for the closest point. The final effect I am going for is to have the sphere move across surfaces and have the lines act like tendrils walking. point_reach_003.hiplc
  23. Hi! This is my first post to this wonderful forum, my teacher recommended it to me since I'm the only one in my CG-course to want to work with Houdini and the autodidactic approach can be harsh sometimes I was following the classic "vex isn't scary"-tutorial on for loops and decided I wanted to try to make the "infected" points also move into a new position within the foreach-loop after they've become infected, which worked fine. But then I tried to create a float parameter that blended the initial position of each point and the new position, so that you are able to see them moving towards the center as they became infected, and got completely lost in the sauce. Anyone know how to write that in VEX? I attached the file with directions. Looking forward to spending time within this community, you guys are awesome! FORLOOPS_VEX.hipnc
  24. I've got a lot of geo being imported into my scene and it turns out there are many duplicates. Does anyone have any neat ideas how to whittle them down to a single instance? I've packed them and then I was thinking of building an array of point positions for everything and then removing all but one instance of said position. Any ideas? Cheers
×
×
  • Create New...