Ever wondered how to add a CamRide to your scene? Well I did. With some help from the VaM community and a little trial and error, it turns out it's really easy.
Maybe this is common knowledge and I was the last to know about it but just in case others are confused, I thought I'd share what I learned.
UPDATE (Sep 9, 2024):
I'd streamlined the position capture process from previous suggestion. Instead of Step 6 in Method 2, where I say manually place the CamRide atom in the animation at 5 sec intervals, you may want to just zoom the mouse around while the animation plays and use that as the CamRide. See "Alternate CamRide position recording procedure at end of page for details.
UPDATE (Jan 31, 2023):
In the discussions, @Omega offered an alternative approach (Method 1 below). After trying in a few scenes, I like it better than the approach described in my original guide (Method 2 below). There are advantages/disadvantages to each so see which best suits your needs.
METHOD 1: Embody
------------------------------------------------
All you really need to know:
Add Embody plugin to an Empty atom
------------------------------------------------
Steps:
1. Add Embody plugin to an Empty atom
2. ParentLink windowCamera to Empty
3. Add Empty to Timeline controllers
4. Record Empty position throughout animation
The flow is essentially the same as method 2 so the 1st video (labeled steps1-6) applies to both methods.
*******************************************************************************************************************
*******************************************************************************************************************
*******************************************************************************************************************
METHOD 2: PlayerNavigationPanel
------------------------------------------------
All you really need to know:
Adding the "playerNavCollider" line (see below) to your json save file causes your view to move when you move the PlayerNavigationPanel. What you do after that is up to you.
------------------------------------------------
@pepewigs's CamRide (Camera Ride Feature) Scene gives detailed instructions (and does some of the work for you) on linking the panel to the "Person" atom's head to follow her around. His example scene is the source of the playerNavCollider edit that makes this all work.
You could use an animation pattern or timeline (or probably a dozen different methods) to move the PlayerNavigationPanel during your scene.
I'm going describe linking it to an Empty atom whose position moves throughout a timeline animation.
Note: It's entirely possible that I'm doing something I'm not supposed to so, if you see a flaw or a simple improvement, please share.
VERSION 2 - Originally I used a CUA DLSR camera to show my view. Thank you to @ZRSX for suggesting the use of the built in WindowCamera (see Discussion section). As was pointed out, one of the advantages to using the WindowCamera is the "Display view in HUD" feature. Very handy if you don't wish to follow the camera around throughout the record process. Plus, one less dependency!
1. Add the "playerNavCollider" (in yellow) line near the top of your save file json as shown:
{
"playerNavCollider" : "PlayerNavigationPanel:Floor",
"playerHeightAdjust" : "-2.363385",
"monitorCameraRotation" : {
...
2. Add an "Empty" atom (which will be used as your record target) and move the Window Camera to its location. Move via "Select Align To From Scene" to ensure the Empty atom and the WindowCamera share the same orientation.
3. Parent Link the WindowCamera atom to an "Empty" record target atom. Turn the camera on and use as your reference view. The WindowCamera isn't strictly necessary but it will show exactly where you're pointing, simplifying scene framing.
4. Lock Z rotation of the Empty atom if you want the view to remain horizontal. (Probably a good idea)
5. Add the Empty atom control to your timeline targets
6. Move the record target (Empty) position as you step through the animation. I did 5 second intervals for a slow ride.
Note: For me, this was easiest in VR with the VamTimeline.Controller plugin added to a simple sign (and sign linked to the record target) so you can advance frames easily. (Big thanks to @Acid Bubbles for suggesting it in my Q&A query. The controller panel really streamlined things)
VIDEO: Steps 2-6
7. Finally parent link PlayerNavigationPanel to the record target (Empty) and enjoy the ride.
*******************************************************************************************************************
*******************************************************************************************************************
*******************************************************************************************************************
Alternate (super quick) CamRide position recording procedure:
The dance is Hip Hop Dance Mocap by @MayaMocap (CC-BY).
Note: I added pasties to make the video family friendly ?
Hopefully that's clear enough. If not, let me know.
Maybe this is common knowledge and I was the last to know about it but just in case others are confused, I thought I'd share what I learned.
UPDATE (Sep 9, 2024):
I'd streamlined the position capture process from previous suggestion. Instead of Step 6 in Method 2, where I say manually place the CamRide atom in the animation at 5 sec intervals, you may want to just zoom the mouse around while the animation plays and use that as the CamRide. See "Alternate CamRide position recording procedure at end of page for details.
UPDATE (Jan 31, 2023):
In the discussions, @Omega offered an alternative approach (Method 1 below). After trying in a few scenes, I like it better than the approach described in my original guide (Method 2 below). There are advantages/disadvantages to each so see which best suits your needs.
METHOD 1: Embody
------------------------------------------------
All you really need to know:
Add Embody plugin to an Empty atom
------------------------------------------------
Steps:
1. Add Embody plugin to an Empty atom
2. ParentLink windowCamera to Empty
3. Add Empty to Timeline controllers
4. Record Empty position throughout animation
The flow is essentially the same as method 2 so the 1st video (labeled steps1-6) applies to both methods.
*******************************************************************************************************************
*******************************************************************************************************************
*******************************************************************************************************************
METHOD 2: PlayerNavigationPanel
------------------------------------------------
All you really need to know:
Adding the "playerNavCollider" line (see below) to your json save file causes your view to move when you move the PlayerNavigationPanel. What you do after that is up to you.
------------------------------------------------
@pepewigs's CamRide (Camera Ride Feature) Scene gives detailed instructions (and does some of the work for you) on linking the panel to the "Person" atom's head to follow her around. His example scene is the source of the playerNavCollider edit that makes this all work.
You could use an animation pattern or timeline (or probably a dozen different methods) to move the PlayerNavigationPanel during your scene.
I'm going describe linking it to an Empty atom whose position moves throughout a timeline animation.
Note: It's entirely possible that I'm doing something I'm not supposed to so, if you see a flaw or a simple improvement, please share.
VERSION 2 - Originally I used a CUA DLSR camera to show my view. Thank you to @ZRSX for suggesting the use of the built in WindowCamera (see Discussion section). As was pointed out, one of the advantages to using the WindowCamera is the "Display view in HUD" feature. Very handy if you don't wish to follow the camera around throughout the record process. Plus, one less dependency!
1. Add the "playerNavCollider" (in yellow) line near the top of your save file json as shown:
{
"playerNavCollider" : "PlayerNavigationPanel:Floor",
"playerHeightAdjust" : "-2.363385",
"monitorCameraRotation" : {
...
2. Add an "Empty" atom (which will be used as your record target) and move the Window Camera to its location. Move via "Select Align To From Scene" to ensure the Empty atom and the WindowCamera share the same orientation.
3. Parent Link the WindowCamera atom to an "Empty" record target atom. Turn the camera on and use as your reference view. The WindowCamera isn't strictly necessary but it will show exactly where you're pointing, simplifying scene framing.
4. Lock Z rotation of the Empty atom if you want the view to remain horizontal. (Probably a good idea)
5. Add the Empty atom control to your timeline targets
6. Move the record target (Empty) position as you step through the animation. I did 5 second intervals for a slow ride.
Note: For me, this was easiest in VR with the VamTimeline.Controller plugin added to a simple sign (and sign linked to the record target) so you can advance frames easily. (Big thanks to @Acid Bubbles for suggesting it in my Q&A query. The controller panel really streamlined things)
VIDEO: Steps 2-6
7. Finally parent link PlayerNavigationPanel to the record target (Empty) and enjoy the ride.
*******************************************************************************************************************
*******************************************************************************************************************
*******************************************************************************************************************
Alternate (super quick) CamRide position recording procedure:
- Add Empty atom called 'CamRide'
- Select and focus (F) on CamRide element
- Rotate view around CamRide until directly behind the empty element (blue arrow pointing directly away from your view)
- Mousewheel zoom in on CamRide atom until very close
- Parent Link CamRide to [CameraRig] CenterEye. Now the CamRide atom will always point at whatever you're looking at.
- Add CamRide control to Timeline targets
- Set CamRide control to record (i.e. select control and leave all other controls unselected)
- Select central focus of camride animation (e.g. Female chest) and focus (F) on it.
- Start recording in desired animation (with only CamRide control selected so you don't overwrite the other controls)
- Move around target as animation plays. Pretend like you're the cameraman on a crane camera rig or something.
- Unlink CamRide from [CameraRig]: Set Position/Rotation from ParentLink to On/On
- Reduce keyframes to 1 per second with 'Round to fps' checked. Raw capture will be a little jerky, especially if you used mouse wheel to zoom so this will smooth things out and be plenty to capture the motion.
- Optionally step through animation and fine tune CamRide direction. Linking to the Window Camera could help with this. See other options.
The dance is Hip Hop Dance Mocap by @MayaMocap (CC-BY).
Note: I added pasties to make the video family friendly ?
Hopefully that's clear enough. If not, let me know.