Procedural BMX Bike Spec
Goal is to make a completely physically accurate bike system with interlocking parameters for every customizable aspect of a bike. Changing one spec for any given part does not affect the other specs yet changes how the bike as a whole stands on the ground.
The first version uses only basic nodes without any VEX. This was my first personal pojrct after getting familiar with the basics of Houdini. Its a project that ive wanted to do that became obvious to do in Houdini. (Shout out to Hip flask for the thorough introduction. I would basically write down everything word for word until it made sense). Using basic SOPS like add, line, resample, copytopoints, skin.
Had to refresh on some trigonometry. Very satisfying experience when the math works out and you’re able to visually see it. Getting the direct common tangent of two circles was both the hardest and simplest calculation to configure. I found the formula on Wikipedia and on a whim applied the formula in the appropriate parameters using attributes as variables. I highly doubted a lengthy single lined formula ripped from Wikipedia would work off the first go yet it was succesful.
The second iteration I took a detour to ThreeJS. This was around when ChatGPT was booming. Since I already had figured out how everything should be calculated, I started to make a ThreeJS version because I ultimately want this to be interactive on the web for anyone to use. I’m not sure why I thought that it was a dead end making it in Houdini. But forcing Chat any further than the skeleton was also a dead end. With further research I came back around to realize I can leverage the Houdini/Unity relationship, and figured I could probably build it akin to an online game. And since I had this refined JS code I could convert it to VEX to minimize processing.
L-Click to Rotate Camera
R-Click to Pan Camera
Scroll to Zoom
Having recreated the functionality in JavaScript, I figured I could leverage Chat the same way to covert the JavaScript to VEX. Piece by piece I recreated the original bike in Houdini, I would translate each function in JavaScript to a VEX using Chat. I felt morally this was ok since I first figured out the math by hand. Nothing was one stop click, it still took a lot of trial and error and addressing bugs but I ultimately got it all pieced together in a much cleaner and streamlined state, now primarily using VEX.
The majority of the heavy lifting is done, now to finish the rest of the functionality, get some base texturing, and figure out Unity.