Jump to content
Hash, Inc. Forums
Visping

Surface constraints problem

Recommended Posts

I am having problems getting the Surface constraint working.

 

I think I have done it by the book, but the bone that is supposed to move in line with the aiming bone does not move at all. I have set the aiming bone to aim at a target but when moving the target, the aiming bone follows allright but the bone is not following. (If I test by changing the enforcement on the Surface constraint it moves. But when moving the target it does not).

 

If I make the bone a Child of the aiming bone it moves but it "hops around" sometimes and does not follow the surface smoothly all the time. (But the bone should not have to be a Child to follow the aiming bone, should it?)

 

I have tested all the propertys I could find with no result. I had help on this forum before but those advices does not help me now.

 

I have spent a week trying to figure it out. This should be straight forward but it is driving me crazy :yay: .

 

Could anybody explain what I am doing wrong?

Share this post


Link to post
Share on other sites

Do you have a Project file you could share that demonstrates the problem?

 

A very wild guess on the second part of the problem: Perhaps you need more geometry/splines in the mesh to allow the constraint to follow the surface?

Share this post


Link to post
Share on other sites

I think you have the concept backwards. The aiming bone should not be constrained to the thing you want to constrain to the surface.

 

The aiming bone should be a bone in the surface you want to constrain to.

 

The bone inthe model you want to constrain to the surface is not a child of the aiming bone.

 

 

 

RMB on the bone in the model you want to constrain to a surface

 

Choose New Constraint>Surface

 

Turn off the Compensate Mode Button if it is on

 

Pick the bone the surface is attached to.

 

In the PWS, A surface constraint will be created in the Chor under the model

 

Select the constraint, then go to the properties window

 

Set the Surface Aim Target property to the bone you want to be the aiming bone

 

In my version of A:M, offsets are created even though I don't want them.

 

Set the Translate offsets and Rotate offsets to zero to make the constrained bone follow the surface exactly

 

Now the constrained bone will go to where ever the aiming bone is pointing on the surface.

 

Don't try to animate the constrained bone.

 

 

Let me know if that works for you.

Share this post


Link to post
Share on other sites

Outstanding demonstration of Surface Constraints Robert!

Everyone needs to watch and absorb that information.

 

Thanks!

Share this post


Link to post
Share on other sites

Thanks Robert, I am very grateful for all your efforts to explain :) . A very good tutorial!

 

But I dont think I have got it backwards. The difference, as I understand it, between your demo and my constraintsproblem is that I am trying to do this in the model and you are making a constraint between two models in a choreography...

I think it could be applied in both situations or is it not allowed to use Surface constraints inside a model?

 

I have attached the part of my model with the constraints problems.

ConstraintsProblem.mdl

 

I think all properties are set by the book, but it just doesnt happen...

 

The bone I want to constrain and follow the Surface: Right PupilBone

Surface Target: Right EyeSurface

Surface Aim Target: Right PupilAimingBone

 

To clearly see the relevant meshes you can select the Groups Right EyeWhite+Right EyePupil and hide the rest.

 

 

Maybe I have got it all wrong after all...??

 

 

For background information:

I am trying to make the pupil following the irregular Eye as a boolean cutter. Outside the Eye White and the pupil I have transparant reflective Surface.

 

If I finaly will get the pupil surface constraint to work, the next step is making an eyelid follow the transparent eye surface using the same surface constraint tecnique. (With a separate bone and aiming bone for each spline crossing)

Share this post


Link to post
Share on other sites

Hi Visping,

I don't know if this will be of help to you directly but on the Extras DVD there is a tutorial on making irregular shaped eyes, i.e. oval shaped.

If you have the Extras DVD the path to it is; Tutorials > Bootcamp > EyeTut.html

Share this post


Link to post
Share on other sites

Thank you for the tip!

Yes I have the Extra DVD and have seen that tutorial but it does not work all the way for me as my Eye has not exactly an oval form.

My Eye has a wide base and a narrow top and I dont think scaling the bone can accomplish that.

 

EyeForm.png

Share this post


Link to post
Share on other sites

Another very nice tut, Robert. I haven't looked at visping's model, but my comment is that I don't think you can set up a constraint like this in a model, it would have to be done in an action or chor. I wonder if that's the problem here.

Share this post


Link to post
Share on other sites
I don't think you can set up a constraint like this in a model, it would have to be done in an action or chor. I wonder if that's the problem here.

 

If this is so I seem to have been trying to obtain something that is doomed from beginning.

 

But the Technical reference for Animation Master (page 181) gives this example for use "...or slide pupils along the surface of an irregularly shaped eyeball."

Is it self-evident that this can only be done in an action or choreography?

 

The Technical Reference says nothing about the fact that this constraint only can be used in an action or in a choreography....

It just says that in choreography an entire model may be chosen as the target surface and that implys that this constraint is used like all the other constraints plus can be used in chor to use a whole model.

 

