Archived post by TOADSTORM

Hey all, after seeing lots and lots of similar questions on a few Houdini discords about how to vary copies in the Copy SOP, I wrote a terribly long explanation of how to manipulate orientation and instancing using template attributes, matrices, for-each loops, compile blocks, and some other tricks with packed disk primitives, with a .hip file at the end. Might help some newer or intermediate users. Post is here: www.toadstorm.com/blog/?p=493

Archived post by Lcrs

@Lorne I guess you saw matt/matte/dave’s one above but I dug out the hermite animation interpolator I did… it uses v from the points instead of the two extra timeshifts and because it has explicit tangents you can scale them with the damp parm to make it less curvy. if you use central difference in a trail to calc v and damp=1 it’s actually identical to the catmull-rom one… or you can use foward/backward difference to have it over/undershoot on the corners. cubic splines folks!

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/catmull_rom_hermite_interp.hipnc
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/catmull_rom_hermite_interp_screenshot.png

Archived post by jake rice

i finally had some free time after all this moving craziness and since weve been talking so much about discrete operators, here’s my stab at the laplace-beltrami operator :smiley:

based off this paper: http://www.cs.princeton.edu/courses/archive/fall10/cos526/papers/sorkine05.pdf

hopefully my comments make sense 😮

I really need friends. like wtf am i doing with my weekends :C also theres a little bonus raytracing demo in there cuz i was explaining the basics to my roommate.

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/JR_Laplacian_v001.hip

Petz talks about application of maths concepts

There was some discussion about the best way to skim over maths papers, get familiar with the terminology, and apply that to cg. Petz gave a very thorough and practical breakdown of how to approach this:

but as you already know, personally i think it’s important to get an intuition about all these things before you start implementing it. the equation is not important and neither is the implementation. what is important is a general understanding of what such an operator does and what it means conceptually and geometrically. if i ask you what the laplace is and what it does, for example, and you tell me it’s the divergence of the gradient, then yes that’s true. that’s the definition but no explanation. and if you can’t explain it in your own words you don’t understand it no matter if you finally found an implementation or not. and if you want to learn about all this, i really think it’s important to understand it on a conceptual level first. there’s khan academy, there’s 3blue1brown and many more resources which can teach you this. but you have to start at the beginning and not at the end. that’s why i told you it might be a good idea trying to explain things to someone who does know nothing about math or even 3d because that is a perfect way to get a better understanding for yourself. skimming through dozens of papers and referencing arbitrary math stuff won’t help you. just my 2 cents …
anyway, back to your question:
basic understanding is all! let’s take again the laplace on a surface. conceptually it tells you the difference between a point on this surface and its surrounding. geometrically it can be visualized as sampling an infinitesimal geodesic circle around p. if you average these sample values and calculate the difference to the value at p, you have the laplace. let’s now say these values represent temperature as in the heat equation. the laplace tells you if the temperature of the surrounding is above or below the temperature at p. if it’s above, p is “heating up” and if it’s below, p is “cooling down”. nothing fancy and i’m pretty sure everybody has done something like this once in a sopSolver. now, the problem is that this is how the laplace works in a perfect world on a smooth suface.
in houdini, however, we are working on meshes. more precisely, mainly on quadrilateral or triangular meshes. usually we want to apply all the differential operators and whatnot on triangles since they are easier to work with for a number of reasons. quads are the worst! what you mean as “quads” are regular 2d or 3d grids which are very different to quadrilateral meshes.
well, how do we compute the laplace on a mesh. conceptually it is exactly the same but since the mesh is just a approximation to the surface we can also just compute an approximation to the laplace. again, we could just sample a small circle around p but for triangles this would not make much sense. instead we use the points in the surrounding of p we already have, in other words, we use the neighbouring points.

but here’s the problem: these points are not on a geodesic circle around p. their difference to p and their distribution around p is most likely not regular and therefore we have to compensate for these irregularities by using different weights. “conceptually”, however, you could also try to subdivide the mesh several times and then again sample the subdivided mesh on a small circle around p. that’s not an accurate solution but it helps to understand the concept.(edited)
in regards to matrices i disagree! for studying differential operators you don’t need matrices. of course, they are used all the time because it makes things easier to set up and solve but just if you understand the concept behind it. take keenan cranes “geodesic in heat” paper for example. you already have everything you need but you need to understand how it’s related conceptually.