
Content count
546 
Donations
0.00 CAD 
Joined

Last visited

Days Won
25
konstantin magnus last won the day on March 19
konstantin magnus had the most liked content!
Community Reputation
263 ExcellentAbout konstantin magnus

Rank
Houdini Master
Contact Methods

Website URL
http://www.konstantinmagnus.de
Personal Information

Name
Konstantin

Location
Stuttgart, Germany

konstantin magnus started following VEX Function Source Code

Why is the circle born with inverted normals?
konstantin magnus replied to anicg's topic in General Houdini Questions
I also find the decision unfavorable. But once you reverse the winding order the polygon will face positive axis directions. 
In my opinion this particular tutorial series is way too complicated and longwinded for beginners. In case you are just getting started with procedural modeling I would rather recommend Kim Goossens YoutubeChannel and the Gametutor website.

Shadow and Sun Light Analysis
konstantin magnus replied to Hanys's topic in General Houdini Questions
Would anyone know a simple formula to very roughly approximate the sun path (or rather sun vector)? 3 replies

 urbanism
 architecture
 (and 4 more)

jonidunno started following konstantin magnus

How to generate interior levels with modular pieces
konstantin magnus replied to el_fideo_rubio's topic in Games
Do you know about the polyexpand node? 
Hi Justin, in order to fill a voxel field with image pixels put this code in a volumewrangle after a volume node: vector bbox = relbbox(0, v@P); vector map = colormap(chs('image'), bbox.x, bbox.y); f@density = luminance(map);

Resample Curve by N attribute
konstantin magnus replied to philpappas's topic in General Houdini Questions
Hi philpappas, to extract main features of your curve you could first measure its curvature with the new measure SOP or by calculating the dot product of your tangents (see attachment). Afterwards a derivation of the curvature might be useful to only keep "break points" that are important to the visual appearance of your curve. I just would not know how to calculate this though. curve_curvature.hiplc 
Hi Niels, I tried the torus route as suggested on twitter: float r_torus = chf('radius_torus'); float r_tube = chf('radius_tube'); float freq = chf('frequency'); v@pos_rest = v@P; vector bbox = relbbox(0, v@P) * M_TWO_PI; v@P.x = (r_torus + r_tube * cos(bbox.x)) * cos(bbox.z); v@P.y = (r_torus + r_tube * cos(bbox.x)) * sin(bbox.z); v@P.z = r_tube * sin(bbox.x); v@Cd = noise(v@P * vector(freq)); v@P = v@pos_rest; seamless_noise.hip

(Animated) dashed line?
konstantin magnus replied to that Abstract guy's topic in General Houdini Questions
Yes, you could take the convertline SOP, promote the wave attribute to primitives and delete by this attribute. @DévinOdforce: I attached an example. dashed_curves_prims.hiplc 
(Animated) dashed line?
konstantin magnus replied to that Abstract guy's topic in General Houdini Questions
Let a sine wave run across your curves, set the dash length with frequency, animate by adding time and define the gap size by comparing the value with a custom threshold. float u = vertexprimindex(0, @vtxnum) / float(primvertexcount(0, @primnum)); float u_length = u * primintrinsic(0, 'measuredperimeter', @primnum); float u_anim = (u_length + @Time * chf('speed')); int waves = sin(u_anim * M_PI * chf('frequency')) < chf('gaps'); v@Cd = hsvtorgb( set(u, 1.0, 1.0) ) * waves; If you want your dashed line to be static just replace u_anim inside the sin() function by u_length. dashed_curves.hiplc 
A good way for making grid divisions depend on pixel resolution
konstantin magnus replied to Jaanus's topic in General Houdini Questions
On a gridnode just rightclick in order to switch the expression language to Python and use this: 2 replies

 2

 resolution
 cops to sops

(and 2 more)
Tagged with:

Orient noise pattern along vectors
konstantin magnus replied to konstantin magnus's topic in Scripting
Great idea @f1480187, creating the rotation matrices from the cage lines is definitely cleaner! 
Orient noise pattern along vectors
konstantin magnus replied to konstantin magnus's topic in Scripting
Thanks for your help @tmdag. I had to invert the rotation matrix. So its: vector freq = chv('frequency'); vector dir = normalize( minpos(1, v@P)  v@P ); vector rect = normalize( cross(v@N, dir) ); vector nml = normalize( cross(dir, rect) ); matrix3 rot = set(dir, nml, rect); float deform = noise(v@P * invert(rot) * freq); v@P += v@N * deform * 0.05; 
Orient noise pattern along vectors
konstantin magnus replied to konstantin magnus's topic in Scripting
I have made some progress in making the wrinkles run towards the outer edges. Unfortunately i still get lots of warping issues that I can't quite explain. Ideally I want all folds to run in a parallel manner towards their nearest outer edge. This is the code I am currently using: vector pos_b = minpos(1, v@P); vector dir = normalize(pos_b  v@P); vector rect = cross(v@N, dir); vector nml = cross(dir, rect); matrix3 rot = set(dir, nml, rect); vector freq = {8, 1, 40}; vector pos = rot * v@P * freq; float deform = noise(pos); v@P += v@N * deform * 0.05; folds_wrinkles_2.hiplc 
Multiply vectors to a plane (Trigonometry questions)
konstantin magnus replied to konstantin magnus's topic in Scripting
One question remains: How would one scale radial vectors so a circle turns into an ngon? 
Multiply vectors to a plane (Trigonometry questions)
konstantin magnus replied to konstantin magnus's topic in Scripting
Well, there wouldnt been a single line without your brain ; )