Are you sure it can not be done inside a model Gerry, or is it a theory at this point?

Should I abandon my aproach all together? Is it a really bad idea to use surface constraints?

 

Please give me some advice!

I am a beginner so all the self-evident stuff is not clear to me yet

Share this post


Link to post
Share on other sites

Hello again Vesping,

I would agree with Gerry, delete what constraints you've set up for the eye and start again, this time doing it as an On/Off pose.

I tried it earlier today and that worked.

But there is a "but…"

When I tried to constrain the pupil AimingBone with an AimAt constraint to the EyeTarget null, the Surface Constraint would stop working. The AimingBone would track the EyeTarget correctly but the pupil would then remain resolutely still!

Not sure why this happens but maybe someone else here can figure that one out.

I also saw the you have the pupil bone set as 'Boolean', Is that intentional?

 

As for the TechRef, it dose contain possibly nearly all there is to know about how A:M works but as a "How To Do 'X'" it leaves a lot to be desired in places!

Share this post


Link to post
Share on other sites
...delete what constraints you've set up for the eye and start again, this time doing it as an On/Off pose....

...the pupil would then remain resolutely still!

I have deleted the constraints over and over again and put them in an On/Off pose. You experienced exactly the same situation as I did. The pupil do not move as intended.

At least now I know that I am not the only one having trouble making this work. Thanks for trying markw :)

 

I also saw the you have the pupil bone set as 'Boolean', Is that intentional?

Yes it is intentional to have the pupil as a boolean cutter. The pupil is a hole in the iris letting the light into the eye. I wanted to try the aproach with a hole in the eyewhite instead of having a pupil sliding on top of the surface

Share this post


Link to post
Share on other sites

You might study the KeeKat (and I believe Rabbit) models that come with A:M.

If I'm recalling correctly both of those characters have pupils that slide over the surface of the eyeballs.

Somewhat related to your discussion here, note that at least with Keekat the surface sliding effect isn't active in the Model.

At least in Keekat's case, the constraint turns on once the character is opened in an Action or Chor.

Share this post


Link to post
Share on other sites

I have studied both Keekat and Rabbit in my hunt for the solution for my problems with the Surface constraint.

Keekat and Rabbit do not use surface constraints. In both cases they use the same aproach as in the EyeTutorial on the Extras DVD; the Eye is a sphere and the pupil is moved sperically by a bone that is a Child of the eyebone. When translating the Eyebone the pupilbone and the meshes for the Eye and the pupil are deformed, as a whole, to an oval.

 

As the translation takes Place in an On/Off pose that is set to ON, the eyes automatically Changes shape when opened in an Action or Chor.

 

This works great for most comic characters but in my case I wanted to follow my characters layout which has irregular Eyes that are not just oval.

 

At this Point I feel defeated and I think I must abandon the idea of surface constraints all together just to be able to move forward.

I will try to compromise and use an Oval Eye as described in the Eye tutorial.

 

Thanks a lot guys for trying to help out :)

Share this post


Link to post
Share on other sites

Stefan, I think this is a bug we can report.

 

i notice that the constraint properly positions the pupil on the 1st, 3rd, 5th, 7th etc, frame but not on the ones inbetween. That is odd.

 

I'll look at this some more.

 

In the mean time... could you add the pupil as a separate model in the chor and do the surface constraint there? Does that not work?

 

This works great for most comic characters but in my case I wanted to follow my characters layout which has irregular Eyes that are not just oval.

 

I believe a distortion box can do this although it's a bit fiddly to work with.

Share this post


Link to post
Share on other sites
Stefan, I think this is a bug we can report.

I was also thinking that but I am too inexperienced to be sure. The most probably reason for my problems would be my lack of knowledge..

I am very glad you are looking into this!

 

In the mean time... could you add the pupil as a separate model in the chor and do the surface constraint there? Does that not work?

Yes and no.

I got the pupil to move in Choreography. But sometimes the pupil left the Surface for quite a distance. I did not experience any connection to even or odd frame as you did.

Due to my lack of experience working in the Chor it was a little confusing though. Sometimes it followed the aiming bone and sometimes it did not.

After a while I identified that when playing animated/recorded frames it worked. But when manually moving the targetbone (that the aimingbone is aimed at) it gave no effect. But if I played the animated movement of the targetbone then the pupil moved...

I expected the surface constraint to work directly just like the Aim at constraint does.

I also noticed a difference between your video tutorial and my test: You allways seem to automatically get Compensate mode button set to ON. While this button has never ever automatically been set to ON. I dont know if this is relevant to this case...

 

I believe a distortion box can do this although it's a bit fiddly to work

with.

Yes I read a topic about that on the forum and it seemed a bit tricky.

Share this post


Link to post
Share on other sites

Well I think this can still work for you Visping.

From memory this is what I did yesterday in a little more detail. (I shall omit the dead ends and falls starts!)

 

