diff --git a/CHANGELOG.md b/CHANGELOG.md index 45ae108..173cedd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,16 @@ All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## [2.0.2-preview.3] - 2019-05-28 +## [2.0.3-preview.1] - 2019-08-13 +### 2019.3, HDRP and build Fixes +- iOS Cloud build fails with an `exportArchive: Code signing "fccore.bundle" failed` error +- Recorder Clip with a Targeted Camera input gives black images with HDRP +- In 2019.3, HDRP is out of experimental and namespace was renamed +- Recorder settings warnings were not displayed in the console at recording start +- Massive documentation update +- Fixed "NullReferenceException" errors related to changes in GameView in 2019.3.0b1. + +## [2.0.2-preview.2] - 2019-05-28 ### Fixes and Linux support - Add Gif and Legacy Recorders core library binaries for Linux - Fix build errors related to fccore diff --git a/Documentation~/Images.meta b/Documentation~/Images.meta deleted file mode 100644 index 4619657..0000000 --- a/Documentation~/Images.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 49c956ad8e0ee93458fb8debf6f521e6 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Documentation~/Images/BtnRecord.png b/Documentation~/Images/BtnRecord.png new file mode 100644 index 0000000..73bdc29 Binary files /dev/null and b/Documentation~/Images/BtnRecord.png differ diff --git a/Documentation~/Images/CaptureOptions360View.png b/Documentation~/Images/CaptureOptions360View.png new file mode 100644 index 0000000..1e688bc Binary files /dev/null and b/Documentation~/Images/CaptureOptions360View.png differ diff --git a/Documentation~/Images/CaptureOptionsGameView.png b/Documentation~/Images/CaptureOptionsGameView.png new file mode 100644 index 0000000..6bf2241 Binary files /dev/null and b/Documentation~/Images/CaptureOptionsGameView.png differ diff --git a/Documentation~/Images/CaptureOptionsRenderTextureAsset.png b/Documentation~/Images/CaptureOptionsRenderTextureAsset.png new file mode 100644 index 0000000..62f7cb7 Binary files /dev/null and b/Documentation~/Images/CaptureOptionsRenderTextureAsset.png differ diff --git a/Documentation~/Images/CaptureOptionsTargetedCamera.png b/Documentation~/Images/CaptureOptionsTargetedCamera.png new file mode 100644 index 0000000..dd8172e Binary files /dev/null and b/Documentation~/Images/CaptureOptionsTargetedCamera.png differ diff --git a/Documentation~/Images/CaptureOptionsTextureSampling.png b/Documentation~/Images/CaptureOptionsTextureSampling.png new file mode 100644 index 0000000..69ee6d9 Binary files /dev/null and b/Documentation~/Images/CaptureOptionsTextureSampling.png differ diff --git a/Documentation~/Images/IconPreset.png b/Documentation~/Images/IconPreset.png new file mode 100644 index 0000000..288f3f9 Binary files /dev/null and b/Documentation~/Images/IconPreset.png differ diff --git a/Documentation~/Images/Icon_.meta b/Documentation~/Images/Icon_.meta deleted file mode 100644 index 6c56e1c..0000000 --- a/Documentation~/Images/Icon_.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: c943423611bd59f4c93dce3308fce6bc -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Documentation~/Images/Label-1.png b/Documentation~/Images/Label-1.png new file mode 100644 index 0000000..495a671 Binary files /dev/null and b/Documentation~/Images/Label-1.png differ diff --git a/Documentation~/Images/Label-10.png b/Documentation~/Images/Label-10.png new file mode 100644 index 0000000..ecafbd9 Binary files /dev/null and b/Documentation~/Images/Label-10.png differ diff --git a/Documentation~/Images/Label-11.png b/Documentation~/Images/Label-11.png new file mode 100644 index 0000000..598a65a Binary files /dev/null and b/Documentation~/Images/Label-11.png differ diff --git a/Documentation~/Images/Label-12.png b/Documentation~/Images/Label-12.png new file mode 100644 index 0000000..dc2a90d Binary files /dev/null and b/Documentation~/Images/Label-12.png differ diff --git a/Documentation~/Images/Label-13.png b/Documentation~/Images/Label-13.png new file mode 100644 index 0000000..fc4cf84 Binary files /dev/null and b/Documentation~/Images/Label-13.png differ diff --git a/Documentation~/Images/Label-14.png b/Documentation~/Images/Label-14.png new file mode 100644 index 0000000..07066c2 Binary files /dev/null and b/Documentation~/Images/Label-14.png differ diff --git a/Documentation~/Images/Label-15.png b/Documentation~/Images/Label-15.png new file mode 100644 index 0000000..723b34a Binary files /dev/null and b/Documentation~/Images/Label-15.png differ diff --git a/Documentation~/Images/Label-16.png b/Documentation~/Images/Label-16.png new file mode 100644 index 0000000..cab4f96 Binary files /dev/null and b/Documentation~/Images/Label-16.png differ diff --git a/Documentation~/Images/Label-17.png b/Documentation~/Images/Label-17.png new file mode 100644 index 0000000..1cacae3 Binary files /dev/null and b/Documentation~/Images/Label-17.png differ diff --git a/Documentation~/Images/Label-18.png b/Documentation~/Images/Label-18.png new file mode 100644 index 0000000..b035f66 Binary files /dev/null and b/Documentation~/Images/Label-18.png differ diff --git a/Documentation~/Images/Label-19.png b/Documentation~/Images/Label-19.png new file mode 100644 index 0000000..e30e1ea Binary files /dev/null and b/Documentation~/Images/Label-19.png differ diff --git a/Documentation~/Images/Label-2.png b/Documentation~/Images/Label-2.png new file mode 100644 index 0000000..a74116e Binary files /dev/null and b/Documentation~/Images/Label-2.png differ diff --git a/Documentation~/Images/Label-20.png b/Documentation~/Images/Label-20.png new file mode 100644 index 0000000..64442e2 Binary files /dev/null and b/Documentation~/Images/Label-20.png differ diff --git a/Documentation~/Images/Label-3.png b/Documentation~/Images/Label-3.png new file mode 100644 index 0000000..65180fd Binary files /dev/null and b/Documentation~/Images/Label-3.png differ diff --git a/Documentation~/Images/Label-4.png b/Documentation~/Images/Label-4.png new file mode 100644 index 0000000..72bb639 Binary files /dev/null and b/Documentation~/Images/Label-4.png differ diff --git a/Documentation~/Images/Label-5.png b/Documentation~/Images/Label-5.png new file mode 100644 index 0000000..06eda8f Binary files /dev/null and b/Documentation~/Images/Label-5.png differ diff --git a/Documentation~/Images/Label-6.png b/Documentation~/Images/Label-6.png new file mode 100644 index 0000000..5f4e98b Binary files /dev/null and b/Documentation~/Images/Label-6.png differ diff --git a/Documentation~/Images/Label-7.png b/Documentation~/Images/Label-7.png new file mode 100644 index 0000000..e1acc3e Binary files /dev/null and b/Documentation~/Images/Label-7.png differ diff --git a/Documentation~/Images/Label-8.png b/Documentation~/Images/Label-8.png new file mode 100644 index 0000000..e8a3a9c Binary files /dev/null and b/Documentation~/Images/Label-8.png differ diff --git a/Documentation~/Images/Label-9.png b/Documentation~/Images/Label-9.png new file mode 100644 index 0000000..a5342fb Binary files /dev/null and b/Documentation~/Images/Label-9.png differ diff --git a/Documentation~/Images/Label-A.png b/Documentation~/Images/Label-A.png new file mode 100644 index 0000000..9a8f6ae Binary files /dev/null and b/Documentation~/Images/Label-A.png differ diff --git a/Documentation~/Images/Label-B.png b/Documentation~/Images/Label-B.png new file mode 100644 index 0000000..4d3f0a7 Binary files /dev/null and b/Documentation~/Images/Label-B.png differ diff --git a/Documentation~/Images/Label-C.png b/Documentation~/Images/Label-C.png new file mode 100644 index 0000000..e7adb5a Binary files /dev/null and b/Documentation~/Images/Label-C.png differ diff --git a/Documentation~/Images/Label-D.png b/Documentation~/Images/Label-D.png new file mode 100644 index 0000000..6a66c5c Binary files /dev/null and b/Documentation~/Images/Label-D.png differ diff --git a/Documentation~/Images/Label-E.png b/Documentation~/Images/Label-E.png new file mode 100644 index 0000000..c434e45 Binary files /dev/null and b/Documentation~/Images/Label-E.png differ diff --git a/Documentation~/Images/Label-F.png b/Documentation~/Images/Label-F.png new file mode 100644 index 0000000..11d1511 Binary files /dev/null and b/Documentation~/Images/Label-F.png differ diff --git a/Documentation~/Images/Label-G.png b/Documentation~/Images/Label-G.png new file mode 100644 index 0000000..ef3bbbe Binary files /dev/null and b/Documentation~/Images/Label-G.png differ diff --git a/Documentation~/Images/Label-H.png b/Documentation~/Images/Label-H.png new file mode 100644 index 0000000..85eae60 Binary files /dev/null and b/Documentation~/Images/Label-H.png differ diff --git a/Documentation~/Images/Label-I.png b/Documentation~/Images/Label-I.png new file mode 100644 index 0000000..7a15878 Binary files /dev/null and b/Documentation~/Images/Label-I.png differ diff --git a/Documentation~/Images/Label-J.png b/Documentation~/Images/Label-J.png new file mode 100644 index 0000000..e53d53d Binary files /dev/null and b/Documentation~/Images/Label-J.png differ diff --git a/Documentation~/Images/Label-K.png b/Documentation~/Images/Label-K.png new file mode 100644 index 0000000..7f7698b Binary files /dev/null and b/Documentation~/Images/Label-K.png differ diff --git a/Documentation~/Images/Label-L.png b/Documentation~/Images/Label-L.png new file mode 100644 index 0000000..074d573 Binary files /dev/null and b/Documentation~/Images/Label-L.png differ diff --git a/Documentation~/Images/Label-M.png b/Documentation~/Images/Label-M.png new file mode 100644 index 0000000..2f37640 Binary files /dev/null and b/Documentation~/Images/Label-M.png differ diff --git a/Documentation~/Images/Label-N.png b/Documentation~/Images/Label-N.png new file mode 100644 index 0000000..a18fa75 Binary files /dev/null and b/Documentation~/Images/Label-N.png differ diff --git a/Documentation~/Images/Label-O.png b/Documentation~/Images/Label-O.png new file mode 100644 index 0000000..bd9239a Binary files /dev/null and b/Documentation~/Images/Label-O.png differ diff --git a/Documentation~/Images/Label-P.png b/Documentation~/Images/Label-P.png new file mode 100644 index 0000000..a52946a Binary files /dev/null and b/Documentation~/Images/Label-P.png differ diff --git a/Documentation~/Images/Label-Q.png b/Documentation~/Images/Label-Q.png new file mode 100644 index 0000000..072347f Binary files /dev/null and b/Documentation~/Images/Label-Q.png differ diff --git a/Documentation~/Images/Label-R.png b/Documentation~/Images/Label-R.png new file mode 100644 index 0000000..90bccb7 Binary files /dev/null and b/Documentation~/Images/Label-R.png differ diff --git a/Documentation~/Images/Label-S.png b/Documentation~/Images/Label-S.png new file mode 100644 index 0000000..28982b4 Binary files /dev/null and b/Documentation~/Images/Label-S.png differ diff --git a/Documentation~/Images/Label-T.png b/Documentation~/Images/Label-T.png new file mode 100644 index 0000000..33609b3 Binary files /dev/null and b/Documentation~/Images/Label-T.png differ diff --git a/Documentation~/Images/Label-U.png b/Documentation~/Images/Label-U.png new file mode 100644 index 0000000..669fc6a Binary files /dev/null and b/Documentation~/Images/Label-U.png differ diff --git a/Documentation~/Images/Label-V.png b/Documentation~/Images/Label-V.png new file mode 100644 index 0000000..d90df25 Binary files /dev/null and b/Documentation~/Images/Label-V.png differ diff --git a/Documentation~/Images/Label-W.png b/Documentation~/Images/Label-W.png new file mode 100644 index 0000000..f879754 Binary files /dev/null and b/Documentation~/Images/Label-W.png differ diff --git a/Documentation~/Images/Label-X.png b/Documentation~/Images/Label-X.png new file mode 100644 index 0000000..d205e32 Binary files /dev/null and b/Documentation~/Images/Label-X.png differ diff --git a/Documentation~/Images/Label-Y.png b/Documentation~/Images/Label-Y.png new file mode 100644 index 0000000..231e497 Binary files /dev/null and b/Documentation~/Images/Label-Y.png differ diff --git a/Documentation~/Images/Label-Z.png b/Documentation~/Images/Label-Z.png new file mode 100644 index 0000000..60ed4d2 Binary files /dev/null and b/Documentation~/Images/Label-Z.png differ diff --git a/Documentation~/Images/RecorderAnimation.png b/Documentation~/Images/RecorderAnimation.png new file mode 100644 index 0000000..1042627 Binary files /dev/null and b/Documentation~/Images/RecorderAnimation.png differ diff --git a/Documentation~/Images/RecorderAudio.png b/Documentation~/Images/RecorderAudio.png new file mode 100644 index 0000000..9ae5c74 Binary files /dev/null and b/Documentation~/Images/RecorderAudio.png differ diff --git a/Documentation~/Images/RecorderClipProperties.png b/Documentation~/Images/RecorderClipProperties.png new file mode 100644 index 0000000..cfce39d Binary files /dev/null and b/Documentation~/Images/RecorderClipProperties.png differ diff --git a/Documentation~/Images/RecorderClipPropertiesRec.png b/Documentation~/Images/RecorderClipPropertiesRec.png new file mode 100644 index 0000000..d007938 Binary files /dev/null and b/Documentation~/Images/RecorderClipPropertiesRec.png differ diff --git a/Documentation~/Images/RecorderGIF.png b/Documentation~/Images/RecorderGIF.png new file mode 100644 index 0000000..ba7a5fe Binary files /dev/null and b/Documentation~/Images/RecorderGIF.png differ diff --git a/Documentation~/Images/RecorderImage.png b/Documentation~/Images/RecorderImage.png new file mode 100644 index 0000000..e6cc2d0 Binary files /dev/null and b/Documentation~/Images/RecorderImage.png differ diff --git a/Documentation~/Images/RecorderMovie.png b/Documentation~/Images/RecorderMovie.png new file mode 100644 index 0000000..39f1a83 Binary files /dev/null and b/Documentation~/Images/RecorderMovie.png differ diff --git a/Documentation~/Images/RecorderSplash.png b/Documentation~/Images/RecorderSplash.png index 9228b78..57b4fd3 100644 Binary files a/Documentation~/Images/RecorderSplash.png and b/Documentation~/Images/RecorderSplash.png differ diff --git a/Documentation~/Images/RecorderWindow.png b/Documentation~/Images/RecorderWindow.png index 3f653c6..0101d43 100644 Binary files a/Documentation~/Images/RecorderWindow.png and b/Documentation~/Images/RecorderWindow.png differ diff --git a/Documentation~/Images/RecordingControls.png b/Documentation~/Images/RecordingControls.png new file mode 100644 index 0000000..37564e4 Binary files /dev/null and b/Documentation~/Images/RecordingControls.png differ diff --git a/Documentation~/Images/RecordingSettings.png b/Documentation~/Images/RecordingSettings.png new file mode 100644 index 0000000..d7eb0a9 Binary files /dev/null and b/Documentation~/Images/RecordingSettings.png differ diff --git a/Documentation~/InclCaptureOptions360View.md b/Documentation~/InclCaptureOptions360View.md new file mode 100644 index 0000000..66ecbc8 --- /dev/null +++ b/Documentation~/InclCaptureOptions360View.md @@ -0,0 +1,20 @@ + +### 360 View capture properties + +These properties appear when you set **Capture** to **360 View**. + +To capture 360 degree recordings, the Recorder rotates the **Source** camera 360 degrees in about its **Y** axis. + +![](Images/CaptureOptions360View.png) + +|Property:||Function| +|-|-|-| +| **Source** ||Specifies which camera the Recorder uses as the point of view for the 360 degree recording.

