Precise Eye - Point At Null-Target / LookAt-PoseControl with EyeTarget / FieldOfView & Direction OBJ
Precise Eye - Point At Null-Target / LookAt-PoseControl with EyeTarget / FieldOfView & Direction OBJ
...is the long term description of my first ever created freebie. I made this to finaly have better control of both the eyes position for still images and movement while animating and as an addition to the eyes Pose Control property "CTRLEyesUpDown" @ "Pose Controls/Head/Eyes".
To install simply download the RAR-File "G2M_EyesLookAt_System.rar" and extract the files / folders to your Daz-Studio Library folder of your choise.
The new items can be found with the content library tab under "Props\G2M_EyesLookAt_System".
Its the best to simply choose the "0_G2M_EyesLookAt_System_AllProps_SubSet.duf" file to add / attach the props to a scene with a genesis 2 male figure loaded.
Then "change parent" (in place) of "LookAt_Target_Plane" object to figure head.
Finaly select Figure Left Eye > "panameter tab" > "General/Misc" > "Point At" target choose "LookAt_LeftEye_NullObject"
and select Figure Right Eye > "panameter tab" > "General/Misc" > "Point At" target choose "LookAt_RightEye_NullObject"
I have played around with the "Point At" property to target the eyes of the genesis figure to a null-object.
For geting more control of this setup I made these geometry props to maipulate with "LookAt_Target_Plane" and indicate with "LookAtCenter_ArrowTip" - the direction the figure is looking.
- With my limited modeling abilitys I also created a simple geometry prop what looks like a visor of a helmet in some sreenshots. I have called it "FieldOfView_EllipticalSphere_2" this is to somehow visualize the natural field of view of the figure. All three props have surfaces with low opacity values and wont show up in render or cast shodows. At the top of the first picture "G2M_EyesPointAtCenter_System_6_hirarchy.jpg" I show the scene tab - with the prop hirarchy, point at setup and info on how I would parent the props.
Prop / Eye Scene tap - hirarchy and relationships
- both eyes of the figure are set to "Point At" their corresponding "LookAt_LeftEye_NullObject" / "LookAt_RightEye_NullObject" that are both parented to the "LookAt_Target_Plane" (black crosseye texture with transparency-map) and by default both null-targets share the same center-location.
- "LookAtCenter_ArrowTip" is parented to the figures head with the origin between the eyeballs and is set to "Point At" - "LookAt_Target_Plane" and all objects that are parented to "LookAtCenter_ArrowTip" like "FieldOfView_EllipticalSphere_2" will share the same orientation.
- "LookAt_Target_Plane" is the only selectable prop in this constilation - once selected you can easily translate the eye-target plane around with the universal tool and the eyes will follow the movement.
My idea is to maybe parent the "LookAt_Target_Plane" to a camera or anything else the figure should look at - like a set of other null-objects floating around in the scene to dynamicaly choose the current point of interest / eye focus for the genesis figure.
So the next thing I think of is that this could not only help me with still scenes but also with animations. I havent tested jet but it should be possible to use animated constraints to change the "LookAt_Target_Plane" position to diffrent locations while animating the scene.
Or how would you key-frame the "LookAt_Target_Plane" position?
Anyway I give this to anyone of you to maybe make use of it or get a better understanding of the point at property with eyes.
Also any help with setup the ERC-freeze properties for these props would be welcome.
I'm still not happy with the current state of this prop configuration and I hope someone can test this and figure out how to expand the fuctionality. Like making this an advanced aramture rig lets say something similar to things that are possible in "blender" rig-system if you know what I mean.
The first downside of the "Point At" parameter is that it takes the full control over the eyes bone rotations - from now on you can manipulate the eye rotation only by translating the "Point At" target. The shorter the distance of the "look-at" target to the face the more obvious it is that bot eyes always focus to one point and the eyes of the figure will do a funny "crosseye" look.
At the following closeup sceenshoot "G2M_EyesPointAtCenter_System_1.jpg" I am in "Joint Editor" mode and you can see that the eye will slightly miss the target point (see: left eye red bone end point indicator)
- also see second picture "G2M_EyesPointAtCenter_System_5_hirarchy.jpg" and take a look at the parameters tab "Up-Down" - "SideSide" and even "Twist" values are controled by "Point At"
- I cant understand why it rotates up-down and twists the eyes in this situation with the look-at-target right in front of the nose. Is there something wrong with the "Point At" property? Seriously I rotated around in viewport and then I search the web for information on natural eye movement and yes the natural aiming of the eye is slightly offset to avoid the blind spot of the retina in the back side of the eye.
But what to do if I want control the amount of this funny crosseyed effect while "Point At" is still active?
My first attempt was to "ctrl+c" copy the "Side-Side" value of one eye then I switch of "point at" on both eyes and give them the inverted leading sign values so both eyes are also looking funny the opposite way - pointing outwards - and saved the genesis figure mesh as obj -file and finaly load this as a morph-target for the figure so now I can dial in the morph I called "PCTRL_EyesCrossed_ReverseShape" that will work against the "Point At" "Side-Side" rotation of both eyes with positive and negative values. Wow - sounds complicated to you - yes like always I made it too coplicated?
My second solution is more elegant and I implemented it to the final freebie - now both eyes got seperated "Point At" targets called "LookAt_LeftEye_NullObject" / "LookAt_RightEye_NullObject" and you can easily x-tanslate both 'NullObjects' away from the "LookAt_Target_Plane" center spot to control the amount of crosseye effect and set the x-tanslate property limits how you like. See image "G2M_EyesPointAtCenter_System_7_Parameters.jpg" the property called "PoseCTRL EyesLessCrossed" will control the crossed-eyes effect but need to be centered to the figures shape like I have done in the screenshot. "PoseCTRL EyesLessCrossed" at a value of 6.294322 looks OK for me and I memorize this as default item value for Genesis 2 Male default shape.
see my best aiming parallel eyes new default prop values in "G2M_EyesPointAtCenter_System_7_Parameters.jpg"
What else could expand the fuctionality of this prop setup that would make it even more useful?
I want to "ERC-Freeze" some parameter-values together into some control properties that would give this prop setup realy great useability.
I dont know exactly which values to "ERC-Freeze" but I have a wishlist what should happen if the "LookAt_Target_Plane" gets translated in any negative or positive x y z dimension.
1. if the "LookAt_Target_Plane" reaches a z-translation distance value of lets say 20 DS units away from the face the eyes should look straight ahead (both eye-bones with parallel orentations) - to do that I x-translate "LookAt_LeftEye_NullObject" / "LookAt_RightEye_NullObject" in opposite direction away from the center to reach exactly the figures current eye-balls distance (maybe the default genesis rig bone center x-location values will help - but then eventualy you have to readjust the parallel eyes position for every character morph that resizes / translates the eyes geometry and/or the figure rig - I'm just thinking of whats possible. Now with the property "PoseCTRL EyesLessCrossed" loacated at the prop "LookAt_Target_Plane" in the "General/Transforms/Translation" group you can manualy adjust the eyes staright forward look by increasing the value until the eye bones seems to have a parallel orientation.
2. the genesis 2 figure eyes Pose Control property "CTRLEyesUpDown" @ "Pose Controls/Head/Eyes" is interesting because it moves the eye-lids up and down this value should be liked to the "LookAt_Target_Plane" "Y Translate" value.
3. before the eyes rotations of x = "Up-Down" and y = "Side-Side" reaches their limit values the genesis 2 pose controls of "CTRLNeckHeadBend" / "CTRLNeckHeadSide-Side" and maybe also "CTRLNeckHeadTwist" @ "Pose Controls/Neck" could take control of the head orientation to help the eyes keep track of the null-targets - and until also their limits reached - still aiming at the null-targets / "LookAt_Target_Plane". But to control the head orientation like a faked "Point At" behavior to the "LookAt_Target_Plane" should be optional so I need to setup a single "master-control-property" that somehow takes over the influence of the Neck-Head Up-Down / Side-Side / Twist properties. In screenshoot "PCTRL_ERC_NeckHead_PoseControl.jpg" you can see how I used ERC [Multiply] to do a "remote" control of all three property influences over the head rotation.
Comments
I use the "point at null" for posing eyes all the time. It gets rid of that blank stare that so many renders suffer from. I usually position it far enough away to avoid cross eyes, but then it isn't immediately selectable in the scene. However, I can still select it in the Scene tab and move it from the properties tab while looking at the character. It's a nice feature you have implemented here, but I'm not sure I would want a highly visible target obscuring the face.
Hey I know everyone can quickly create a null - select both eyes and set "Point At" in Parameters tab - at least everyone should know now.
This freebie is just to show you what I have dicovered so far by studying the "Point At" - Function. The target and arrow objects are just to see better whats going on so everything but the eyes are set to transparent in the screenshots. While testing I have added the second null-target to split eye movement - this is a handy configuration to me.
I can remember many times I had the "Point At" activated on the eyes an load in a new pose and the eyes get twisted into the head and show a horrible white eye look. With this set you can easily adjust the eye orientation within the preview window - pose the figure and make the props invisble - they wont render anyway.
I hope to get the head / neck and the eyelids to move along with the target more or less - controlled by a intensety slider.
I allready created a new set of pose controls for my genesis 2 figure - you can simply ERC-Freeze a pose or also do bone riging adjustments in the joint editor and ERC-Freeze that to finaly link that bone setup to a pose or a character morph for correction.
I also initialy worked on a Rig_Master.obj geometry prop from "http://blenderaid.com/asset_library" this is a blender rig armature. Originaly only points and edges that dont show up in DazStudio so I made a solid object out of it and imported it 4 times into ds and thats what my viewport is looking then.
I want to see all these objects around the figure to easily maipulate the posing of the genesis rig. When I translate / rotate one of the objects within their limits that are also parented to the bodpart - I want to control my set of pose-control-properties for that bodypart. Btw the pose-control-properties are simply made by pining some bodyparts and manipulate some others pose and then I erc-freezed that pose.
Useing "RigMaster02_HeadPointAt" as head / neck pose control armature
To get near to my goal I set up the rigmaster prop as a "fake" HeadPointAt target and also let the "LookAt_Target_Plane" and the "RigMaster02_HeadPointAt" props point back to the eyes-center / head-center. It simply looks almost like the objects would rotate around the center while you can actualy translate them in the x and y direction. Here is how it looks now:
Until now the both control props works independently. Translate the eye-target to let the figure look in the one direction while translating the head-target in another direction.
Thanks for clarifying! I think I will try it out.
I am still working on this freebie - actualy I did a complete rework and therefore now I will call it:
"Genesis 2 EyesLookAt-HeadPointAt" - PoseControl Prop-System
I have extended the functionality and made it compatible for both genesis 2 male / female. I have replaced the target-plane geometry and texture to a more neutral black and white clipart. Also all props have realy low opacity values now and wont "obscuring the face" anymore.
For the extended fuctionality I had to create some ERC dependencies I never did before. It made me some headache especialy the feature to let the eyelids follow along but I learned allot about ERC dependencies and working with the "Property Hierarchy" by creating this. And thats what this freebie is good for at least for me I think - learning while doing - and figuring out how it can be done.
In my first post I had a three point wishlist at section "What else could expand the fuctionality of this prop setup that would make it even more useful?"
[1.] I rethink about making any ERC dependencies on changing the cossed-eyes effect controlled by some distance. Its completly up to you to dial in some cossed-eyes effect at any time (maybe your figure is focusing something right in front of its nose or your figure likes to make a funny face sometimes). Now you can select the G2[M/F]_EyesLookAt_Target_Plane and in the group "General/Tansforms" you can find a new property called "PoseCTRL Genesis 2 EyesParallel" with a default value of "1" that sets the "PoseCTRL EyesLessCrossed" to a value of "3.147161" that will x-translate both point-at-null-tagets away from the target-plane center by this distance to control the crossed-eyes effect. This works for both genesis 2 male/female because it turns out by default they have the same eye distance. However if you dial in some character morph/shape that changes the eyes position/distance you can adjust the value of "PoseCTRL EyesLessCrossed" untill the eyes looking straight forward again and ERC-freeze that value to a new control-property if you like as I did with "PoseCTRL Genesis 2 EyesParallel".
[2.] To let the eyelids follow the eye movement like in the pose control property "CTRLEyesUpDown" by linking it to "LookAt_Target_Plane" "Y Translate" value was just my first and realy bad idea. Actualy this made me the most trouble of all ERC dependencies. I couldnt get it to work and I did create some ERC dependencies that crashed DS untill I deleted the eye-bones x-rotations out of the "sub-components". Then I renamed this property to "PoseCTRL EyeLids Up-Down" so you dont have to worry this wont overwrite any original genesis 2 figure pose-controls this simply adds a new pose-control that acts like "CTRLEyesUpDown" but without the eye-rotations.
[3.] I thought it would be great if the figure turns its head automaticly if the target gets out of reach for the eyes itself. Its the same issue like with the automatic cossed-eyes effect - its simply not that practical. Now you can use the pose-control-prop "G2[M/F]_HeadPointAt_RigMaster02" for bending and twisting the head and I also added the "G2[M/F]_HeadSideSide_arrow22" in the middle to control the head side-side movement to adjust the head/neck rotations by yourself if needed.
Like I sayed "so I need to setup a single "master-control-property" that somehow takes over the influence of the Neck-Head Up-Down / Side-Side / Twist properties" I did create some control-propertys for doing this and more. They are all start with the property name "PoseCTRL [Influence]..." you can find the new properties in the genesis 2 figure group "Pose Controls/Neck" and "Pose Controls/Eyes". I have also added copies of them in the props "G2[M/F]_EyesLookAt_Target_Plane" and "G2[M/F]_HeadPointAt_RigMaster02" so you dont have to switch the selection to the figure while working with the pose-control-props.
Installation of the "Genesis 2 EyesLookAt-HeadPointAt" - PoseControl Prop-System
I have split this up into two RAR-archive-files this time - one for the genesis 2 figure "morphs" and one for the "props". Simply extrct them to the DazStudio-Library(s). You can find the new props in your content library "Props/Genesis 2 EyesLookAt-HeadPointAt" and the genesis 2 male/female morphs can be found in the figure pose-controlls Neck, Head and Head/Eyes.
The archive: G2M-F_EyesLookAt-HeadPointAt_FigureMorphs_v14.rar should be extracted to the DazStudio's library where also your Genesis 2 figures are stored (normaly the default content library) to get the new properties into your figure.
The archive: G2M-F_EyesLookAt-HeadPointAt_Props_v2.rar can be extracted in a content library of your choice (could be the default content library also)
Basic usage of the "Genesis 2 EyesLookAt-HeadPointAt" - PoseControl Prop-System
See the attached images - they will descripe how it works in detail.
References of things used in this freebie
Now I'm totaly disappointed by DazStudio
By testing my new release-files again to finaly publish them like I did today my enthusiasm on this got a huge drawback. I got tricked by DazStudio (or maybe I tricked myself). The first day of this rework to the original concept I created the new props geomerty and the new properties for the props and also for the genesis 2 figure. The next day I have loaded my setup scene I realized that some properties lost their ERC dependencies but I thought OK maybe I saved out something wrong. So I recreated the ERC dependencies - saved a sub-set with all the props-nulls-cam-objects parented to each other and loaded it again from the content library to make it compatible to genesis 2 female aslo loaded into the setup-scene. I was happy that all the ERC dependencies where there as I saved them into the sub-set. To test if everything gets saved along at least in my setup-scene I clicked "file>new" and then I loaded the setup-scene again and still everything looks fine while I sill believed to be save with that. Today I loaded up my setup-scene to do a final makover and now bam - again all ERC dependencies between the props and the figures got lost - besides my effort and the work I have invested into it.
I should have read this thread before "can't save ERC controller settings" http://www.daz3d.com/forums/discussion/comment/871263/#Comment_871263
Also the Genesis 2 EyesLookAt-HeadPointAt - PoseControl Prop-System is useless without the ERC dependencies between the props and the figures.
The ERC dependencies setup - how it should work
As an example here you can see the file "PCTRL_ERC_Influence_NeckHeadRotate.dsf".
With this property shown in [%] percent I can control the amount of head and neck rotations that may occure during animation if you load a pose or something and it works - if dialed down on the figure root node "Pose Controls" or the head node "Pose Controls" property group - all "Influence" of any head/neck rotations can be controled. Also with a second property called "PCTRL_ERC_Influence_NeckHeadPCTRL" any "Influence" of the original genesis 2 head/neck "Pose Controls" can be controled at the same time so both settings of rotation values for the head/neck on the figure can be cossfaded for animation and poses.
I have created all these properies that start with "PCTRL_ERC_Influence_..." not only for the figures but also for the props "G2[F-M]_EyesLookAt_Target_Plane" and "G2[F-M]_HeadPointAt_RigMaster02" now I need to finde a way to link for example the property "PCTRL_ERC_Influence_NeckHeadRotate" of the figure with the "PCTRL_ERC_Influence_NeckHeadRotate" of the prop with some advanced scripting because these ERC-dependencies / relationships between the properties of the props and the figures dont get loaded with the scene sub-Set files as I first thought while I saved them allready parented to the figure.
So any hint how I can write a script to load the ERC-dependencies with the content files would be very welcome.
Imagine how cool it would be if anyone can load this prop-setup and use it with a few clicks on a genesis figure.
see section "group" : "/Pose Controls/Neck", "formulas" : [.................] all neck and head rotations of genesis 2 female will be multiplied by the value of the PCTRL_ERC_Influence_NeckHeadRotate property
I'm not sure exactly what you're after, but DzElement has a setLoadScript() method. A similar mechanism is discussed here, and I found a snippet to load a .duf preset here. I've not used any of these, so YMMV.
Right now, I'm using one of these scripts to make characters look at a camera, but your way seems much more interactive/flexible. I hope you can get it all working.
Wow realy big thanks for your guidance Esemwy
- this is exactly what I was searching for:
Can I automatically run a DSA script when I load a prop from a DUF/DSF file? http://www.daz3d.com/forums/discussion/41175/can-i-automatically-run-a-dsa-script-when-i-load-a-prop-from-a-duf-dsf-file
This is the question I should have asked but sorry I didnt even know how DSA script's work Im still new to DazStudio.
And I've never crawled that deep into the forums Daz Script Developer Discussion> so thanks again.
Also I was surprised read a up-to-date post form "rob". We should all fall to our knees and prais rbtwhiz because I think we owe him and the rest of the daz team respect for all this userfrindly interface and well thought out functions of DazStudio we have today.
BTW is there any forum sitemap to help people to find what they are searching for?
I was to busy working on this freebie in DS and writing this thread. I will have to bookmark more of these threads to see if I can learn how to write a script that can load the prop-setup directly parented to any selected genesis 2 figure (male/female) in the scene with all the ERC dependencies still intact. It's not that I cant read and write some programming syntax - but all the data-classes / functions / methods - man it seems to me that this is much stuff to learn if you want to teach DazStudio how all the PoseControl Prop-System parenting and ERC dependencies should work.
Untill then maybe I will show you more about how I managed to setup all the ERC dependencies with the "Parmeters" tab and the "Property Hierarchy" in my next post - for everyone intrested to get a better understanding how all this ERC- Add/Substract and Multiply/Divide entries in section Sub-Companents and Controlers of the Property Hierarchy works.
Also I allready thought of converting the prop-geometry to a single genesis fitted figure as a wokaround (and leave all the problems with props behind) and then add additional bones to the fitted figure that owns a copy of the genesis 2 rig for every prop-armature to later link the rotations of the additional bones with ERC dependencies to the original genesis pose-control-properties if you can follow what I mean. I allready tried this but I didnt get this IK-chain behaviour to work for the additional bones to use the translate tool on them while they start to rotating and the rest of the rig should follow (if not pinned - did you know from what I have discovered pinned-states can be ERC-Freezed also).
But Im not shure if this concept of creating a fitted figure (with only armature/control-handle geometry) to control the pose of the figure it is fitted to with the rotation/translation values of the additional bones with ERC-linking will work - maybe someone else more involved in rigging could pick up this idea and tell me - I dont have that much time.