Jump to content

Search the Community

Showing results for tags 'vex'.



More search options

  • 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

Found 556 results

  1. Modeler 2020

    Product link: https://gum.co/KYCgR What's new: 1. The Modeler core has been completely rewritten. Performance, stability and UX are improved. 2. A hotkey system has been created. Hotkeys are now configured in a separate editor (Hotkeys shelf tool). The editor allows you to quickly configure keyboard and mouse shortcuts. Unlike other modeling programs, you can now associate any tool with any combination of keys or mouse actions. In a similar way, the mouse and keyboard are configured in Nevercenter Silo, but unlike Silo, there are no restrictions here. That is, you can assign absolutely any tool to the mouse. On the other hand, mouse tools such as interactive selection can also be assigned to keyboard shortcuts. Also, unlike the standard Houdini behavior in Modeler, you can use the additional two mouse keys X1 and X2 (Ctrl+X1, Shift+Ctrl+X2 etc). The Hotkeys editor has two default mouse layouts: 1. Standard - that works just like DM and the previous Modeler version - LMB to select items and MMB to drag them 2. Pro - which allows us to select geometry components with RMB and drag with LMB. MMB used to select invisible items too. 3. The interactive state system (add-on for Python States) has been rewritten from scratch. Many tools have become more interactive and have the ability to customize the node in the viewport. In addition, you can quickly create custom interactive python tools for your own HDAs. The mouse wheel now works more universally. In many nodes, the wheel allows you to change the Uniform Scale parameter. List of nodes that now use state tools: Soft Boolean, Insert Mesh, QPrimitive, Array, Hose, Bevel, Extrude, Bridge, Set Flow, Smooth Points, Thickness, View Deform. 4. Retopology tools (Topo category) have been redesigned. TopoDraw tool (Alt+A) allows you to quickly draw poly patches on the reference geometry. It has an ability to snap to existing geometry. Topo mode (Alt+T) now packs the reference model. This speeds up the entire process of retopology with millions of faces. The Push tool now works in the Topo mode, which allows you to get the desired result even faster. In addition, the Push tool has improved performance and stability. 5. The Insert Mesh SOP was redone from scratch. It has interactive tuning, better performance, and more accurate results thanks to improved normals. 6. The Deform menu was merged with the Align menu and renamed to Transform Menu (Z). 7. The Relax tool renamed to Smooth. The tool is completely redesigned and takes advantage of Python States. Using the Smooth tool, you can smooth points or polygons in a standard way. On the other hand, the edges are smoothed as separate curves. Combined with interactive enhancements, the tool allows you to quickly fix messy areas. 8. Tools that create modeling nodes were removed from the Modeler shelf. Only general tools are now on the shelf. Direct modeling tools are now called from the Modeler mode. Added shelf tools: Delete Node, Merge Nodes, Stash History, Pack History, Clean History и Delete Attribs 9. Added a new tool Repeat Node Parms that allows you to apply settings from previously created nodes of the current tree 10. ToolsPanel (spacebar) renamed to Launcher. Launcher tools have been re-sorted and have a new Mouse section for interactive tools like selection or dragging 11. For Bevel, Bridge, Extrude and Smooth tools separate nodes were created 12. Bevel, Extrude, Inset, Smooth, Thickness hotkeys can work as sticky keys. That is, the call of a hotkey, for example, of the Extrude tool, leads to an instant change of the extrusion value before releasing the key. 13. Added Inset tool that uses Extrude SOP. In contrast to the Extrude tool, the first time you start Inset, you can change the inset with LMB. 14. The Lattice tool removed. It is now replaced by improved View 4 and View 9 (View Deform) from the Transform menu (Z) 15. Tools for a quick preview of the subdivided geometry were created: Preview Subdivide (Alt+1) и Preview Subdivide Wire (Alt+2). Standard viewport subdivision and instance subdivision (Symmetrize Tool) ar assigned to Alt+3 и Alt+4 respectivelly. 16. Select By Normals mode (6) allows you to select components based on normals 17. Local transformation tools have been added to the Transform menu: Local Move, Local Rotate и Local Scale 18. An Extend (Y) tool. This add-on to the Extrude tool allows you to quickly extrude edges and polygons using handles. 19. The Bridge Connected tool returned from the DM package 20. Slice, Clip and Mirror tools have the ability to set the initial origin based on points selection center 21. On the next call, the Delete tool changes the node so that it deletes unselected geometry. 22. The KitBash tool now offers to automatically create a KitBash panel if it is not created 23. Shift+Double Click can now replace the geometry of the current Insert Mesh SOP with the geometry from the KitBash panel 24. Combine and Boolean now offer to select nodes at the object level if the tool was launched inside the SOP container 25. Set Flow creates more accurate geometry in unusual situations. 26. Added a Point Weld tool (Alt+W) for interactive point stitching 27. The Soft Boolean SOP can be configured interactively. It also has a slightly improved performance. 28. Collapse History (Left) renamed to Pack History 29. Many tools are assigned to new hotkeys. The ToggleCompass tool is now called with the Backspace key. 30. The Edit Mesh shelf tool now renamed to Modeler 31. Modeler now moved to the package Houdini system instead of using houdini.env
  2. 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.
  3. 1 Minute VEX

    Hello everyone! Every Monday at 12am for the last 3 weeks I have been uploading VEX snippets as mini-tutorials on my website: https://aaronsmith.tv/1-Minute-VEX Here, through '1 Minute VEX', I'll try to walk you through some of the more obscure and advanced functions that exist, and add as much explanation as possible to accompany the images in text based form. These are not for Houdini beginners! I also intend on all of my website's educational content being free - permanently. No donations, no subscriptions, no coupons. Below is 1 Minute VEX III as an example; Let me know if anyone has any suggestions for improvement! - 1 Minute VEX III - Ray-Cast Ambient Occlusion
  4. Assigning material to prim group

    Hi, I have the following geometry with prim group. I wish to assign a specific material to a specific prim group, I am using an Attribute Wrangler SOP to perform the VEX operation but can't work out the variable name I should be using to do the comparison printf('%s',s@path); printf('nicholas test\n'); // if(match('*sphere*', s@path)) s@shop_materialpath = '/mat/red'; Cheers
  5. Joy of Vex 7 coding issue

    i'm going through the "Joy of Vex" and i've run into an issue at day 7. this code (below) isn't giving me the results of this gif. /////////////// int pt = nearpoint(1,@P); vector pos = point(1,'P',pt); float d = distance(@P, pos); d *= ch('scale'); d += rand(pt); d -= @Time; @P.y = chramp('pulse',d)*ch('amp'); /////////// Joy_of_vex7issue.hipnc
  6. what is intrinsic in VEX?

    some function like below one: setprimintrinsic() carry the intrinsic with themselves, what are they, and how we can use them?
  7. vex : addvertex with foreach

    What do these two lines mean? I do not understand. Please explain. addvertex(0, prim, @ptnum); addvertex(0,prim,pt); I don't konw why "ptnum" is needed here.
  8. iterate over certain points

    I have this code below: i[]@TP = neighbours(0,0); foreach(int i ; @TP) { @P.y = 1; } how can I tell Houdini to just move the points insideTP array? foreach move all the points.
  9. I'm gonna use nearpoint with the position of add+transform. int point = nearpoint(0,v@opinput1_P,1); if(point == @ptnum) { @Cd = {1,0,0}; } but it doesn't work.
  10. volume of an object affect on your effect

    hey guys , how can I calculate the volume of an object in VEX , I want to write something like this one below: the line of your script * volume of a specific object I used getbbox_size but the result is a scalar. I want everything in the object to have the effect. what should I do? best regards
  11. Pragmatic VEX: Volume 1 [4K] [H18]

    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 132 - Conclusion
  12. Hi, Is there a way to do @disableexternal on each object individually ? I would like to disable it for one object but not the other. Thanks !
  13. Just Have Fun Now Flower Effects and much more Its Crystal Case mystiqueTransform.rar
  14. [SOLVED] @P in Flip/POP Vexpression

    Hello everyone, I am currently working on something with FLIP Fluids and need to decrease the POP Windforce depending on the distance to a point. I assumed I could use the Vexpression inside the POP Wind but I can't seem to be able to access the particle Position. I have created a basic HIP file. Inside the AutoDOP Network, you will find the POP Wind in which I'm simply trying to export a test attribute that should be "@P". I've already tried a couple of things like Google, reading the float values separately ("@P.x"), or simply using it like I would use VEX in SOPS ("float length = length(@P);"). I am sure there is an easy way that I haven't found yet or a logical reason why I can't access "@P". Any help would be appreciated! Position_in_Vexpression.hiplc
  15. Can any VEX experts help with the following. Getting a "Read only expression on left side of assignment' error for the last line in the following VEX snippet vector axis = vector(rand(@ptnum)); float angle = radians(ch('amount')); matrix3 m = ident(); rotate(m, angle, axis); @orient = quaternion(m);
  16. Javascript to Vex snippet

    Can delete this post
  17. How to use references properly

    I would like to get some basic understanding on how to use attributes, channels, references in vex properly. I'd like to understand in detail why this works: v@planepos = {`chs("../grid1/tx")`, `chs("../grid1/ty")`, `chs("../grid1/tz")`}; While this throws an error on the fourth line: f@planeTx = ch("../grid1/tx"); f@planeTy = ch("../grid1/ty"); f@planeTz = ch("../grid1/tz"); v@planepos = {@planeTx, @planeTy, @planeTz}; And could I avoid the relative references at all? I am aware that the attribute wrangle has some optional inputs, how could I make use of them to achieve the same result as my first example? something like: v@planepos = attrib(1, 'Center')
  18. Hi there, So I'm trying to fit the point velocity attribute range from 0-1. In my test scene, I have a simple RBD sphere shooting upwards and slowly slows down once landed. I'm using the length of velocity, promote it to detail attribute with min and max v and imported the detail attributes in a second wrangler where I fit it in an attribute called @speed, the issue is instead of @speed going from 0-1, it always starts at 0.5? Or is my setup wrong? Thanks. *hip file attached* min_max_v.hip
  19. Hi all, i've got some points with trails and i'm filtering them randomly to leave some behind as the trails move forwards. each trail is split into a leading point and the trailing points, and each trail and its leader have a unique id. what I want to do is take the points i've left behind and remove them if they come into contact with another point trail that has a different id. so something like an attribute transfer but with a condition that checks the near points id and only transfers some attribute if that id is different. so the white points from trail 1 would exist until the come in contact with the red points from trail 2. Any ideas how to do this in vex or vops? Many thanks,
  20. Rotate object based on oriented bounding box

    I put a slightly oblique scanned object into an oriented bounding box and picked two points that are supposed to be straight. Now I am struggling to counter-rotate my mesh according to the bounding box´s orientation. vector scan_orient = normalize( point(0, "P", 0) - point(0, "P", 3) ); vector straight = {0, 0, 1}; matrix3 rot = dihedral(scan_orient, straight); rot = invert(rot); @P *= rot; What am I missing?
  21. Procedurally split faces

    Hey guys, it's me again, I have another "complicated" question : is it possible to procedurally split faces with vex ? I'm modeling roofs, and I needed to split the top faces to get to and be able to get a triangle shape (by translating the created point on the Y axis). The edge divide sop makes a wonderful job, but sometimes it doesn't cut faces properly (it's very rare but very annoying). For now, I detect the bugged faces by counting the vertices on each face, and if one has 6 vertices then it's a bugged face; but I don't know how to split them procedurally. One method that came to my mind was making a python script that creates a polysplit node for each face with the split coords but it's not very efficient.. If anyone has an idea ! Cheers, edit : added a screenshot for a better explanation!
  22. Hey guys, I'm working on some procedural tools and I need to add points on 2 primitives (they are approximately the same) to then add polylines for each pair of points (to make some grooves like there is on haussmannian building rooftops). This screenshot may help to understand : The thing I do for now is resample the bottom prim, and then use primuv() to sample the pos based on the @curveu (or u in the screenshot) attribute on the upper prim, and for the line I have a Add node -> by group -> by attribute, and it works like a charm; until the 2 primitives have different parametric coordinates. Sometimes it have offset, or even it's inverted, and the points aren't interpolated as I want. So, I wonder if there is a way to copy the uv coordinates from one primitive to another one, or a better solution to this ! Cheers,
  23. save particle velocities every frame

    Hi All, TL;DR - How do you save particle velocities each frame to feedback into a sim? I'm working on a particle effect for rain on a window. Currently adapting a nice example from Toadstorm. I've made some changes to his setup. He has new particles growing over time and becoming droplets past a certain pscale, so i've derived mass from pscale to connect droplet size and speed, as the wind force i'm using to move them is not set to ignore mass. video I added a sop solver after the DOP to delete still particles touched by moving ones. And a popinteract and a popfluid to try and get the moving drops to coalesce and follow each other as they move down, but this has only slightly worked. Ideally i'd like to write the velocities of the moving drops into a volume which could then come back into the sim the advect the particles, or some other technique that follow make it so that new drops hitting and existing trail would follow its path precisely, and add a little to their speed and size. I presume I would use a sop solver inside my DOP network for this, but no clue beyond that. Any advice much appreciated, H windowdrops-uv3-w.mp4
  24. VEX for artists

    I have a Houdini GitHub repo where (in addition to the code section, which is the Houdini pipeline for my personal projects) I store all my R&D notes related to the pipeline developing and programming organized as one wiki. The valuable part of this wiki is VEX for Artists tutorial, where I record everything I was able to understand about VEX in form of tutorials, so it might be useful not only for me but for anybody else, who is going the same route of learning programming from scratch. It was built by a guy with an artistic background and no technical education and skills, so it might be suitable for the same type of peoples. Easy and clean, a lot of simplification, a lot of explanation of basics. This VEX tutorial was just updated with a new section: Solving problems with VEX. Here, using the basic blocks studied earlier we will create something meaningful for the production. The first example we look into is the creation of a hanging wire between 2 points. For those who tried or even afraid to begin to learn VEX but fail and stop because it was too hard. Enjoy!
  25. Hi All, sorry for the heading, Its a hard one to describe lol. I have a booleanfracture piece and want to process only the middle points , then with that create geo that knows the distance to top and bottom of its local position (as the slice fracture is not a flat plane, hopefully a picture helps). Im not sure the best approach, I would start with nearpoints in some way ,finding the top points and test down for a middle storing the lowest for distance checks?? lol, well its a tricky one
×