**Note:** some options may not appear if you're using certain render pipelines (for example [HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest)). | +| | Main Camera | The Camera tagged with the MainCamera [Tag](https://docs.unity3d.com/Manual/Tags.html). | +| | Tagged Camera | A camera tagged with a specific [Tag](https://docs.unity3d.com/Manual/Tags.html). | +|**Tag** | | When you set **Source** to **Tagged Camera**, specifies which Tag to look for.| +| **360 View Output** ||**W** and **H** specify the width and height, in pixels, of the 360-degree video.| +| **Cube Map** ||The size of the cube map, in pixels, for the 360-degree video. | +| **Stereo** ||When you enable this option, the Recorder outputs separate left and right stereoscopic views of the 360-degree video. | +| **Stereo Separation** ||When you enable the **Stereo** option, this property specifies the angle between the left and right views on the **Source** camera's **Y** axis.| +| **Flip Vertical** ||When you enable this option, the Recorder flips the output image vertically.

This is useful to correct for systems that output video upside down.| \ No newline at end of file diff --git a/Documentation~/InclCaptureOptionsGameView.md b/Documentation~/InclCaptureOptionsGameView.md new file mode 100644 index 0000000..d67bda4 --- /dev/null +++ b/Documentation~/InclCaptureOptionsGameView.md @@ -0,0 +1,18 @@ + +### Game View capture properties + +These options appear when you set **Capture** to **Game View**. + +>[!NOTE] +>If you are using more than one Recorder to capture Game View, they must all use the same resolution settings. + +![](Images/CaptureOptionsGameView.png) + +|Property:||Function:| +|-|-|-| +| **Output Resolution** ||The dimensions of the recording.| +| | Match Window Size | Matches the current Game View resolution. | +| | _[PRESET RESOLUTIONS]_ | Choose from several standard video resolutions such as 1080p and 4K. | +| | Custom | Uses custom width and height values that you supply. | +| **Aspect Ratio** ||These options appear when you set **Output Resolution** to **Custom**.| +| | W/H | Control the recording's width and height.

| \ No newline at end of file diff --git a/Documentation~/InclCaptureOptionsRenderTextureAsset.md b/Documentation~/InclCaptureOptionsRenderTextureAsset.md new file mode 100644 index 0000000..6bbfb25 --- /dev/null +++ b/Documentation~/InclCaptureOptionsRenderTextureAsset.md @@ -0,0 +1,12 @@ + +### Render Texture Asset capture properties + +These options appear when you set **Capture** to **Render Texture Asset**. + +![](Images/CaptureOptionsRenderTextureAsset.png) + +|Property:||Function| +|-|-|-| +|Render Texture | | Points to the render texture you want the Recorder to capture. | +|Resolution | | The target render texture's resolution. Unity updates this field automatically when you select a render texture. | +| **Flip Vertical** ||When you enable this option, the Recorder flips the output image vertically.

This is useful to correct for systems that output video upside down.| \ No newline at end of file diff --git a/Documentation~/InclCaptureOptionsTargetedCamera.md b/Documentation~/InclCaptureOptionsTargetedCamera.md new file mode 100644 index 0000000..ef9322b --- /dev/null +++ b/Documentation~/InclCaptureOptionsTargetedCamera.md @@ -0,0 +1,22 @@ + +### Targeted Camera capture properties + +These options appear when you set **Capture** to **Targeted Camera**. + +![](Images/CaptureOptionsTargetedCamera.png) + +|Property:||Function:| +|-|-|-| +| **Source** ||Specifies which camera the Recorder uses to capture the recording.

