Hash Fellow robcat2075 Posted January 24 Hash Fellow Posted January 24 Today we were looking at making controllable wave action, hoping to get controllable wave action in two directions. This is just one... As soon as we hung up today I realized a better, faster way to get our desired result... muscle pose sliders. Those will be additive without needing to weight each CP separately. We may look at that next week. @detbear @Roger @Ganthofer Quote
Hash Fellow robcat2075 Posted February 1 Author Hash Fellow Posted February 1 Kevin brought in a great demonstration of the Gerstner Wave 00:00 Opening chit chat 02:13 Kevin's Gerstner Wave 29:08 Discussion of additive waves with muscle motion instead of bones 36:59 Implementing Gerstner motion with muscle mode pose sliders 53:22 Tiling possibilities 58:05 Cartoon: The Catanooga Cats sing "Birthday Suit" January 3, 2026 Quote
Hash Fellow robcat2075 Posted February 2 Author Hash Fellow Posted February 2 Here is a simple Gerstner wave implemented in just one direction with muscle poses, then one more pose slowly displaces the CPs horizontally so that the wave is not one straight line. SimpleWaves.mp4 Waves015e simple.prj Quote
Hash Fellow robcat2075 Posted February 2 Author Hash Fellow Posted February 2 @detbear replies: Awesome Robert. That works great! Looks like that could even be advanced with some effort. I'm more familiar with using control bones, and elements I can wrap my head around. Your method is probably more friendly/ better and more usable in the end. I wish we could develop a water surface that could be manipulated and even have some pre-sets. One trick to avoid having an "Infinite material/ Horizon" is to use a circular plane instead of a square. For most shots the horizon is lost..... especially if you incorporate some depth blur. Thank you for taking time with this at the Live Q&A. Kevin Quote
Hash Fellow robcat2075 Posted February 2 Author Hash Fellow Posted February 2 I've been thinking that if every point were controlled in all three axes (instead of just the two in my example) it would be possible to calculate their motion for a wave in any direction, any magnitude and any speed, and even calculate the sum of multiple waves. Perhaps a wizard could be made to generate an action that contains all the muscle motion based on parameters the user would set. Quote
Hash Fellow robcat2075 Posted February 2 Author Hash Fellow Posted February 2 @detbear replies: That would be amazing. I'm not sure I understand it fully. But that's OK. I've been setting up a trial "Muscle Mode" version like yours. I have two early roadblocks that you may be able to answer: 1. The slider doesn't want to make a smooth circular path using the X & Y sliders. It wants to interpolate straight across between Keys rather than in an arch at times. If I'm doing a circular/ Gerstner Arch instead of up and down, then that seems to be an issue. 2. How do you stack the motions of the second wave on top of the motion of the first using sliders? Especially if the motion in the first wave is in an arch and not just up and down but also side to side? And then to get the diagnals, you would need to somehow stack a third layer based on the second.....and on and on. I'm not sure how that works in your model. My setup with bones bases each level on the pivot length of the parent bone under it. Those can be stacked over and over to meet the levels of wave motions. BUT I don't know how to approach that with sliders. Quote
Hash Fellow robcat2075 Posted February 10 Author Hash Fellow Posted February 10 The recording of our second look at Gerstner waves at LAT Gerstner wave driven by expressions and then much muddling with the GetWorldPos() expression 00:00 Opening 00:30 Gerstner wave controlled in real time 08:35 Kevin's multiple bone wave 12:21 How does GetWorldPos() work? Does it work? 56:57 Concluding cartoon: "Cow Cow Boogie" Here is the project I showed at the beginning of the session. WaveExpression011c ExpressionWaveDemo.prj Make sure the A button is off and press Play. Move the Null horizontally to change the length of the waves. Move the Null vertically to change the height of the waves. @Ganthofer @detbear @Shelton @Roger 1 Quote
Tom Posted February 11 Posted February 11 Wow..that is one cool tutorial Rob! Keep it up with the innovative uses for Animation Master! Quote
Hash Fellow robcat2075 Posted February 15 Author Hash Fellow Posted February 15 At the Feb 14 2026 LAT I mentioned that Steffen confirmed that there was no way to extract single X, Y or Z values from GetWorldPos() which return a three value vector. However, in the new 19.5g beta I got today is this note... Quote Revision 430 - added new Expressions GetWorldPosX( bone.transform ) Returns the world X position of the bone, who's transform is supplied, as a float value. GetWorldPosY( bone.transform ) Returns the world Y position of the bone, who's transform is supplied, as a float value. GetWorldPosZ( bone.transform ) Returns the world Z position of the bone, who's transform is supplied, as a float value. VectorGetX( vector ) Returns the x value from a vector as floating point value. VectorGetY( vector ) Returns the y value from a vector as floating point value. VectorGetZ( vector ) Returns the z value from a vector as floating point value. example VectorGetX(GetWorldPos(..|..|..|..|Model1.Transform.Translate)) Quote
Hash Fellow robcat2075 Posted February 20 Author Hash Fellow Posted February 20 Here is some use of GetWorldPosX() and GetWorldPosZ() Thanks, @yoda64 This isn't a full Gerstner wave yet, each point only has vertical motion but the horizontal component can be added I think. 1 1 Quote
Ganthofer Posted February 20 Posted February 20 That is Awesome!! more discussion tomorrow at LAT if nothing else comes up ! Quote
Hash Fellow robcat2075 Posted February 21 Author Hash Fellow Posted February 21 We wondered if it would be possible to tile these wavemaker models. I wasn't sure but it turned out to be easier than I expected... @detbear @Ganthofer @Roger Quote
Hash Fellow robcat2075 Posted February 22 Author Hash Fellow Posted February 22 And here we have 11 instances... 1 2 Quote
*A:M User* Roger Posted February 22 *A:M User* Posted February 22 Neat, I will need to test this out on my end at some point. Quote
Hash Fellow robcat2075 Posted February 22 Author Hash Fellow Posted February 22 A 12 x 25 array of bones spaced 1cm apart, automatically generated by a C++ program. These are the essential atoms of the wave machine. 3 hours ago, Roger said: Neat, I will need to test this out on my end at some point. I would have shared the PRJ already but you all will have to get v19.5g before it will work. 1 1 Quote
Hash Fellow robcat2075 Posted March 4 Author Hash Fellow Posted March 4 How frugal is A:M? My wave-generating program writes parameters like bone start and end points into a MDL file. But if any of those were defaults that didn't need to be mentioned, A:M strips them out on resave. Probably important when data was being saved on floppies. 1 Quote
Hash Fellow robcat2075 Posted March 12 Author Hash Fellow Posted March 12 A little bit of background on breaking the Gerstner wave motion into simple translations with expressions. This will make adding different waves together easier. 1 1 Quote
Hash Fellow robcat2075 Posted March 16 Author Hash Fellow Posted March 16 Building multiple waves in real time 1 Quote
Hash Fellow robcat2075 Posted March 19 Author Hash Fellow Posted March 19 Varied lighting treatments. These all have a skydome overhead plus an animated bump and reflection gradient material on the surface 1 Quote
Hash Fellow robcat2075 Posted April 3 Author Hash Fellow Posted April 3 Another test. 25x25 mesh testT004.mov 1 Quote
Hash Fellow robcat2075 Posted yesterday at 02:52 AM Author Hash Fellow Posted yesterday at 02:52 AM Damping... Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.