First, after looking at what you had already, I tried to delete your 'Pose1 Relationships' under 'User Properties Relationships' in the PWS, however every time I tried that A:M would crash on me.

(This may or may not have been completely necessary but I wanted to make sure that no other settings could be interfering with a new setup).

In the end I had to resort to removing it in a text editor before reloading it into A:M.

 

Next I setup the surface constraint again as per the TechRef (though Robs video is a much clearer demonstration of what to do) in a new On/Off pose.

But I still got that odd jumping of the pupil.

Then I turned OFF 'Boolean Cutter' in the pupil bone. And it was after doing this that I got NO jumping of the pupil and everything worked as it should.

 

Last I tried to set up the AimAT constraint so the Nulll could direct the eyes and it was only here, as I noted before, that something broke. When I tried to introduce the AimAT constraint to allow the EyeTarget null to control the direction of where the eyes looked, the pupil stopped moving completely.

But it did work correctly before tying to add the AimAt.

 

So a simple workaround would be not to use the EyeTarget null to control where the eyes are looking.

Make the Aiming Bones in the eyes a bit bigger so they're easier to see and animate those directly to get the pupils moving.

Yes you will be animating each eye separately but it is effectively only one extra bone you will have to work with.

On the plus side having separately controlled eyes opens the possibility of making their "performance" more expressive, say going cross-eyed, looking in different directions at once or even spinning round independently after being hit on the head!

Share this post


Link to post
Share on other sites

I see, it looks like I have been chasing the wrong problem.

Would you say that these things qualify as bugs in Animation Master or is my use of those constraints simply a way they are not intended for?

 

At this point I have started working on the "oval eye" tecnique and after finishing that I will evaluate what works best for me.

At least now I have the workaround, you suggested Mark, as an option, Thank you!

Share this post


Link to post
Share on other sites

I think the only thing you possibly did "wrong" as it were was to not start by opening a new On/Off pose to set things up in first.

But the rest I think has shown up two possible bugs;

1: A bone set to be a Boolean Cutter won't track a surface when it is then constrained to a surface by a Surface Constraint.

2: If the Aiming bone in a Surface Constraint has an additional Aim At constraint applied to it, so that it follows/is controlled by a target null. The bone that was constrained to the surface in this Surface Constraint setup stops moving.

 

I can submit this as a bug report, unless any one else here thinks I have miss evaluated some aspect of this.

Share this post


Link to post
Share on other sites

Here's a sample PRJ that seems do do everything that Stefan wants, (except one thing)...

 

SimpleEyeTestSurfCon04.prj

 

-The pupil properly floats on an irregular eyeball

-The aimer bone follows a target null outside the eye

-there is no jumping or flickering

 

 

-the one thing that doesn't quite work is that the pupil bone bone doesn't follow the aimer bone while you are manually moving the target null. However if you flick the frame counter back and forth one frame it will go to the proper position and if you drag the time counter or press play the animation will work properly.

 

The failure to immediately follow an aimer bone that is constrained to a target may be a bug or it may be a limitation of how constraints are evaluated in real-time when you are moving stuff around without actually advancing the time counter.

 

There is one other case of this where things don't fully calculate without advancing the timer.

 

However you can pose and animate properly with this mechanism, just remember to check your results by tapping +- to force A:M to work through all the constraints.

Share this post


Link to post
Share on other sites

What do you think about the other possible bug Robert, that of the "flickering" motion of the pupil bone when it is set as a Boolean Cutter?

In Stefen's original model he has the pupil bone set to be a Boolean Cutter. Or could this just be an incorrect use of a Boolean and they're not supposed to be used like this?

Here are two renders from your project file. One with and one without Boolean turned on in the pupil bone.

BooleanCutter_OFF.mp4

BooleanCutter_ON.mp4

Share this post


Link to post
Share on other sites

OK, i didn't realize that Boolean was important. Yes, i think that's a bug to report.

 

Show the case with Boolean OFF that works and the same case with Boolean ON not working and I think that would make it clear.

Share this post


Link to post
Share on other sites
... two possible bugs;

1: A bone set to be a Boolean Cutter won't track a surface when it is then constrained to a surface by a Surface Constraint.

2: If the Aiming bone in a Surface Constraint has an additional Aim At constraint applied to it, so that it follows/is controlled by a target null. The bone that was constrained to the surface in this Surface Constraint setup stops moving.

Thank you Mark and Robert,

I suggest just a small adjustment in the second description, as the problem seems to be in real-time according to both my findings and Roberts latest post:

2: If the Aiming bone in a Surface Constraint has an additional Aim At constraint applied to it, so that it follows/is controlled by a target null. The bone that was constrained to the surface in this Surface Constraint setup stops moving in real-time.

 

The flickering in the video was exatly what I experienced.

 

Thank you guys! I wish I had posted my problems earlier. I wasted a lot of hours (days) trying to understand what I was doing wrong.

 

This forum is really great. :clap:

Share this post


Link to post
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...