**Note:** some options may not appear if you're using certain render pipelines (for example [HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest)).| +| | ActiveCamera | The Camera that is active when you launch the recording. | +| | Main Camera | The Camera tagged with the MainCamera [Tag](https://docs.unity3d.com/Manual/Tags.html). | +| | Tagged Camera | A camera tagged with a specific [Tag](https://docs.unity3d.com/Manual/Tags.html). | +|**Tag** | | When you set **Source** to **Tagged Camera**, specifies which Tag to look for.| +| **Output Resolution** ||The dimensions of the recording.| +| | Match Window Size | Matches the current monitor resolution. | +| | _[PRESET RESOLUTIONS]_ | Choose from several standard video resolutions such as 1080p and 4K. | +| | Custom | Uses custom width and height values that you supply. | +| **Aspect Ratio** ||These options only appear when you set **Output Resolution** to **Custom**. | +| | W/H | Control the recording's width and height.| +| **Include UI** ||When you enable this option, the recording includes UI GameObjects.

This option only appears when you set **Source** to **ActiveCamera**.| +| **Flip Vertical** ||When you enable this option, the Recorder flips the output image vertically.

This is useful to correct for systems that output video upside down.| \ No newline at end of file diff --git a/Documentation~/InclCaptureOptionsTextureSampling.md b/Documentation~/InclCaptureOptionsTextureSampling.md new file mode 100644 index 0000000..8ac075d --- /dev/null +++ b/Documentation~/InclCaptureOptionsTextureSampling.md @@ -0,0 +1,18 @@ + +### Texture Sampling capture properties + +These options appear when you set **Capture** to **Texture Sampling**. + +![](Images/CaptureOptionsTextureSampling.png) + +|Property:||Function| +|-|-|-| +| **Source** ||Specifies which camera the Recorder uses to capture the recording.

**Note:** some options may not appear if you're using certain render pipelines (for example [HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest)).| +| | ActiveCamera | The Camera that is active when you launch the recording. | +| | Main Camera | The Camera tagged with the MainCamera [Tag](https://docs.unity3d.com/Manual/Tags.html). | +| | Tagged Camera | A camera tagged with a specific [Tag](https://docs.unity3d.com/Manual/Tags.html). | +|**Tag** | | When you set **Source** to **Tagged Camera**, specifies which Tag to look for.| +| **Aspect Ratio** ||The width:height ratio to format the output to.| +| **Super Sampling** | | The size of the grid from which to sample. | +| **Rendering Resolution** ||The dimensions of the input from which to sample. | +| **Output Resolution** ||The dimensions of the video recording.| \ No newline at end of file diff --git a/Documentation~/RecorderAnimation.md b/Documentation~/RecorderAnimation.md new file mode 100644 index 0000000..1f4f76a --- /dev/null +++ b/Documentation~/RecorderAnimation.md @@ -0,0 +1,21 @@ +# Configuring Animation Clip Recorders + +The **Animation Clip Recorder** generates an animation clip in the .anim file format. + +This page covers the properties specific to Animation Clip Recorders. To fully configure an Animation Clip Recorder, you must also set: + +- The Recorder's [Output properties](RecorderProperties.md). +- The [Recording Properties](Recording.md) for the capture. + +## Animation Clip Recorder properties + +![](Images/RecorderAnimation.png) + +|Property:|Function:| +|:---|:---| +| **Game Object** |The [GameObject](https://docs.unity3d.com/Manual/class-GameObject.html) to record.| +| **Recorded Target(s)** |The components of the GameObject to record. Choose more than one item to record more than one component.| +| **Record Hierarchy** |Enable this property to record the GameObject's children.| + +>[!NOTE] +>The Animation Clip Recorder can only record a GameObject in the current Scene. It cannot record GameObjects in other Scenes. diff --git a/Documentation~/RecorderAudio.md b/Documentation~/RecorderAudio.md new file mode 100644 index 0000000..dc5d1b2 --- /dev/null +++ b/Documentation~/RecorderAudio.md @@ -0,0 +1,18 @@ +# Configuring Audio Recorders + +The **Audio Recorder** generates an audio clip in .wav format. + +This page covers properties specific to Audio Recorders. To fully configure an Audio Recorder, you must also set: + +- The Recorder's [Output properties](RecorderProperties.md). +- The [Recording Properties](Recording.md) for the capture. + +## Audio Recorder properties + +![](Images/RecorderAudio.png) + +|Property:|Function:| +|:---|:---| +| **Format** |The encoding format for Recorder output. **WAV** is the only possible option.| + + diff --git a/Documentation~/RecorderDebugging.md b/Documentation~/RecorderDebugging.md new file mode 100644 index 0000000..1e26ce3 --- /dev/null +++ b/Documentation~/RecorderDebugging.md @@ -0,0 +1,24 @@ +# Debugging Recorders + +The Unity Recorder includes tools that can help you diagnose problems you may encounter during captures. + +## Unity Recorder GameObjects + +The Unity Recorder adds a **Unity-RecorderSessions** GameObject to Scenes to help manage capture sessions. The **Unity-RecorderSessions** GameObject has Components that bind Recorders to GameObjects in your Scene, and store the progress of the current recording session. + +By default, Unity hides the **Unity-RecorderSessions** GameObject, but you can make it visible in the [Hierarchy window](https://docs.unity3d.com/Manual/Hierarchy.html). This is useful for debugging. For example, if a Recorder is not working properly, you can toggle the **Unity-RecorderSessions** GameObject on to make sure that Unity creates it properly when you launch the recording session. + +To toggle the Unity-RecorderSessions GameObject's visibility: + +- Select **Window > General > Recorder > Options > Show Recorder GameObject** from Unity's main menu. + +## Recording in Verbose mode + +If your Recorders are not working as expected, you can activate Verbose mode to get diagnostic information about the recording (for example, the recording's start and end time). + +Verbose mode logs information to the [Console window](https://docs.unity3d.com/Manual/Console.html), which is useful when you want to troubleshoot. + +To toggle Verbose mode: + +- Select **Window > General > Recorder > Options > Verbose Mode** from Unity's main menu. + diff --git a/Documentation~/RecorderGif.md b/Documentation~/RecorderGif.md new file mode 100644 index 0000000..55dfbdb --- /dev/null +++ b/Documentation~/RecorderGif.md @@ -0,0 +1,35 @@ +# Configuring GIF Animation Recorders + +The **GIF Animation Recorder** generates an animated .gif file. + +This page covers properties specific to GIF Animation Recorders. To fully configure a GIF Animation Recorder, you must also set: + +- The Recorder's [Output properties](RecorderProperties.md). +- The [Recording Properties](Recording.md) for the capture. + +## GIF Animation Recorder properties + +![](Images/RecorderGIF.png) + +|Property:||Function:| +|:---|:---|:-| +| **Capture** ||Specifies the input for the recording.| +|| Game View |Records frames rendered in the Game View.

