Admin Rodney Posted May 21, 2014 Admin Share Posted May 21, 2014 You guys inspired me to consider the possibilities with your Multi-Model Pose Sets and so I did a test to see if an old idea might work. It took me a few tries but I finally came up with something that demonstrates the basic idea. The idea is that through the Active setting we can add an expression that will turn on/off an object based on proximity to another object (such as a Camera). I believe I've got this somewhat in reverse (objects disappear as the camera comes close to them) but it might serve as a proof of concept. In the project file I also created another file called 'The Zone' but I haven't done anything useful with that yet. The idea might be take everything into the same model that is routinely required (camera, lights, etc. etc.). Things outside the zone would then be otherwise effected. Once the general expression is designed it can then be pasted into all objects Active property (probably an ideal use for an Excel spreadsheet or global text replace). There are many alternative uses for such things. One of my initial plans was to use it to automate crowds to move them away from a zone immediately around the camera. Thus simulating the effect of a person walking through (or fighting through) that crowd. The other longer term purpose behind this was to facilitate split rendering based on proximity. In this way a camera could go around 'filming' things in isolation for later addition into composite imagery. As a language of sorts would be needed in order to keep everything organized I shelved the idea pending more R&D. As split rendering is a complicated subject and I wanted to break it down into vital elements adequately. The actual expression I added to each of the three objects in the Chor in this case is: [EXPRESSION] If(..|..|Camera.Transform.Translate.Z<..> [/EXPRESSION] Of course also note that this expression doesn't account for any other direction than the Z axis. There is likely a better approach to activation/deactivation. Project_Camera_Proximity_Activator.prj Quote Link to comment Share on other sites More sharing options...
Admin Rodney Posted May 21, 2014 Author Admin Share Posted May 21, 2014 Here's another Project file based on the first with the following changes: - The On/Off state of the Expression has been reversed - A Filter for 'Active' has been created to more easily see what objects are using the expression. Not that this is also how behavioral (artificial intelligence) could be similulated in that a variety of expressions could be created and applied to groups of objects independently. One group might activate (or move farther away) while another group might deactivate (or come closer). Project_Camera_Proximity_Activator__2_.prj Quote Link to comment Share on other sites More sharing options...
Hash Fellow robcat2075 Posted May 21, 2014 Hash Fellow Share Posted May 21, 2014 a crowd simulator!.. that is something I've had in the back of my mind but have never embarked on yet. I will be curious to see what you make of that. lessee... I'm sure there's some sort of Pythagorean hypotenuse formula that would let you calculate the distance between any two points. Quote Link to comment Share on other sites More sharing options...
mouseman Posted May 21, 2014 Share Posted May 21, 2014 a crowd simulator!.. that is something I've had in the back of my mind but have never embarked on yet. I will be curious to see what you make of that. lessee... I'm sure there's some sort of Pythagorean hypotenuse formula that would let you calculate the distance between any two points. But is there a way to accumulate small changes based on the distance? Or just have it automatically accumulate based on a velocity that you can set based on the distance away? I'm sure that the existing Flocking feature does this internally, but there's not enough control over the particulars to get the kind of effect Rodney is looking for. Quote Link to comment Share on other sites More sharing options...
Admin Rodney Posted May 21, 2014 Author Admin Share Posted May 21, 2014 Here's an approach from a drag and drop angle. I'm liking this because folks wouldn't need to concern themselves so much with coding of expressions because... these actions could be collected/shared as little scripts/macros. The idea is to create an Action that you can drop onto a Character/Object that would tell it when to Activate. The trick is that the Active setting is actually (and I must assume always?) applied to the Model Bone. As such all we need is an expression that turns that state On/Off (or causes some other action) based on some criteria we set in the expression. In my project I put together a little test that expressed that if the Shaggy with the the Action applied was to rise above 100cm he would be 'taken' (i.e. deactivated). The other two Shaggy's rise beyond 100cm with no effect (of course.. because they don't have the required Action. I arrived at this because the other approaches I was investigating were getting too complicated. Simplicity is key. My thought was initially to create a Null called Activator and have things appear based on where that Null is located. You could then constrain the Null to something like a camera. But... that's only approaching the problem from one angle. We know that each model has a steady state of on/off and (even if we alter/augment that) the results of changes to that state can be anticipated. ShaggyGetsTaken.prj Quote Link to comment Share on other sites More sharing options...
Admin Rodney Posted May 21, 2014 Author Admin Share Posted May 21, 2014 But is there a way to accumulate small changes based on the distance? Even if there isn't a direct way I believe as of the current release (or one or two releases ago) variables can be stored for later use in expressions. I haven't had time to play... heck, this is only my second or third working expression... but I sense that the recent additions by Steffen are a very big deal with regard to expressions. Quote Link to comment Share on other sites More sharing options...
*A:M User* Shelton Posted May 22, 2014 *A:M User* Share Posted May 22, 2014 Rodney Your camera activator could be used in conjunction with out set. As the camera turns it could activate the buildings Something to think about. Steve Quote Link to comment Share on other sites More sharing options...
Admin Rodney Posted May 22, 2014 Author Admin Share Posted May 22, 2014 Your camera activator could be used in conjunction with out set. As the camera turns it could activate the buildings Something to think about. I was thinking along those lines but at this point it's not quite ready for camera turns, at least not in the sense that the expression only accounts for triggering on/off in the Z axis. Quote Link to comment Share on other sites More sharing options...
johnl3d Posted May 22, 2014 Share Posted May 22, 2014 http://www.hash.com/forums/index.php?showt...9&hl=bowtie I used and expression to get reaction in this sample not sure if it would work with what you are trying to do Quote Link to comment Share on other sites More sharing options...
Admin Rodney Posted May 22, 2014 Author Admin Share Posted May 22, 2014 I had forgotten about that one. Very neat John. The issue with using that type of expresssion is that it is Chor/Time dependent and it needs to be space aware. There is probably some way to setup a scene to where (similar to what Chris is doing) parts of a set are turned on/off through time but my goal would be to automate that process similarly to what is happening in A:M itself when it comes to clipping the viewing area to determine what will get rendered. No small task there. Now... if we consider your expression: If(ChorTime()>0.5,If(ChorTime() The only way I know to proceed (in this ChorTime() vein) is to create a controller that when a value gets to a certain level it turns off an object/character/building etc. Think of this as a proximity value or potential for action. When that value gets either inside or outside of a particular range it would then trigger an action. This in and of itself sounds to me a lot like a percentage pose. (or more for boolean true/false results simple triggers could be called via on/off poses). This would almost call for every Object to have a new parameter (although this could also be an Action or a Pose) called Active State or something similar. Then at whenever time the specific criteria of that Active State is met the expression would fire. This is the primary way I would think using something like ChorTime() would work as key events would be dictated at specific times and that would then trigger all 'live' Objects' Active States. This might be something as simple as turning itself on or off or triggering something far more complex. I thank you for this consideration because it may supply an important element in the process. Using ChorTime() as the initiator does make good sense as whatever happen in the Timeline SHOULD represent the primary action in a scene. Therefore the Active State would drive secondary action/reactions of those primary event. Added: I really don't understand expressions. Quote Link to comment Share on other sites More sharing options...
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.