Selecting this option displays the [Game View capture properties](#GameView). | +|| Targeted Camera |Records frames captured by a specific Camera, even if the Game View does not use that Camera.

Selecting this option displays the [Targeted Camera capture properties](#TargetedCamera).| +|| 360 View |Records a 360-degree video.

Selecting this option displays the [360 View capture properties](#360View).| +|| Render Texture Asset |Records frames rendered in a Render Texture.

Selecting this option displays the [Render Texture Asset capture properties](#RenderTextureAsset).| +|| Texture Sampling |Supersamples the **Source** camera during the capture to generate anti-aliased images in the recording. Use this capture method when the **Rendering Resolution** has the same or higher resolution than the **Output Resolution**.

Selecting this option displays the [Texture Sampling capture properties](#TextureSampling).| +| **Encoding** ||Properties for controlling the quality and size of the .gif output.| +|| _Num Colors_ |The number of colors used in the GIF palette table. The maximum is 256 colors. Specify a smaller palette to reduce the size of the .gif file while reducing image quality.| +|| _Keyframe Interval_ |The number of frames that share the same color palette. Increase this number to reduce the size of the .gif file while reducing image quality.| +|| _Max Tasks_ |The number of frames to encode in parallel. If you increase this number, it might reduce the amount of time Unity takes to encode the .gif file.| + +[!include[](InclCaptureOptionsTargetedCamera.md)] + +[!include[<title>](InclCaptureOptionsRenderTextureAsset.md)] + +[!include[<title>](InclCaptureOptionsTextureSampling.md)] + + + + diff --git a/Documentation~/RecorderImage.md b/Documentation~/RecorderImage.md new file mode 100644 index 0000000..5ed5906 --- /dev/null +++ b/Documentation~/RecorderImage.md @@ -0,0 +1,39 @@ +# Configuring Image Sequence Recorders + +The **Image Sequence Recorder** generates a sequence of image files in the .jpeg, .png, or .exr (OpenEXR) file format. + +This page covers properties specific to Image Sequence Recorders. To fully configure an Image Sequence Recorder, you must also set: + +- The Recorder's [Output properties](RecorderProperties.md). +- The [Recording Properties](Recording.md) for the capture. + +## Image Sequence Recorder Properties + +![](Images/RecorderImage.png) + +|Property:||Function:| +|:---|:---|:-| +| **Format** ||The encoding format for Recorder output. <br/><br/>Choose **.png**, **.jpeg**, or **EXR** for .exr (OpenEXR).| +| **Capture Alpha** ||Controls whether or not the Recorder includes the Alpha channel in the recording. <br/><br/> This property is not available when you set **Format** to **.jpeg** or set **Capture** to **Game View**.| +| **Capture** ||Specifies the input for the recording.| +|| Game View |Records frames rendered in the Game View.<br/><br/>Selecting this option displays the [Game View capture properties](#GameView). | +|| Targeted Camera |Records frames captured by a specific Camera, even if the Game View does not use that Camera.<br/><br/>Selecting this option displays the [Targeted Camera capture properties](#TargetedCamera).| +|| 360 View |Records a 360-degree frame sequence.<br/><br/>Selecting this option displays the [360 View capture properties](#360View).| +|| Render Texture Asset |Records frames rendered in a Render Texture.<br/><br/>Selecting this option displays the [Render Texture Asset capture properties](#RenderTextureAsset).| +|| Texture Sampling |Supersamples the **Source** camera during the capture to generate anti-aliased images in the recording. Use this capture method when the **Rendering Resolution** has the same or higher resolution than the **Output Resolution**. <br/><br/>Selecting this option displays the [Texture Sampling capture properties](#TextureSampling).| + +[!include[<title>](InclCaptureOptionsGameview.md)] + +[!include[<title>](InclCaptureOptionsTargetedCamera.md)] + +[!include[<title>](InclCaptureOptions360View.md)] + +[!include[<title>](InclCaptureOptionsRenderTextureAsset.md)] + +[!include[<title>](InclCaptureOptionsTextureSampling.md)] + + + + + + diff --git a/Documentation~/RecorderManage.md b/Documentation~/RecorderManage.md new file mode 100644 index 0000000..8b4fd63 --- /dev/null +++ b/Documentation~/RecorderManage.md @@ -0,0 +1,70 @@ +# Creating and managing Recorders + +Use the Recorder list in the [Recorder window](RecorderWindow.md) (menu: **Window > General > Recorder > Recorder window**) to manage Recorders. You can: + +- Add, rename, edit, duplicate, and delete Recorders. +- Save the current Recorder list as a reusable asset, load an existing Recorder list, or delete Recorder lists. +- Save individual Recorders as [Presets](https://docs.unity3d.com/Manual/Presets.html). + +## Adding and editing Recorders + +**To add a new Recorder:** + +1. From the Recorder list, click **+ Add New Recorders**. +1. From the context menu, choose the type of Recorder to add. + +The new Recorder appears in the Recorder list. + +Select it to [edit its properties](RecorderProperties.md) in the Recorder Properties pane. + +**To rename a Recorder:** + +1. Select the Recorder you want to rename, then click its name. +2. Type the new name and press **Enter** or click anywhere outside of the name field. + +**To duplicate a Recorder:** + +Right click the Recorder you want to duplicate and choose **Duplicate** from the context menu. + +Or + +Select the Recorder you want to duplicate and use the **Ctrl/Cmd + d** shortcut. + +**To delete a Recorder:** + +Right click the Recorder you want to delete and choose **Delete** from the context menu. + +Or + +Select the Recorder you want to delete and use the **Ctrl/Cmd + Delete** shortcut. + +<a name="ManageRecorderLists"></a> +## Managing Recorder lists + +You can save all of the Recorders in the Recorder List pane as a single reusable asset. This is useful to quickly switch between sets of Recorders. + +To save, load, or clear settings for all Recorders: + +1. Open the Recorder window (menu: **Windows > General > Recorder > Recorder window**). + +2. In the Recorder list, click the drop-down menu. + +3. Do one of the following: + + * To save your Recorder list as an asset, select **Save Recorder List**. + + * To load a Recorder list, select **Load Recorder List > _[LIST ASSET]_**. + + * To delete all Recorders in your list, select **Clear Recorder List**. + +<a name="RecorderPreset"></a> +## Creating Recorder Presets + +Use the Preset icon ![](Images/IconPreset.png) in the Recorder Properties pane to save any Recorder's properties as a Preset, or load a Recorder Preset onto a new Recorder. + +This is useful for creating predefined Recorders that you can reuse in different [Recorder Lists](#ManageRecorderLists). + +For information about saving and loading Presets, see the [Presets](https://docs.unity3d.com/Manual/Presets.html) section in the Unity Manual. + + + diff --git a/Documentation~/RecorderMovie.md b/Documentation~/RecorderMovie.md new file mode 100644 index 0000000..7ba0da8 --- /dev/null +++ b/Documentation~/RecorderMovie.md @@ -0,0 +1,38 @@ +# Configuring Movie Recorders + +The **Movie Recorder** generates a video in the .mp4 or .webm file format. It does not support variable frame rates. + +This page covers properties specific to Movie Recorders. To fully configure a Movie Recorder, you must also set: + +- The Recorder's [Output properties](RecorderProperties.md). +- The [Recording Properties](Recording.md) for the capture. + +## Movie Recorder properties + +![](Images/RecorderMovie.png) + +|Property:||Function:| +|:---|:---|:---| +| **Format** ||The encoding format of the Recorder's output. Choose **.mp4** or **WEBM**.| +| **Capture Alpha** ||Enable this property to include the alpha channel in the recording. Disable it to only record the RGB channels. This property is only available when **Format** is **WEBM**. This property is not available when **Capture** is **Game View**.| +| **Capture** ||Specifies the input for the recording.| +|| Game View |Records frames rendered in the Game View.<br/><br/>Selecting this option displays the [Game View capture properties](#GameView). | +|| Targeted Camera |Records frames captured by a specific Camera, even if the Game View does not use that Camera.<br/><br/>Selecting this option displays the [Targeted Camera capture properties](#TargetedCamera).| +|| 360 View |Records a 360-degree video.<br/><br/>Selecting this option displays the [360 View capture properties](#360View).| +|| Render Texture Asset |Records frames rendered in a Render Texture.<br/><br/>Selecting this option displays the [Render Texture Asset capture properties](#RenderTextureAsset).| +|| Texture Sampling |Supersamples the **Source** camera during the capture to generate anti-aliased images in the recording. Use this capture method when the **Rendering Resolution** has the same or higher resolution than the **Output Resolution**. <br/><br/>Selecting this option displays the [Texture Sampling capture properties](#TextureSampling).| +| **Capture Audio** ||Enable this property to include audio in the recording.| +| **Quality** || Sets the quality of the output movie: **Low**, **Medium**, or **High**. The lower the quality, the smaller the file size.| + +[!include[](InclCaptureOptionsGameview.md)] + +[!include[](InclCaptureOptionsTargetedCamera.md)] + +[!include[](InclCaptureOptions360View.md)] + +[!include[](InclCaptureOptionsRenderTextureAsset.md)] + +[!include[](InclCaptureOptionsTextureSampling.md)] + + + diff --git a/Documentation~/RecorderProperties.md b/Documentation~/RecorderProperties.md new file mode 100644 index 0000000..6fa9a9f --- /dev/null +++ b/Documentation~/RecorderProperties.md @@ -0,0 +1,48 @@ +# Setting Recorder properties + +To configure a Recorder, set its properties in the [Recorder window](RecorderWindow.md) or, if you're recording from a Timeline Track, in the [Recorder Clip Inspector](RecordingTimelineTrack,md). + +From there, you can set the following types of properties: + +- **Output Properties:** These specify the name, path, and other data for files the Recorder outputs. These are described below.<br/><br/> +- **Recorder-specific properties:** Each type of Recorder has additional properties you must set. For example, a Recorder that captures via a Camera needs to know which Camera to use.<br/><br/>Recorder-specific properties are described on the following pages: + - [**Configuring Animation Clip Recorders**](RecorderAnimation.md) + - [**Configuring Movie Recorders**](RecorderMovie.md) + - [**Configuring Image Sequence Recorders**](RecorderImage.md) + - [**Configuring GIF Animation Recorders**](RecorderGif.md) + - [**Configuring Audio Recorders**](RecorderAudio.md) + +After you set the Recorder's properties, you can save them as a [Recorder Preset](RecorderManage.md#creating-recorder-presets). + +If you've already saved the configuration you want as a [Recorder Preset](RecorderManage.md#creating-recorder-presets), you can load it instead of setting the Recorder properties. + +>[!NOTE] +>Recorder properties are not available in standalone Unity Players or builds. + +## Output properties + +These properties define file output options for any type of Recorder. + +|Property:||Function:| +|:---|:---|:---| +| **File Name** ||The name of the output file.<br/><br/>Type a file name in the text field.<br/><br/>Use the **+Wildcards** drop-down menu to choose various auto-generated strings to include in the file name. | +| **+Wildcards** ||Lists placeholders for auto-generated text strings that the Recorder inserts in the **File Name**. For example, the date and time you generate the recording.<br/><br/>Choose a wildcard from the drop-down menu to add its placeholder to the text field. You can combine wildcards.<br/><br/>The Recorder replaces all placeholders with the correct text when it saves the output file.| +| | \<Recorder\> |The Recorder name, as it appears in the Recorder list. | +| |\<Time\> | The time the recording is generated. Uses the `00h00m` format. | +| |\<Take\> | The **Take Number** value. Uses the `000` format. | +| |\<Date\> | The date the recording is generated. Uses the `yyyy-MM-dd` format. | +| |\<Project\> | The name of the current Unity Project. | +| |\<Product\> | A combination of the Unity Project name and the output file extension. | +| |\<Scene\> | The name of the current Unity Scene. | +| |\<Resolution\> | The output resolution in pixels. | +| |\<Frame\> | The current frame.<br/><br/>This is useful for Image Sequence Recorders that output each frame as a separate file. | +| |\<Extension\> | The file extension of the output format. | +| **Path** ||Use these controls to configure the path to the folder where the Recorder saves output files.<br/><br/>Some Recorders can only output to specific locations. For example Animation Clip Recorders can only output to locations inside the Assets folder.| +| |_[DROP-DOWN]_ | Choose one of several pre-defined Unity folders, or choose **Absolute** to specify a custom path. | +| | _[TEXT FIELD]_ | If you choose a predefined path from the drop-down menu, the Recorder appends anything you enter here to that path.<br/><br/>If you choose **Absolute** from the drop-down menu, you can enter the custom output path here. <br/><br/> If you click the Output Location button (**...**) to choose an absolute path from the Unity file browser, the path you choose overwrites anything in this field. | +| | Output Location button (**...**) | Opens a Unity file browser where you can choose a custom output path. When you choose a path this way, the Recorder automatically sets the drop-down menu to **Absolute**. | +| | _[PATH]_ | Displays the full output path, as set in the **File Name** and **Path** properties. | +| | File Browser button <br/>![](Images/RecorderReveal.png) | Opens your operating system's file browser to the current path. | +|**Take Number** || A value that the Recorder uses to number recordings. It increases by one after each recording. <br/><br/>You can use the **<Take>** wildcard to append current **Take** value to the **File Name**. | + + diff --git a/Documentation~/RecorderTypes.md b/Documentation~/RecorderTypes.md new file mode 100644 index 0000000..8b788b4 --- /dev/null +++ b/Documentation~/RecorderTypes.md @@ -0,0 +1,13 @@ +# Types of Recorder + +The Unity Recorder package includes the following types of Recorder: + +* **Animation Clip Recorder:** generates an animation clip in .anim format. + +* **Movie Recorder:** generates a video in .mp4 or .webm format. + +* **Image Sequence Recorder:** generates a sequence of image files in .jpeg, .png, or .exr (OpenEXR) format. + +* **GIF Animation Recorder:** generates an animated .gif file. + +* **Audio Recorder:** generates an audio clip in .wav format. \ No newline at end of file diff --git a/Documentation~/RecorderWindow.md b/Documentation~/RecorderWindow.md new file mode 100644 index 0000000..25b7b46 --- /dev/null +++ b/Documentation~/RecorderWindow.md @@ -0,0 +1,22 @@ +# The Recorder window + +Use the Recorder window to manage Recorders and record Play-mode data . + +Open the Recorder window from Unity's main menu (**Window > General > Recorder > Recorder window**). + +When you open the **Recorder** window, Unity restores the values from the last recording session. + +The Recorder window is not available in standalone Unity Players or builds. + +>[!NOTE] +>If you are [recording from a Timeline track](RecordingTimelineTrack.md), you set up Recorders from the **Recorder Clip** properties instead. + +![](Images/RecorderWindow.png) + +The Recorder window has the following sections: + +||Section:|Details:| +|-|-|-| +|![](Images/Label-A.png) | **Recording Controls** | Start and stop recordings, and specify their duration and frame rate. <br/><br/>See [**Recording in Play mode**](RecordingPlayMode.md) for details. | +|![](Images/Label-B.png) | **Recorder list** | Create and manage Recorders. <br/><br/>See [**Creating and managing Recorders**](RecorderManage.md) for details. | +|![](Images/Label-C.png) | **Recorder properties** | Specify recording properties, such as file name and location, output format, and encoding.<br/><br/>See [**Setting Recorder properties**](RecorderProperties.md) for information about properties common to all Recorders.<br/><br/>See the following sections for information about specific Recorder types.<br/>- [**Configuring Animation Clip Recorders**](RecorderAnimation.md)<br/>- [**Configuring Movie Recorders**](RecorderMovie.md)<br/>- [**Configuring Image Sequence Recorders**](RecorderImage.md)<br/>- [**Configuring GIF Animation Recorders**](RecorderGif.md)<br/>- [**Configuring Audio Recorders**](RecorderAudio.md) | \ No newline at end of file diff --git a/Documentation~/Recording.md b/Documentation~/Recording.md new file mode 100644 index 0000000..dc10d12 --- /dev/null +++ b/Documentation~/Recording.md @@ -0,0 +1,7 @@ +# Recording + +You can set up and launch recordings from the [Recorder window](RecorderWindow.md) or from a [Timeline](https://docs.unity3d.com/Manual/TimelineSection.html) track. In either case you can set the same properties, but how you set them varies. + +- For information about recording from the Recorder window, see [Recording in Play mode](RecordingPlayMode.md) + +- For information about recording from a Timeline track window, see [Recording from a Timeline track](RecordingTimelineTrack.md) \ No newline at end of file diff --git a/Documentation~/RecordingPlayMode.md b/Documentation~/RecordingPlayMode.md new file mode 100644 index 0000000..4bf3734 --- /dev/null +++ b/Documentation~/RecordingPlayMode.md @@ -0,0 +1,80 @@ +# Recording in Play mode + +This page explains how to set up and launch a recording from the Recorder window. + +If you want to record from a Timeline Track, see [Recording From a Timeline Track](RecordingTimelineTrack.md). + +## Before you start a recording + +Before you record Play-mode data, make sure you do the following: + +- Set up your Scene for recording. +- Created the Recorders you want to use to capture the Scene. See [Creating and managing Recorders](RecorderManage.md) for details. +- Set the Recorder properties. See [Setting Recorder properties](RecorderProperties.md) for details. + +## Setting up a recording + +Use the recording controls in the Recorder window to set up a recording. + +Use the **Frame Rate** properties to specify how to constrain the frame rate during recording. The frame rate affects the size and number of the files the Recorder outputs. + +![](Images/RecordingControls.png) + +### Recording controls + +|Property:||Function:| +|:---|:---|:---| +|![](Images/BtnRecord.png)<br/>**[Record Button]** | |Starts and stops recording. Clicking this button also activates Play mode if it is not already active. | +| **Start Recording**/<br/>**Stop Recording** ||Starts and stops recording. Clicking **Start Recording** also activates Play mode if it is not already active.| +|**Exit PlayMode** | |When this option is enabled, the Unity Recorder automatically exits Play mode when it finishes recording. | +| **Record Mode** ||Specifies the frames or time interval to record.| +||_Manual_ |Start and stop recording when you manually click **Start Recording** and **Stop Recording**, respectively.| +|| _Single Frame_ |Record a single frame. Use the **Frame Number** property to specify this frame.| +|| _Frame Interval_ |Record a set of consecutive frames during Play mode. Use the **First Frame** and **Last Frame** properties to specify when to start and stop.| +|| _Time Interval_ |Record a specific duration, in seconds, during Play mode. Use the **Start** and **End** properties to specify when to start and stop.| +| **Frame Number** ||Specifies the number of the frame to capture when in **Single Frame** mode.| +| **First Frame**/ <br/> **Last Frame** ||Specifies the range of frames to capture when in **Frame Interval** mode.| +| **Start**/ <br/> **End** ||Specifies the time, in seconds, to start and stop recording.| + +### Frame Rate properties + +|Property:||Function:| +|:---|:---|:---| +| **Playback** ||Specifies how to control the frame rate during recording.| +|| _Constant_ |Limit the Recorder to a specific frame rate. Use the **Target** property to specify this rate.| +|| _Variable_ |Use the application's frame rate. Specify the upper limit of the application's rate during recording with the **Max Frame Rate** property.<br/><br/> **Note:** The **Movie Recorder** does not support a variable frame rate.| +| **Target** ||Sets the frame rate to capture the recording at. This property appears when you set **Playback** to **Constant**. <br/><br/> The Unity Recorder captures at this rate regardless of whether you run your application at a higher or lower frame rate. For example, if you set **Target** to a custom value of 30 fps but you run your application at 60 fps, the Recorder captures at 30 fps.| +| **Max Frame Rate** ||Limit the rate of updates in Play mode . This property is available when you set **Playback** to **Variable**. To prevent your application from exceeding this frame rate, the Unity Recorder inserts delays during playback. Use this property to reduce the size of the output.| +| **Cap Frame Rate** ||Enable this property when the frame rate of your application is faster than the **Target** frame rate. This property is available when **Playback** is **Constant**.| + + +## Starting and stopping a recording + +When you start a recording, the Unity Recorder activates Play mode (if it is not already active) and starts to capture Play-mode data using all active Recorders. + +**To start recording:** + +- Do one of the following: + - In the Recorder window, click the Record button or the **START RECORDING** button. + - Press **F10**/**fn+F10**. + - From the main menu, select **Window > General > Recorder > Quick Recording**. + +> [!NOTE] +> During recording, you cannot modify the properties in the Recorder window. + +Most **Recording Mode** settings stop the recording automatically. If you set **Recording Mode** to **Manual**, you must stop the recording yourself. + +When a recording stops the Editor remains in Play mode unless: + +- You enable the **Exit PlayMode** property in the [recording controls](#setting-up-a-recording). +- You stop the recording by exiting Play mode). + +**To stop recording:** + +- Do one of the following: + - In the Recorder window, click the Record button or the **START RECORDING** button. + - Use the **F10**/**fn+F10** shortcut. + - Close the Recorder window. + - Exit Play mode. + + diff --git a/Documentation~/RecordingTimelineTrack.md b/Documentation~/RecordingTimelineTrack.md new file mode 100644 index 0000000..d023c59 --- /dev/null +++ b/Documentation~/RecordingTimelineTrack.md @@ -0,0 +1,50 @@ +# Recording from a Timeline track + +This page explains how to set up and launch a recording from a [Timeline](https://docs.unity3d.com/Manual/TimelineSection.html) Track. + +If you want to record from the Recorder window, see [Recording in Play mode](RecordingPlayMode.md). + +You can start and stop recordings from Timeline. A **Recorder Track** in Timeline contains one or more **Recorder Clips**. Each clip defines a recording for the Recorder to capture while Timeline plays the **Recorder Track**. + +![Adding a Recorder Track in Timeline.](Images/TimelineRecorderTrack.png) + +## Setting up Recorder Clips + +To set up a recording session in a Timeline instance: + +1. Select the GameObject associated with the Timeline Asset. + +1. In the Timeline window, click the Add (**+**) button. + +1. From the context menu, select **UnityEditor.Recorder.Timeline > Recorder Track**. + +1. Right-click the **Recorder Track**. + +1. From the context menu, select **Add Recorder Clip**. + +1. Select the **Recorder Clip** and edit properties in the **Inspector** window. + +## Editing Recorder Clip properties + +Recorder Clip properties are the same as regular [Recorder properties](RecorderSetup.md), but you set them from the Recorder Clip inspector rather than the Recorder window. + +![Adding a Recorder Track in Timeline.](Images/RecorderClipProperties.png) + +||| +|-|-| +|![](Images/Label-A.png) | Choose the type of Recorder you want the Recorder Clip to use. | +|![](Images/Label-B.png) | Load any existing [Recorder Preset](RecorderManage.md#RecorderPreset), or save the current Recorder Clip settings as a Preset. | +|![](Images/Label-C.png) | Set the Recorder Clip properties. These vary according to the **Selected Recorder** setting. You set them the same way you set regular [Recorder properties](RecorderSetup.md). | + +>[!NOTE] +> Unity stores the **Recorder Clip** properties in the Timeline Track. They do not affect properties you set in the Recorder window. + +The Recorder Clip Inspector also includes a subset of the [recording controls](RecordingPlayMode.md#setting-up-a-recording) in the Recorder window. + +![Adding a Recorder Track in Timeline.](Images/RecorderClipPropertiesRec.png) + +||| +|-|-| +|![](Images/Label-A.png) | The Recorder Clip's **Clip Timing** properties control the recording's **Start**, **End**, and **Duration**. | +|![](Images/Label-B.png) | The **Frame Rate > Playback** property is locked to **Constant** mode, because Timeline plays back at a constant frame rate. | +|![](Images/Label-C.png) | The Recorder Clip inherits its **Frame Rate > Target** setting from the Timeline’s **Frame Rate** setting. | \ No newline at end of file diff --git a/Documentation~/TableOfContents.md b/Documentation~/TableOfContents.md new file mode 100644 index 0000000..2e5d041 --- /dev/null +++ b/Documentation~/TableOfContents.md @@ -0,0 +1,13 @@ +* [Recorder Overview](index.md) +* [The Recorder window](RecorderWindow.md) +* [Creating and Managing Recorders](RecorderManage.md) +* [Setting Recorder Properties](RecorderProperties.md) + * [Animation Clip Recorders](RecorderAnimation.md) + * [Movie Recorders](RecorderMovie.md) + * [Image Sequence Recorders](RecorderImage.md) + * [GIF Animation Recorders](RecorderGif.md) + * [Audio Recorders](RecorderAudio.md) +* [Recording](Recording.md) + * [Recording in Play mode](RecordingPlayMode.md) + * [Recording from a Timeline Track](RecordingTimelineTrack.md) +* [Debugging Recorders](RecorderDebugging.md) diff --git a/Documentation~/com.unity.recorder.md b/Documentation~/com.unity.recorder.md deleted file mode 100644 index 16386ec..0000000 --- a/Documentation~/com.unity.recorder.md +++ /dev/null @@ -1,292 +0,0 @@ -# Unity Recorder V1.0 User Manual - -![Unity Recorder](Images/RecorderSplash.png) - - -Use the Unity Recorder to capture and save in-game data during [Play Mode](https://docs.unity3d.com/Manual/GameView.html). For example, use the Unity Recorder to capture and save gameplay as an MP4 file. - -A recorder specifies details for creating a recording, including a data source, resolution, and output format. The Unity Recorder package includes the following recorders: - -* __Animation Recorder__: generates an animation clip in ANIM format. - -* __Movie Recorder__: generates a video in MP4 or WebM format. - -* __Image Recorder__: generates a sequence of image files in JPEG, PNG, or OpenEXR format. - -* __GIF Recorder__: generates an animated GIF file. - -The Unity Recorder also supports [Timeline](https://docs.unity3d.com/Manual/TimelineSection.html). Use Recorder tracks and clips to trigger recording sessions from Timeline instances. - -## Limitations - -The Unity Recorder has the following limitations: - -* The Recorder window and Recorder properties are not available in standalone Unity Players. - -* To use Unity Recorder with Scriptable Render Pipeline (SRP) or High Definition Render Pipeline (HDRP), use only the __Game View__, __360 View__, or __Render Texture__ choices in the __Capture__ drop-down menu. - -* The __Animation Recorder__ only records a [GameObject](https://docs.unity3d.com/Manual/class-GameObject.html) in the current Scene. It does not record a GameObject in other scenes. - -* The __Movie Recorder__ does not support variable frame rates. - -* The Unity Recorder does not capture frames at a consistent rate from systems that use a real-time clock, like the [Video Player](https://docs.unity3d.com/Manual/VideoPlayer.html). Data captured from these systems might appear speeded up or slowed down. - -# Upgrading Unity Recorder - -Besides new features, Unity Recorder 1.0 has a few notable changes: - -* Use the __Window > General > Recorder__ menu to access Unity Recorder features. Features for older versions of Unity Recorder were accessible from the __Window > Recorder__ menu. - -* Unity Recorder includes new, updated recorders. These recorders take advantage of Unity Editor features and are more stable than previous versions. However, if you must use the legacy recorders, toggle __Window > General > Recorder > Options > Show Legacy Recorders__. - -To upgrade to Unity Recorder 1.0 from an earlier version: - -1. In Unity Editor, open your Unity Project. - -2. Save the current Scene. - -3. In the [Project](https://docs.unity3d.com/Manual/ProjectView.html) window, expand the *Unity Technologies* folder and select the *Recorder* folder. - -4. In the main menu, choose __Edit > Delete__. - -5. Quit Unity then re-open your project. - -6. Use the [Unity Asset Store](https://docs.unity3d.com/Manual/AssetStore.html) to search for and install Unity Recorder 1.0. - -# Setting up Recorders - -Use the recorder list in the __Recorder__ window to add, rename, edit, duplicate, and delete recorders. You can also save and delete your recorder list as an asset to reuse in your project and in other projects. - -**Tip:** You can save a recorder as a [Preset](https://docs.unity3d.com/Manual/Presets.html). You can also specify a preset for recorder settings as a default when creating new recorders. - -Re-opening the __Recorder__ window restores the values of the last recording session. - -To add a recorder: - -1. Open the Recorder from the Unity menu (__Window > General > Recorder__). - -2. In the recorder list, click __+ Add New Recorders__ to choose from a drop-down menu. - -3. Adjust the settings for the new recorder. - -4. Optionally rename the new recorder by single-clicking its name. - -To delete or duplicate a recorder: - -1. Open the Recorder from the Unity menu (__Windows > General > Recorder__). - -2. In the recorder list, right-click the recorder and choose __Delete__ or __Duplicate__. - -__Tip:__ You can also delete and duplicate recorders with the Delete and Ctrl+D/Cmd+D keys, respectively. - -To save, load, or clear settings for all recorders: - -1. Open the Recorder window from the Unity menu (__Windows > General > Recorder__). - -2. In the recorder list, click the drop-down menu. - -3. Do one of the following: - - * To save your recorder list as an asset, choose __Save Recorder List__. - - * To load a recorder list, choose __Load Recorder List__, then the list to load. - - * To delete all recorders in your list, choose __Clear Recorder List__. - -# Recording in Play Mode - -When recording in Play Mode, use the __Record Mode__ property to specify when to start and stop the recording. You can manually start and stop recording, specify a single frame, a range of frames, or a range of time. You can set up more than one recorder to record the same Scene. - -**Note:** During recording, you cannot modify the properties in the Recorder window. - -To record a scene in Play Mode: - -1. Set up your scene to prepare it for recording. - -2. Open the Recorder from the Unity menu (__Window > General > Recorder__). - -3. In the recorder list, select then set up the recorder to use. - -4. Set the __Record Mode__ and __Frame Rate__ properties. - -5. Repeat steps 3-4 to use other recorders for the same Scene. - -6. Click __Start Recording__ or press F10. Unity Recorder activates Play Mode if it is not already active. The progress bar displays the number of frames or images recorded. - -7. When you are ready to stop recording, click __Stop Recording__ or press F10. You only need to stop recording when using the Manual record mode. Your game continues in Play Mode. - -**Tip:** Closing the Recorder window, or exiting Play Mode and returning to Edit Mode, also stops the recording. - -# Recording from a Timeline track - -You can start and stop recordings from the [Timeline](https://docs.unity3d.com/Manual/TimelineSection.html). A __Recorder Track__ in Timeline contains one or more __Recorder Clips__. Each clip specifies a recording to start and stop while Timeline plays the __Recorder Track__. - -![Adding a Recorder Track in Timline.](Images/TimelineRecorderTrack.png) - -A __Recorder Clip__ has the same properties as a recorder in the Recorder window except for the following differences: - -* Recording mode can only be set to Constant. Timeline can only play using a constant frame rate. - -* The frame rate of the recording inherits from the Timeline’s __Frame Rate__ setting. - -* The __Clip Timing__ section replaces the __Bounds/Limits__ section. Instead, use the __Start__, __End__, and __Duration__ properties to set when recording occurs. - -* Use the __Recorder Category__ property to select which recorder the Timeline clip uses. - -* The __Recorder Clip__ properties are stored in the Timeline Track and do not affect the properties in the Recorder window. - -To set up a recording session in a Timeline instance: - -1. Select the GameObject in your Scene that is associated with the Timeline Asset. - -2. In the Timeline window, click __Add__ and select __Recorder Track__. - -3. Right-click the __Recorder Track__ and select __Add Recorder Clip__. - -4. Select the __Recorder Clip__ to view and edit its recording properties in the __Inspector__ window. - -# Debugging Recorders - -You can view the GameObject that Unity Recorder creates in your Scene. This GameObject is named __Unity-RecorderSessions__. It contains the components and child GameObjects that the Unity Recorder creates to maintain bindings between the Recorder and the GameObjects in your Scene. Also, while recording, the __Unity-RecorderSessions__ GameObject contains components that store the progress of current recording session. It is by default hidden from the [Hierarchy](https://docs.unity3d.com/Manual/Hierarchy.html) window. - -To toggle the visibility of the __Unity-RecorderSessions__ GameObject, choose __Window > General > Recorder > Options > Show Recorder GameObject__. - -# Recorder Window - -Manage recorders and control recording in the Recorder window. The Recorder window has these sections: - -* Recording controls: Start and stop recordings, and specify their duration and frame rate. - -* Recorder list: the recorders you have added or loaded. - -* Recorder properties: Specify the recording properties, such as the output format and encoding, file name and location. - -![The Recorder window: recording controls (red), recorder list (blue), and recorder properties (green).](Images/RecorderWindow.png) - - - -## Recording controls - -Use the recording controls to start and stop a recording. Specify when to start and stop a recording with the __Record Mode__ properties. Use the __Frame Rate__ properties to specify how to constrain the frame rate during recording. The frame rate affects the size and number of the captured output files. - - -|Property:|Function:| -|:---|:---| -| __Start Recording__ <br/> __Stop Recording__ |Starts and stops recording. Clicking __Start Recording__ also activates Play Mode if it is not already active.| -| __Record Mode__ |Specifies the frames or time duration to record.| -|     _Manual_ |Start and stop recording when you manually click __Start Recording__ and __Stop Recording__, respectively.| -|     _Single Frame_ |Record a single frame. Use the __Frame Number__ property to specify this frame.| -|     _Frame Interval_ |Record a consecutive set of frames during Play Mode. Use the __First Frame__ and __Last Frame__ properties to specify when to start and stop.| -|     _Time Interval_ |Record a specific duration during Play Mode. Use the __Start__ and __End__ properties to specify when to start and stop.| -| __Frame Number__ |Specifies the number of the frame to capture when using the __Single Frame__ mode.| -| __First Frame__ <br/> __Last Frame__ |Specifies the range of frames to capture when in __Frame Interval__ mode.| -| __Start__ <br/> __End__ |Specifies the time, in seconds, to begin and finish recording.| -| __Playback__ |Specifies how to control the frame rate during recording.| -|     _Constant_ |Limit the recorder to a specific frame rate. Use the __Target__ property to specify this rate.| -|     _Variable_ |Use the frame rate of the game. Specify the upper limit of the rate of the game during recording with the __Max Frame Rate__ property. **Note:** The __Movie Recorder__ does not support a variable frame rate.| -| __Target__ |The frame rate to capture when using the __Constant__ setting in __Playback__. The Unity Recorder captures at this rate regardless of whether the game is played at a higher or lower frame rate. For example, if __Target__ is set to a custom value of 30 fps but the game plays at 60 fps, the recording is captured at 30 fps.| -| __Max Frame Rate__ |Limit the rate of updates in Play Mode. This property is available when __Playback__ is __Variable__. To prevent your game from exceeding this frame rate, the Unity Recorder inserts delays during game play. Use this property to reduce the size of the output.| -| __Cap Frame Rate__ |Check this property when the frame rate of your game is faster than the __Target__ frame rate. This property is available when __Playback__ is __Constant__.| - - -## Recorder properties - -These properties specify the file name and location to store the output from a recorder. These properties are available for all recorders. - -Some recorders, like the __Animation Recorder__, can only record inside the Assets folder. - -**Tip:** Click ![](Images/RecorderReveal.png) to reveal the output files in Windows Explorer/Mac OS Finder. - - -|Property:|Function:| -|:---|:---| -| __File Name__ |The name of the output file. Use the text field to specify the pattern to use for recording many files. Choose placeholders from the __+Wildcards__ drop-down menu.| -| __+Wildcards__ |The placeholder text to insert in File Name. The recorder replaces these placeholders when saving the output file. You may combine wildcards.| -| __Path__ |The folder where output files are saved. Use the drop-down menu to choose a pre-defined Unity folder. Choose __Absolute__ to specify a custom directory or click __...__ to navigate to a custom directory.| - - -## Movie Recorder properties - -The __Movie Recorder__ generates a video in MP4 or WebM format. It does not support variable frame rates. - -|Property:|Function:| -|:---|:---| -| __Format__ |The encoding format of the output of the recorder. Choose __MP4__ or __WEBM__.| -| __Capture Alpha__ |Check to include the alpha channel in the recording. Uncheck to only record the RGB channels. This property is only available when __Format__ is __WEBM__. This property is not available when __Capture__ is __Game View__.| -| __Capture__ |The input for the recording.| -|     _Game View_ |Record the frames that are rendered in the Game View. | -|     _Targeted Camera_ |Record the frames captured by a specific camera, even if it is not used in the Game View.| -|     _360 View_ |Record a 360-degree video. Use the Source camera as the point of view for the video. The recorder captures 360 degrees on the y-axis of the __Source__ camera.| -|     _Render Texture Asset_ |Capture the frames that are rendered in a Render Texture.| -|     _Texture Sampling_ |When capturing, supersample the Source camera to generate anti-aliased images in the output. Use this capture method when the __Rendering Resolution__ has the same or higher resolution than the __Output Resolution__. | -| __Render Texture__ |The Render Texture asset to use as the source for frames. Available when __Capture__ is set to __Render Texture Asset__. The output resolution of the recording is fixed to the resolution of the Rendure Texture.| -| __Super Sampling__ |The size of the grid from which to sample. This property is available when __Capture__ is __Texture Sampling__.| -| __Source__ |The camera to use for recording. Choose __Active Cameras__, __Main Camera__, or __Tagged Camera__. The __Main Camera__ option specifies the camera with the MainCamera tag. Available when __Capture__ is set to __Targeted Camera__, __360 View__, or __Texture Sampling__.| -| __Tag__ |The tag of the camera to record. Available when __Capture__ is set to __Targeted Camera__ and __Source__ is __TaggedCamera__.| -| __360 View Output__ |The width and height, in pixels, of the 360-degree video. This property is available when __Capture__ is __360 View__. | -| __Cube Map__ |The dimension of the cube map, in pixels, for the 360-degree video. This property is available when __Capture__ is __360 View__. | -| __Stereo__ |Check to generate both a left and right stereoscopic view for a 360-degree video. This property is available when __Capture__ is __360 View__. | -| __Stereo Separation__ |The angle to separate the left and right views. This separation is along the y-axis of the __Source__ camera. This property is available when __Capture__ is __360 View__.| -| __Rendering Resolution__ |The dimensions of the input from which to sample. This property is available when __Capture__ is __Texture Sampling__.| -| __Output Resolution__ |The dimensions of the video recording. This property is available only for applicable __Capture__ choices.| -| __Aspect Ratio__ |The width:height ratio to format the output to.| -| __Flip Vertical__ |Check to flip the images in the output to make it upside-down. Use this property to restore up and down when your system generates video that is flipped vertically.| -| __Capture Audio__ |Check to include audio in the recording.| -| __Quality__ |The quality of the output: __Low__, __Medium__, or __High__. The lower the quality, the smaller the size of the output file.| - - -## Animation Recorder properties - -The __Animation Recorder__ generates an animation clip in ANIM format. - - -|Property:|Function:| -|:---|:---| -| __Game Object__ |The GameObject to record.| -| __Recorded Target(s)__ |The components of the GameObject to record. Choose more than one item to record more than one component.| -| __Record Hierarchy__ |Check to record children of the Game Object too.| - - -## Image Recorder Properties - -The __Image Recorder__ generates a sequence of image files in JPEG, PNG, or OpenEXR format. - -|Property:|Function:| -|:---|:---| -| __Format__ |The encoding format of the output of the recorder. Choose __PNG__, __JPEG__, or __EXR__ (for OpenEXR).| -| __Capture Alpha__ |Check to include the alpha channel in the recording. Uncheck to only record the RGB channels. This property is only available when __Format__ is __PNG__ or __EXR__. This property is not available when __Capture__ is __Game View__.| -| __Capture__ |The input for the recording.| -|     _Game View_ |Record the frames that are rendered in the Game View. | -|     _Targeted Camera_ |Record the frames captured by a specific camera, even if it is not used in the Game View.| -|     _360 View_ |Record a 360-degree video. Use the __Source__ as the point of view for the video. The recorder captures video 360 degrees on the y axis of the __Source__ camera.| -|     _Render Texture Asset_ |Record the frames that are rendered in a Render Texture.| -|     _Texture Sampling_ |When capturing, supersample the __Source__ camera generate anti-aliased images in the recording. Use this capture method when the __Rendering Resolution__ has the same or higher resolution than the __Output Resolution__. | -| __Source__ |The camera to use for recording. Choose __Active Cameras__, __Main Camera__, or __Tagged Camera__. The __Main Camera__ option specifies the camera with the MainCamera tag. Available when __Capture__ is set to __Targeted Camera__ or __Texture Sampling__.| -| __Tag__ |The tag of the camera to record. Available when __Capture__ is set to __Targeted Camera__ and __Source__ is __TaggedCamera__.| -| __Output Resolution__ |The dimensions of the video recording. This property is available only for applicable __Capture__ choices.| -| __Include UI__ |Check to include UI GameObjects in the recording.| -| __Flip Vertical__ |Check to flip the images in the output to make it upside-down. Use this property to restore up and down when your system generates video that is flipped vertically.| - - -## GIF Recorder properties - -The __GIF Recorder__ generates an animated GIF file. - -|Property:|Function:| -|:---|:---| -| __Capture__ |The input for the recording.| -|     _Targeted Camera_ |Record the frames captured by a specific camera, even if it is not used in the Game View.| -|    _ Render Texture Asset_ |Record the frames that are rendered in a Render Texture.| -|     _Texture Sampling_ |When capturing, supersample the Source camera generate anti-aliased images in the recording. Use this capture method when the Rendering Resolution has the same or higher resolution than the __Output Resolution__. | -| __Source__ |The camera to use for recording. Choose __Active Cameras__, __Main Camera__, or __Tagged Camera__. The __Main Camera__ option specifies the camera with the MainCamera tag. Available when __Capture__ is set to __Targeted Camera__ or __Texture Sampling__.| -| __Tag__ |The tag of the camera to record. Available when __Capture__ is set to __Targeted Camera__ and __Source__ is __TaggedCamera__.| -| __Output Resolution__ |The dimensions of the video recording. This property is available only for applicable __Capture__ choices.| -| __Aspect Ratio__ |The width:height ratio to format the output to.| -| __Include UI__ |Check to include UI GameObjects in the recording.| -| __Flip Vertical__ |Check to flip the images in the output to make it upside-down. Use this property to restore up and down when your system generates video that is flipped vertically.| -| __Encoding__ |Properties for controlling the quality and size of the GIF output.| -|     _Num Colors_ |The number of colors to use in the GIF palette table. The maximum is 256 colors. Specify a smaller palette to reduce the size of the GIF file while reducing image quality.| -|     _Keyframe Interval_ |The number of frames that share the same color palette. Increase this number to reduce the size of the GIF file while reducing image quality.| -|     _Max Tasks_ |The number of frames to encode in parallel. Increasing this number may reduce the length of time Unity takes to encode the GIF.| - - diff --git a/Documentation~/com.unity.recorder.md.meta b/Documentation~/com.unity.recorder.md.meta deleted file mode 100644 index be2a7a7..0000000 --- a/Documentation~/com.unity.recorder.md.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 993bc3163d4f7484bb478740bd30596b -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Documentation~/index.md b/Documentation~/index.md new file mode 100644 index 0000000..329ddec --- /dev/null +++ b/Documentation~/index.md @@ -0,0 +1,38 @@ +# Unity Recorder User Manual + +![Unity Recorder](Images/RecorderSplash.png) + +Use the Unity Recorder package to capture and save data during [Play mode ](https://docs.unity3d.com/Manual/GameView.html). For example, you can capture gameplay or a cinematic and save it as an .mp4 file. + +>[!NOTE] +>You can only use the Recorder in the Unity Editor. It does not work in standalone Unity Players or builds. + +To capture Play-mode data you need to set up Recorders. Each Recorder controls a single recording, and specifies details such as the data source, resolution, and output format. You can use more than one Recorder at the same time to capture Play-mode data. + +<a name="RecorderTypes"></a> +You can set up the following types of Recorder: + +* **Animation Clip Recorder:** generates an animation clip in .anim format. + +* **Movie Recorder:** generates a video in .mp4 or .webm format. + +* **Image Sequence Recorder:** generates a sequence of image files in .jpeg, .png, or .exr (OpenEXR) format. + +* **GIF Animation Recorder:** generates an animated .gif file. + +* **Audio Recorder:** generates an audio clip in .wav format. + +## Recording from Timeline + +The Unity Recorder also supports [Timeline](https://docs.unity3d.com/Manual/TimelineSection.html). You can use Recorder tracks and clips to trigger recording sessions from Timeline instances. See [Recording from a Timeline Track](RecordingTimelineTrack.md) for details. + +## Enabling legacy Recorders + +As of version 1.0, Unity Recorder uses new, updated Recorders that take advantage of Unity Editor features and are more stable than previous versions. + +If you're upgrading from a pre-1.0 version of Unity Recorder, +or supporting legacy content, you can toggle the legacy Recorders on from Unity's main menu (**Window > General > Recorder > Options > Show Legacy Recorders**). + + + + diff --git a/Editor/Sources/Options.cs b/Editor/Sources/Options.cs index db78e40..9d3d9c7 100644 --- a/Editor/Sources/Options.cs +++ b/Editor/Sources/Options.cs @@ -64,6 +64,11 @@ internal static int selectedRecorderIndex set { EditorPrefs.SetInt(k_SelectedRecorderIndex, value); } } + // This variable is used to select how we capture the final image from the + // render pipeline, with the legacy render pipeline this variable is set to false + // with the scriptable render pipeline the CameraCaptureBride + // inside the SRP will reflection to set this variable to true, this will in turn + // enable using the CameraInput inputStrategy CaptureCallbackInputStrategy public static bool useCameraCaptureCallbacks = false; [MenuItem(k_VerboseModeMenuItem, false, RecorderWindow.MenuRootIndex + 200)] diff --git a/Editor/Sources/RecorderController.cs b/Editor/Sources/RecorderController.cs index 7807ab8..c156a7a 100644 --- a/Editor/Sources/RecorderController.cs +++ b/Editor/Sources/RecorderController.cs @@ -86,7 +86,7 @@ public bool StartRecording() var errors = new List<string>(); - if (recorderSetting.ValidityCheck(errors)) + if (!recorderSetting.ValidityCheck(errors)) { foreach (var error in errors) Debug.LogWarning(recorderSetting.name + ": " + error); diff --git a/Editor/Sources/Recorders/_Inputs/Camera/CameraInputSettings.cs b/Editor/Sources/Recorders/_Inputs/Camera/CameraInputSettings.cs index 71aa3f8..59f3eee 100644 --- a/Editor/Sources/Recorders/_Inputs/Camera/CameraInputSettings.cs +++ b/Editor/Sources/Recorders/_Inputs/Camera/CameraInputSettings.cs @@ -17,8 +17,13 @@ internal static bool IsHDRPAvailable() { // For backward compatibility with unity version < 19.1 // Use reflection to determine if hdrp is available +#if UNITY_2019_3_OR_NEWER + const string ClassName = "UnityEngine.Rendering.HighDefinition.HDRenderPipeline"; +#else const string ClassName = "UnityEngine.Experimental.Rendering.HDPipeline.HDRenderPipeline"; +#endif const string editorDllName = "Unity.RenderPipelines.HighDefinition.Runtime"; + var hdrpRenderPipeline = Type.GetType(ClassName + ", " + editorDllName ); return (hdrpRenderPipeline != null); } diff --git a/Editor/Sources/Recorders/_Inputs/GameViewSize.cs b/Editor/Sources/Recorders/_Inputs/GameViewSize.cs index fd8bbc1..9679908 100644 --- a/Editor/Sources/Recorders/_Inputs/GameViewSize.cs +++ b/Editor/Sources/Recorders/_Inputs/GameViewSize.cs @@ -12,8 +12,8 @@ static class GameViewSize const int miscSize = 1; // Used when no main GameView exists (ex: batchmode) #if UNITY_2019_3_OR_NEWER - static Type s_GameViewType = Type.GetType("UnityEditor.PreviewEditorWindow,UnityEditor"); - static string s_GetGameViewFuncName = "GetMainPreviewWindow"; + static Type s_GameViewType = Type.GetType("UnityEditor.PlayModeView,UnityEditor"); + static string s_GetGameViewFuncName = "GetMainPlayModeView"; #else static Type s_GameViewType = Type.GetType("UnityEditor.GameView,UnityEditor"); static string s_GetGameViewFuncName = "GetMainGameView"; @@ -21,6 +21,12 @@ static class GameViewSize static EditorWindow GetMainGameView() { var getMainGameView = s_GameViewType.GetMethod(s_GetGameViewFuncName, BindingFlags.NonPublic | BindingFlags.Static); + if (getMainGameView == null) + { + Debug.LogError(string.Format("Can't find the main Game View : {0} function was not found in {1} type ! Did API change ?", + s_GetGameViewFuncName, s_GameViewType)); + return null; + } var res = getMainGameView.Invoke(null, null); return (EditorWindow)res; } diff --git a/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/Linux/libfccore.so.meta b/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/Linux/libfccore.so.meta index d9343be..0b232ab 100644 --- a/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/Linux/libfccore.so.meta +++ b/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/Linux/libfccore.so.meta @@ -9,6 +9,7 @@ PluginImporter: isPreloaded: 0 isOverridable: 1 isExplicitlyReferenced: 0 + validateReferences: 1 platformData: - first: '': Any @@ -58,7 +59,7 @@ PluginImporter: second: enabled: 0 settings: - CPU: x86_64 + CPU: AnyCPU - first: Standalone: OSXUniversal second: diff --git a/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/fccore.bundle.meta b/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/fccore.bundle.meta index 4592ef3..5ec22b9 100644 --- a/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/fccore.bundle.meta +++ b/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/fccore.bundle.meta @@ -1,115 +1,114 @@ fileFormatVersion: 2 guid: 095a7aaa840de2c40b28e8f46c6527bd folderAsset: yes -timeCreated: 1494431117 -licenseType: Store PluginImporter: + externalObjects: {} serializedVersion: 2 iconMap: {} executionOrder: {} + defineConstraints: [] isPreloaded: 0 isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 platformData: - data: - first: - '': Any - second: - enabled: 0 - settings: - Exclude Editor: 0 - Exclude Linux: 0 - Exclude Linux64: 0 - Exclude LinuxUniversal: 0 - Exclude OSXIntel: 1 - Exclude OSXIntel64: 0 - Exclude OSXUniversal: 0 - Exclude Win: 0 - Exclude Win64: 0 - data: - first: - Any: - second: - enabled: 1 - settings: {} - data: - first: - Editor: Editor - second: - enabled: 1 - settings: - CPU: x86_64 - DefaultValueInitialized: true - OS: OSX - data: - first: - Facebook: Win - second: - enabled: 0 - settings: - CPU: None - data: - first: - Facebook: Win64 - second: - enabled: 1 - settings: - CPU: AnyCPU - data: - first: - Standalone: Linux - second: - enabled: 1 - settings: - CPU: None - data: - first: - Standalone: Linux64 - second: - enabled: 1 - settings: - CPU: x86_64 - data: - first: - Standalone: LinuxUniversal - second: - enabled: 1 - settings: - CPU: AnyCPU - data: - first: - Standalone: OSXIntel - second: - enabled: 0 - settings: - CPU: None - data: - first: - Standalone: OSXIntel64 - second: - enabled: 1 - settings: - CPU: AnyCPU - data: - first: - Standalone: OSXUniversal - second: - enabled: 1 - settings: - CPU: x86_64 - data: - first: - Standalone: Win - second: - enabled: 1 - settings: - CPU: None - data: - first: - Standalone: Win64 - second: - enabled: 1 - settings: - CPU: AnyCPU + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 1 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: OSX + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: userData: assetBundleName: assetBundleVariant: diff --git a/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/fccore.dll.meta b/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/fccore.dll.meta index 2390acb..76795c9 100644 --- a/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/fccore.dll.meta +++ b/Editor/Sources/Recorders/_Legacy/FrameCapturer/Plugins/x86_64/fccore.dll.meta @@ -73,7 +73,7 @@ PluginImporter: second: enabled: 0 settings: - CPU: x86_64 + CPU: AnyCPU - first: Standalone: LinuxUniversal second: diff --git a/Editor/Timeline/RecorderPlayableBehaviour.cs b/Editor/Timeline/RecorderPlayableBehaviour.cs index 9f93647..124e70c 100644 --- a/Editor/Timeline/RecorderPlayableBehaviour.cs +++ b/Editor/Timeline/RecorderPlayableBehaviour.cs @@ -1,3 +1,4 @@ +using UnityEditor.Recorder.Input; using UnityEngine.Playables; namespace UnityEditor.Recorder.Timeline @@ -56,6 +57,12 @@ public override void OnBehaviourPlay(Playable playable, FrameData info) // Assumption: OnPlayStateChanged( PlayState.Playing ) ONLY EVER CALLED ONCE for this type of playable. m_PlayState = PlayState.Playing; + // case FTV-251 the Options.useCameraCaptureCallbacks is enabled + // too late for the RecorderClip when recording from the timeline + // to workaround this problem also enable the + // CaptureCallbackInputStrategy if HDRP is available + + Options.useCameraCaptureCallbacks = CameraInputSettings.IsHDRPAvailable(); session.BeginRecording(); } diff --git a/package.json b/package.json index 8513d3e..4821ef4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.unity.recorder", "displayName": "Unity Recorder", - "version": "2.0.2-preview.3", + "version": "2.0.3-preview.1", "unity": "2018.3", "unityRelease": "4f1", "dependencies": { @@ -21,7 +21,7 @@ "repository": { "type": "git", "url": "git@github.cds.internal.unity3d.com:unity/com.unity.recorder.git", - "revision": "9eefd0a4f9909121cd885096cb8b720fd9f41823" + "revision": "f819f061a194fc35c89048447ec5b68c2f3e28f7" }, "samples": [ {