작업 조건 분석 기능 개발

This commit is contained in:
정영민
2025-03-10 16:42:23 +09:00
parent 840638c6e3
commit f2029fd8c9
2988 changed files with 569938 additions and 2342 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 15dfaaef31058bf4db2a67395455bd28
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 94f9e072b7bf8b4419ce9835aa43a5c5
folderAsset: yes
timeCreated: 1563637382
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
{
"name": "RenderHeads.AVProMovieCapture.Demos",
"references": [ "RenderHeads.AVProMovieCapture.Runtime" ],
"includePlatforms": [ ]
}

View File

@@ -0,0 +1,6 @@
fileFormatVersion: 2
guid: 8426b3d3473738a489355e04a0882d0b
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 76c2bb32661761d40b39ce23b8dbb860
folderAsset: yes
DefaultImporter:
userData:

View File

@@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 764908f8332f02340b72e3010f4a3a2e
timeCreated: 1606868176
licenseType: Store
AudioImporter:
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 0
preloadAudioData: 1
loadInBackground: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bec3644980842774db12d11690b0d916
AudioImporter:
serializedVersion: 4
format: -1
quality: .5
stream: 1
3D: 0
forceToMono: 0
useHardware: 0
loopable: 0

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 1
guid: 1ed2bddd186bb264eb42d8ac765accd4
AudioImporter:
importerVersion: 4
format: -1
quality: -1
3d: 0
forceToMono: 0
stream: 1
useHardware: 0

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: bc925b9c371f92e40bf7355ee0dc2536

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 1
guid: eb821627fb1a0c044a6fd7a6dabe3147

View File

@@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 1102003ee10456942bffb2b369d6a7b8
TrueTypeFontImporter:
serializedVersion: 2
fontSize: 16
fontColor: {r: 1, g: 1, b: 1, a: 1}
forceTextureCase: -2
renderMode: 0
style: 0
includeFontData: 1
use2xBehaviour: 0
fontNames: []
customCharacters:

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

View File

@@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 41dc463a61e06694b85593cb70e17848
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 32
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

View File

@@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 89756d2e84d7799499b64043123ddf38
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 32
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

View File

@@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 5fa7bcd58e1876e41952c9349da60879
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 32
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

View File

@@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: b6b9f1741e3bb6241aab55422ae1f133
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 32
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

View File

@@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: ccce2d09cdddb2d4da068267090c1548
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 32
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

View File

@@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: 7fbbedb31432e4d408b2e3fbd0dbd862
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 32
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

View File

@@ -0,0 +1,47 @@
fileFormatVersion: 2
guid: e8b5fb4ca0fdd2c4eadc7cbe065543a4
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 32
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 206f513b60f950c4793035333d2f95d5
folderAsset: yes
timeCreated: 1583523317
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,76 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: DefaultDemo
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _GLOSSYREFLECTIONS_OFF _SPECULARHIGHLIGHTS_OFF
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 1
- _GlossyReflections: 0
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 0
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f663b5cc3e742024b902055797e3957c
timeCreated: 1583523326
licenseType: Store
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 7e35a0c5b2541b24983f361278c74f91
folderAsset: yes
DefaultImporter:
userData:

View File

@@ -0,0 +1,111 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &102934
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 402934}
- component: {fileID: 3302934}
- component: {fileID: 6502934}
- component: {fileID: 2302934}
- component: {fileID: 5492826}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &402934
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 102934}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &2302934
MeshRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 102934}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: f663b5cc3e742024b902055797e3957c, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &3302934
MeshFilter:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 102934}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!54 &5492826
Rigidbody:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 102934}
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 1
--- !u!65 &6502934
BoxCollider:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 102934}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 102934}
m_IsPrefabParent: 1

View File

@@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: 08f87e0910df635498ae10bedcb85aab
NativeFormatImporter:
userData:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 2efc957cf89b49b41a927320a690604b
folderAsset: yes
timeCreated: 1563636592
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 1
guid: aac421df044c8404b9bd40c84487a589

View File

@@ -0,0 +1,364 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 8
m_Fog: 1
m_FogColor: {r: 0, g: 0, b: 0, a: 1}
m_FogMode: 1
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 30
m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 8
m_Resolution: 1
m_BakeResolution: 50
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 1
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 0
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 1
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_LightingDataAsset: {fileID: 0}
m_ShadowMaskMode: 2
--- !u!1 &11
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 18}
- component: {fileID: 20}
- component: {fileID: 37}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &18
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 11}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!20 &20
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 11}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.01
far clip plane: 300
field of view: 60
orthographic: 0
orthographic size: 100
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_AllowMSAA: 1
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!81 &37
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 11}
m_Enabled: 1
--- !u!196 &44
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666666
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &1130807521
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1130807525}
- component: {fileID: 1130807524}
- component: {fileID: 1130807523}
- component: {fileID: 1130807522}
m_Layer: 0
m_Name: TextureCapture
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1130807522
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1130807521}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: de5a7a2f274da2340a2de24a1fffee45, type: 3}
m_Name:
m_EditorClassIdentifier:
_encoderHintsWindows:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 1
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_encoderHintsMacOS:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 1
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_encoderHintsIOS:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 1
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_captureKey: 0
_isRealTime: 0
_persistAcrossSceneLoads: 0
_startTrigger: 0
_startDelay: 0
_startDelaySeconds: 0
_stopMode: 0
_stopFrames: 0
_stopSeconds: 0
_videoCodecPriorityWindows:
- H264
- HEVC
- Lagarith Lossless Codec
- Uncompressed
- x264vfw - H.264/MPEG-4 AVC codec
- Xvid MPEG-4 Codec
_videoCodecPriorityMacOS:
- H264
- HEVC
- Apple ProRes 422
- Apple ProRes 4444
_audioCodecPriorityWindows:
- AAC
- Uncompressed
_audioCodecPriorityMacOS:
- AAC
- FLAC
- Apple Lossless
- Linear PCM
- Uncompresssed
_frameRate: 30
_timelapseScale: 1
_downScale: 1
_maxVideoSize: {x: 0, y: 0}
_forceVideoCodecIndexWindows: -1
_forceVideoCodecIndexMacOS: 0
_forceVideoCodecIndexIOS: 0
_forceAudioCodecIndexWindows: -1
_forceAudioCodecIndexMacOS: 0
_forceAudioCodecIndexIOS: 0
_flipVertically: 0
_forceGpuFlush: 0
_useWaitForEndOfFrame: 1
_logCaptureStartStop: 1
_audioCaptureSource: 1
_unityAudioCapture: {fileID: 0}
_forceAudioInputDeviceIndex: 0
_outputTarget: 0
_outputFolderType: 0
_outputFolderPath: Captures
_filenamePrefix: TextureCapture
_appendFilenameTimestamp: 1
_allowManualFileExtension: 0
_filenameExtension: mp4
_namedPipePath: \\.\pipe\test_pipe
_imageSequenceStartFrame: 0
_imageSequenceZeroDigits: 6
_imageSequenceFormatWindows: 0
_imageSequenceFormatMacOS: 0
_imageSequenceFormatIOS: 0
_renderResolution: 14
_renderSize: {x: 1, y: 1}
_renderAntiAliasing: -1
_useMotionBlur: 0
_motionBlurSamples: 0
_motionBlurCameras: []
_motionBlur: {fileID: 0}
_allowVSyncDisable: 1
_supportTextureRecreate: 0
_minimumDiskSpaceMB: -1
_manualUpdate: 0
--- !u!114 &1130807523
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1130807521}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1f519d13df72fce439c800f34395deb7, type: 3}
m_Name:
m_EditorClassIdentifier:
_shader: {fileID: 4800000, guid: f3d2361de25fd894da4e336b857ff62d, type: 3}
_textureWidth: 1024
_textureHeight: 1024
_movieCapture: {fileID: 1130807522}
--- !u!114 &1130807524
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1130807521}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ca3e27221be35d41a4ff608f4ef327e, type: 3}
m_Name:
m_EditorClassIdentifier:
_movieCapture: {fileID: 1130807522}
_showUI: 1
_whenRecordingAutoHideUI: 0
_guiSkin: {fileID: 11400000, guid: eb821627fb1a0c044a6fd7a6dabe3147, type: 2}
--- !u!4 &1130807525
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1130807521}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4c41bfde9dbb0a3449f96fdffb67a8e2

View File

@@ -0,0 +1,368 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 8
m_Fog: 1
m_FogColor: {r: 0, g: 0, b: 0, a: 1}
m_FogMode: 1
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 30
m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 8
m_Resolution: 1
m_BakeResolution: 50
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 1
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 0
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 1
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_LightingDataAsset: {fileID: 0}
m_ShadowMaskMode: 2
--- !u!1 &11
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 18}
- component: {fileID: 20}
- component: {fileID: 37}
- component: {fileID: 12}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &12
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 11}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 98a052fe19e52c048865e758e854f078, type: 3}
m_Name:
m_EditorClassIdentifier:
_skin: {fileID: 11400000, guid: eb821627fb1a0c044a6fd7a6dabe3147, type: 2}
_prefab: {fileID: 1774798094}
_webcamResolutionWidth: 640
_webcamResolutionHeight: 480
_webcamFrameRate: 30
--- !u!4 &18
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 11}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!20 &20
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 11}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.08088237, g: 0.08088237, b: 0.08088237, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.01
far clip plane: 300
field of view: 60
orthographic: 0
orthographic size: 100
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_AllowMSAA: 1
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!81 &37
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 11}
m_Enabled: 1
--- !u!196 &44
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666666
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &1774798094
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1774798102}
- component: {fileID: 1774798097}
- component: {fileID: 1774798095}
m_Layer: 0
m_Name: WebcamCapturePrefab
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1774798095
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1774798094}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ea41b0330d3eea243b45fd4355c3080c, type: 3}
m_Name:
m_EditorClassIdentifier:
_encoderHintsWindows:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 1
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_encoderHintsMacOS:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 1
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_encoderHintsIOS:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 1
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_captureKey: 0
_isRealTime: 1
_persistAcrossSceneLoads: 0
_startTrigger: 0
_startDelay: 0
_startDelaySeconds: 0
_stopMode: 0
_stopFrames: 0
_stopSeconds: 0
_videoCodecPriorityWindows:
- H264
- HEVC
- Lagarith Lossless Codec
- Uncompressed
- x264vfw - H.264/MPEG-4 AVC codec
- Xvid MPEG-4 Codec
_videoCodecPriorityMacOS:
- H264
- HEVC
- Apple ProRes 422
- Apple ProRes 4444
_audioCodecPriorityWindows:
- AAC
- Uncompressed
_audioCodecPriorityMacOS:
- AAC
- FLAC
- Apple Lossless
- Linear PCM
- Uncompresssed
_frameRate: 30
_timelapseScale: 1
_frameUpdateMode: 0
_downScale: 1
_maxVideoSize: {x: 0, y: 0}
_forceVideoCodecIndexWindows: -1
_forceVideoCodecIndexMacOS: 0
_forceVideoCodecIndexIOS: 0
_forceAudioCodecIndexWindows: -1
_forceAudioCodecIndexMacOS: 0
_forceAudioCodecIndexIOS: 0
_flipVertically: 0
_forceGpuFlush: 0
_useWaitForEndOfFrame: 1
_logCaptureStartStop: 1
_audioCaptureSource: 0
_unityAudioCapture: {fileID: 0}
_forceAudioInputDeviceIndex: 0
_manualAudioSampleRate: 48000
_manualAudioChannelCount: 2
_outputTarget: 0
_outputFolderType: 0
_outputFolderPath: Captures
_filenamePrefix: Webcam
_appendFilenameTimestamp: 1
_allowManualFileExtension: 0
_filenameExtension: mp4
_namedPipePath: \\.\pipe\test_pipe
_imageSequenceStartFrame: 0
_imageSequenceZeroDigits: 6
_imageSequenceFormatWindows: 0
_imageSequenceFormatMacOS: 0
_imageSequenceFormatIOS: 0
_renderResolution: 18
_renderSize: {x: 1, y: 1}
_renderAntiAliasing: -1
_useMotionBlur: 0
_motionBlurSamples: 16
_motionBlurCameras: []
_motionBlur: {fileID: 0}
_allowVSyncDisable: 1
_supportTextureRecreate: 0
_minimumDiskSpaceMB: -1
_manualUpdate: 0
--- !u!114 &1774798097
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1774798094}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ca3e27221be35d41a4ff608f4ef327e, type: 3}
m_Name:
m_EditorClassIdentifier:
_movieCapture: {fileID: 1774798095}
_showUI: 0
_whenRecordingAutoHideUI: 0
_guiSkin: {fileID: 11400000, guid: eb821627fb1a0c044a6fd7a6dabe3147, type: 2}
--- !u!4 &1774798102
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1774798094}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6ba0f3c85855c684db1ca2bfaa26058a

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 092608d1cce5b7a4c961385358838689

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: 12b616342e078604a85b24def8314313
DefaultImporter:
userData:

View File

@@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: a59b6804fb7f20947abe5bbece9bb4f1
DefaultImporter:
userData:

View File

@@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: d9796adb67791004f8de331385c2ebe5
DefaultImporter:
userData:

View File

@@ -0,0 +1,798 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 8
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 8
m_Resolution: 2
m_BakeResolution: 40
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 3
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_LightingDataAsset: {fileID: 0}
m_ShadowMaskMode: 2
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &177080796
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 177080798}
- component: {fileID: 177080797}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &177080797
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 177080796}
m_Enabled: 1
serializedVersion: 8
m_Type: 1
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &177080798
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 177080796}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &648885771
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 648885772}
- component: {fileID: 648885775}
- component: {fileID: 648885774}
- component: {fileID: 648885773}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &648885772
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 648885771}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 791625166}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &648885773
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 648885771}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!136 &648885774
CapsuleCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 648885771}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.5
m_Height: 2
m_Direction: 1
m_Center: {x: 0, y: 0, z: 0}
--- !u!33 &648885775
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 648885771}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &791625161
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 791625166}
- component: {fileID: 791625165}
- component: {fileID: 791625162}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &791625162
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 791625161}
m_Enabled: 1
--- !u!20 &791625165
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 791625161}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.1
far clip plane: 100
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_AllowMSAA: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!4 &791625166
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 791625161}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 648885772}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &935719015
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 935719017}
- component: {fileID: 935719016}
m_Layer: 0
m_Name: Demo
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &935719016
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 935719015}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d8148657fef7dab4e8414216aaa44cf8, type: 3}
m_Name:
m_EditorClassIdentifier:
_audioObjects:
- {fileID: 1884010177}
_audioSources: []
--- !u!4 &935719017
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 935719015}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &993218520
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 993218522}
- component: {fileID: 993218521}
m_Layer: 0
m_Name: Camera-PIP
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!20 &993218521
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 993218520}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 0.2
height: 0.2
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 5
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_AllowMSAA: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!4 &993218522
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 993218520}
m_LocalRotation: {x: 0.1993598, y: -0, z: -0, w: 0.9799264}
m_LocalPosition: {x: 0, y: 1.28, z: -2.92}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 22.999, y: 0, z: 0}
--- !u!1 &1140585883
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1140585885}
- component: {fileID: 1140585884}
- component: {fileID: 1140585887}
- component: {fileID: 1140585886}
m_Layer: 0
m_Name: Capture
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1140585884
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1140585883}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2f452da2383e6e24991a212542347f4b, type: 3}
m_Name:
m_EditorClassIdentifier:
_encoderHintsWindows:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 0
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_encoderHintsMacOS:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 1
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_encoderHintsIOS:
videoHints:
averageBitrate: 0
maximumBitrate: 0
quality: 1
keyframeInterval: 0
allowFastStartStreamingPostProcess: 1
supportTransparency: 0
useHardwareEncoding: 1
imageHints:
quality: 0.85
supportTransparency: 0
_captureKey: 0
_isRealTime: 1
_persistAcrossSceneLoads: 0
_startTrigger: 1
_startDelay: 0
_startDelaySeconds: 0
_stopMode: 3
_stopFrames: 0
_stopSeconds: 12
_videoCodecPriorityWindows:
- HEVC
- H264
- Lagarith Lossless Codec
- Uncompressed
- x264vfw - H.264/MPEG-4 AVC codec
- Xvid MPEG-4 Codec
_videoCodecPriorityMacOS:
- H264
- HEVC
- Apple ProRes 422
- Apple ProRes 4444
_audioCodecPriorityWindows:
- AAC
- Uncompressed
_audioCodecPriorityMacOS:
- AAC
- FLAC
- Apple Lossless
- Linear PCM
- Uncompresssed
_frameRate: 30
_timelapseScale: 1
_frameUpdateMode: 0
_downScale: 1
_maxVideoSize: {x: 0, y: 0}
_forceVideoCodecIndexWindows: -1
_forceVideoCodecIndexMacOS: 0
_forceVideoCodecIndexIOS: 0
_forceAudioCodecIndexWindows: -1
_forceAudioCodecIndexMacOS: 0
_forceAudioCodecIndexIOS: 0
_flipVertically: 0
_forceGpuFlush: 0
_useWaitForEndOfFrame: 1
_logCaptureStartStop: 1
_audioCaptureSource: 0
_unityAudioCapture: {fileID: 0}
_forceAudioInputDeviceIndex: 0
_manualAudioSampleRate: 48000
_manualAudioChannelCount: 4
_outputTarget: 0
_outputFolderType: 0
_outputFolderPath: Captures
_filenamePrefix: proxy360
_appendFilenameTimestamp: 0
_allowManualFileExtension: 0
_filenameExtension: mp4
_namedPipePath: \\.\pipe\test_pipe
_imageSequenceStartFrame: 0
_imageSequenceZeroDigits: 6
_imageSequenceFormatWindows: 0
_imageSequenceFormatMacOS: 0
_imageSequenceFormatIOS: 0
_renderResolution: 15
_renderSize: {x: 1, y: 1}
_renderAntiAliasing: -1
_useMotionBlur: 0
_motionBlurSamples: 16
_motionBlurCameras: []
_motionBlur: {fileID: 0}
_allowVSyncDisable: 1
_supportTextureRecreate: 0
_minimumDiskSpaceMB: -1
_cameraSelector: {fileID: 0}
_cubemapResolution: 256
_cubemapDepth: 24
_supportGUI: 0
_supportCameraRotation: 0
_onlyLeftRightRotation: 0
_render180Degrees: 0
_stereoRendering: 0
_ipd: 0.064
_camera: {fileID: 791625165}
--- !u!4 &1140585885
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1140585883}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -1.243124, y: -0.125, z: 0.70754045}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1140585886
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1140585883}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d496180929275434c90b945a345cbaa2, type: 3}
m_Name:
m_EditorClassIdentifier:
_capture: {fileID: 1140585884}
_order: 3
_format: 1
_filename: output.wav
_bufferCount: 16
--- !u!114 &1140585887
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1140585883}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ca3e27221be35d41a4ff608f4ef327e, type: 3}
m_Name:
m_EditorClassIdentifier:
_movieCapture: {fileID: 1140585884}
_showUI: 1
_whenRecordingAutoHideUI: 0
_guiSkin: {fileID: 11400000, guid: eb821627fb1a0c044a6fd7a6dabe3147, type: 2}
--- !u!1 &1884010172
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1884010177}
- component: {fileID: 1884010176}
- component: {fileID: 1884010175}
- component: {fileID: 1884010174}
- component: {fileID: 1884010173}
m_Layer: 0
m_Name: AudioObject-Insect1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!33 &1884010173
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1884010172}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1884010174
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1884010172}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!114 &1884010175
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1884010172}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7fb5927f10eb767468d3bb55a913ed3b, type: 3}
m_Name:
m_EditorClassIdentifier:
_sink: {fileID: 1140585886}
_listener: {fileID: 791625166}
--- !u!82 &1884010176
AudioSource:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1884010172}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 8300000, guid: 764908f8332f02340b72e3010f4a3a2e, type: 3}
m_PlayOnAwake: 1
m_Volume: 0.398
m_Pitch: 1
Loop: 1
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 2
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- serializedVersion: 2
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 0.5
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
--- !u!4 &1884010177
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1884010172}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 2}
m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 53aebdd36b29c09468b985f749fa0d2f
timeCreated: 1606666929
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 2693fb63d67b5cd4ba2b8e89fe16bcd1
folderAsset: yes
DefaultImporter:
userData:

View File

@@ -0,0 +1,79 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Demos
{
public class AmbisonicAudioDemo : MonoBehaviour
{
[SerializeField] Transform[] _audioObjects = null;
[SerializeField] AudioSource[] _audioSources = null;
struct Instance
{
float x, y, z;
float radius;
}
private int index;
//private List<Instance> _instances = new List<Instance>(4);
/*void Start()
{
foreach (Transform t in _audioObjects)
{
Instance instance = new Instance();
instance.radius = Random.Range(0.5f, 2f);
instance.x = Random.Range(0f, 100f);
instance.y = Random.Range(0f, 100f);
instance.z = Random.Range(0f, 100f);
_instances.Add(instance);
}
}*/
void Update()
{
float[] samples = new float[4];
foreach (AudioSource audio in _audioSources)
{
audio.GetOutputData(samples, 0);
float sample = Mathf.Abs(samples[2]);
sample = Mathf.Sqrt(sample);
float scale = audio.gameObject.transform.localScale.x;
//audio.GetSpectrumData(samples, 0, FFTWindow.Hanning);
scale = 0.15f + Mathf.Lerp(scale, sample, Time.deltaTime * 20f) * 0.85f;
audio.gameObject.transform.localScale = Vector3.one * scale;
}
int index = 0;
foreach (Transform t in _audioObjects)
{
//Vector3 v = axes[index % axes.Length];
//t.RotateAround(Vector3.zero, Vector3.up, 40 * Time.deltaTime);
//Quaternion q = Quaternion.Euler(0f, Time.timeSinceLevelLoad * 50f, 0f);
//Matrix4x4.TRS(Vector3)
float time = Time.timeSinceLevelLoad + index * 1.321f;
float tt = Mathf.PingPong(Mathf.Sin(time * 2.23f) + 1f, 2f) / 2f;
float r = Mathf.Lerp(0.5f, 3f, tt);
float x = Mathf.Sin(time * 1f) * r;
float z = Mathf.Cos(time * 1.13f) * r;
float y = Mathf.Sin(time * 1.23f) * 1f;
//Vector3 v = t.position.normalized * r;
t.position = new Vector3(x, y, z);
//t.position = new Vector3(t.position.x, y, t.position.z);
index++;
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: d8148657fef7dab4e8414216aaa44cf8
timeCreated: 1606667340
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,228 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Demos
{
public class ScreenCaptureDemo : MonoBehaviour
{
[SerializeField] AudioClip _audioBG = null;
[SerializeField] AudioClip _audioHit = null;
[SerializeField] float _speed = 1.0f;
[SerializeField] CaptureBase _capture = null;
[SerializeField] GUISkin _guiSkin = null;
[SerializeField] bool _spinCamera = true;
// State
private float _timer;
private List<FileWritingHandler> _fileWritingHandlers = new List<FileWritingHandler>(4);
private IEnumerator Start()
{
#if UNITY_IOS
Application.targetFrameRate = 60;
#endif
// Play music track
if (_audioBG != null)
{
// AudioSource.PlayClipAtPoint(_audioBG, Vector3.zero);
AudioSource source = gameObject.AddComponent<AudioSource>();
source.clip = _audioBG;
source.loop = true;
source.Play();
}
if (_capture != null)
{
_capture.BeginFinalFileWritingAction += OnBeginFinalFileWriting;
_capture.CompletedFileWritingAction += OnCompleteFinalFileWriting;
#if (UNITY_STANDALONE_OSX || UNITY_IOS || UNITY_ANDROID) && !UNITY_EDITOR
CaptureBase.PhotoLibraryAccessLevel photoLibraryAccessLevel = CaptureBase.PhotoLibraryAccessLevel.AddOnly;
// If we're trying to write to the photo library, make sure we have permission
if (_capture.OutputFolder == CaptureBase.OutputPath.PhotoLibrary ||
_capture.OutputFolder == CaptureBase.OutputPath.RelativeToVideos ||
_capture.OutputFolder == CaptureBase.OutputPath.RelativeToPictures)
{
// Album creation (album name is taken from the output folder path) requires read write access.
if (_capture.OutputFolderPath != null && _capture.OutputFolderPath.Length > 0)
photoLibraryAccessLevel = CaptureBase.PhotoLibraryAccessLevel.ReadWrite;
switch (CaptureBase.HasUserAuthorisationToAccessPhotos(photoLibraryAccessLevel))
{
case CaptureBase.PhotoLibraryAuthorisationStatus.Authorised:
// All good, nothing to do
break;
case CaptureBase.PhotoLibraryAuthorisationStatus.Unavailable:
Debug.LogWarning("The photo library is unavailable, will use RelativeToPersistentData instead");
_capture.OutputFolder = CaptureBase.OutputPath.RelativeToPersistentData;
break;
case CaptureBase.PhotoLibraryAuthorisationStatus.Denied:
// User has denied access, change output path
Debug.LogWarning("User has denied access to the photo library, will use RelativeToPersistentData instead");
_capture.OutputFolder = CaptureBase.OutputPath.RelativeToPersistentData;
break;
case CaptureBase.PhotoLibraryAuthorisationStatus.NotDetermined:
// Need to ask permission
yield return CaptureBase.RequestUserAuthorisationToAccessPhotos(photoLibraryAccessLevel);
// Nested switch, everbodies favourite
switch (CaptureBase.HasUserAuthorisationToAccessPhotos(photoLibraryAccessLevel))
{
case CaptureBase.PhotoLibraryAuthorisationStatus.Authorised:
// All good, nothing to do
break;
case CaptureBase.PhotoLibraryAuthorisationStatus.Denied:
// User has denied access, change output path
Debug.LogWarning("User has denied access to the photo library, will use RelativeToPersistentData instead");
_capture.OutputFolder = CaptureBase.OutputPath.RelativeToPersistentData;
break;
case CaptureBase.PhotoLibraryAuthorisationStatus.NotDetermined:
// We were unable to request access for some reason, check the logs for any error information
Debug.LogWarning("Authorisation to access the photo library is still undetermined, will use RelativeToPersistentData instead");
_capture.OutputFolder = CaptureBase.OutputPath.RelativeToPersistentData;
break;
}
break;
}
}
#endif
#if UNITY_EDITOR_OSX || (!UNITY_EDITOR && (UNITY_STANDALONE_OSX || UNITY_IOS || UNITY_ANDROID))
// Make sure we're authorised for using the microphone. On iOS the OS will forcibly
// close the application if authorisation has not been granted. Make sure the
// "Microphone Usage Description" field has been filled in the player settings.
// Todo: handle late selection of microphone
if (_capture.AudioCaptureSource == AudioCaptureSource.Microphone)
{
NativePlugin.MicrophoneRecordingOptions options = NativePlugin.MicrophoneRecordingOptions.None;
Debug.Log("Checking user has authorization to use the Microphone");
switch (CaptureBase.HasUserAuthorisationToCaptureAudio())
{
case CaptureBase.AudioCaptureDeviceAuthorisationStatus.Unavailable:
Debug.LogWarning("Audio capture is unavailable, no audio will be captured");
break;
case CaptureBase.AudioCaptureDeviceAuthorisationStatus.NotDetermined:
Debug.Log("Audio capture status is not determined, requesting access");
yield return CaptureBase.RequestAudioCaptureDeviceUserAuthorisation();
switch (CaptureBase.HasUserAuthorisationToCaptureAudio())
{
case CaptureBase.AudioCaptureDeviceAuthorisationStatus.Unavailable:
Debug.LogWarning("Audio capture is unavailable, no audio will be captured");
break;
case CaptureBase.AudioCaptureDeviceAuthorisationStatus.NotDetermined:
Debug.LogWarning("Audio capture status is still not determined, no audio will be captured");
break;
case CaptureBase.AudioCaptureDeviceAuthorisationStatus.Denied:
Debug.LogWarning("Audio capture status denied, no audio will be captured");
break;
case CaptureBase.AudioCaptureDeviceAuthorisationStatus.Authorised:
Debug.Log("Audio capture is authorised");
NativePlugin.SetMicrophoneRecordingHint(true, options);
break;
}
break;
case CaptureBase.AudioCaptureDeviceAuthorisationStatus.Denied:
Debug.LogWarning("Audio capture status denied, no audio will be captured");
break;
case CaptureBase.AudioCaptureDeviceAuthorisationStatus.Authorised:
Debug.Log("Audio capture is authorised");
NativePlugin.SetMicrophoneRecordingHint(true, options);
break;
}
}
#endif
}
yield return null;
}
private void OnBeginFinalFileWriting(FileWritingHandler handler)
{
_fileWritingHandlers.Add(handler);
}
private void OnCompleteFinalFileWriting(FileWritingHandler handler)
{
Debug.Log("Completed capture '" + handler.Path + "' with status: " + handler.Status.ToString());
}
private void Update()
{
#if (!ENABLE_INPUT_SYSTEM || ENABLE_LEGACY_INPUT_MANAGER)
// Press the S key to trigger audio and background color change - useful for testing A/V sync
#if (UNITY_IOS || UNITY_ANDROID) && !UNITY_EDITOR
bool bTouch = (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended);
if (bTouch)
#else
if (Input.GetKeyDown(KeyCode.S))
#endif
{
if (_audioHit != null && _capture != null && _capture.IsCapturing())
{
AudioSource.PlayClipAtPoint(_audioHit, Vector3.zero);
Camera.main.backgroundColor = new Color(Random.value, Random.value, Random.value, 0);
}
}
// ESC to stop capture and quit
if (Input.GetKeyDown(KeyCode.Escape))
{
if (_capture != null && _capture.IsCapturing())
{
_capture.StopCapture();
}
else
{
Application.Quit();
}
}
#endif
// Spin the camera around
if (_spinCamera && Camera.main != null)
{
Camera.main.transform.RotateAround(Vector3.zero, Vector3.up, 20f * Time.deltaTime * _speed);
}
if (FileWritingHandler.Cleanup(_fileWritingHandlers))
{
if (_fileWritingHandlers.Count == 0)
{
Debug.Log("All pending file writes completed");
}
}
}
void OnDestroy()
{
foreach (FileWritingHandler handler in _fileWritingHandlers)
{
handler.Dispose();
}
}
private void OnGUI()
{
GUI.skin = _guiSkin;
Rect r = new Rect(Screen.width - 108, 64, 128, 28);
GUI.Label(r, "Frame " + Time.frameCount);
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3ba7f85d458d9d041a1180c7018b9d00
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: -100
icon: {instanceID: 0}
userData:

View File

@@ -0,0 +1,100 @@
using UnityEngine;
using System.Runtime.InteropServices;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Demos
{
/// <summary>
/// Demo code to create and write frames manually into a movie using the low-level API via scripting
/// </summary>
public class ScriptCaptureDemo : MonoBehaviour
{
private const string X264CodecName = "x264vfw - H.264/MPEG-4 AVC codec";
private const string FallbackCodecName = "Uncompressed";
/*[SerializeField]
private int _width = 512;
[SerializeField]
private int _height = 512;
[SerializeField]
private int _frameRate = 30;
[SerializeField]
private string _filePath;*/
// State
private Codec _videoCodec;
private int _encoderHandle;
private void Start()
{
if (NativePlugin.Init())
{
// Find the index for the video codec
_videoCodec = CodecManager.FindCodec(CodecType.Video, X264CodecName);
if (_videoCodec == null)
{
_videoCodec = CodecManager.FindCodec(CodecType.Video, FallbackCodecName);
}
}
else
{
this.enabled = false;
}
}
private void OnDestroy()
{
NativePlugin.Deinit();
}
public void CreateVideoFromByteArray(string filePath, int width, int height, int frameRate)
{
byte[] frameData = new byte[width * height * 4];
GCHandle frameHandle = GCHandle.Alloc(frameData, GCHandleType.Pinned);
// Start the recording session
int encoderHandle = NativePlugin.CreateRecorderVideo(filePath, (uint)width, (uint)height, frameRate, (int)NativePlugin.PixelFormat.RGBA32, false, false, _videoCodec.Index, AudioCaptureSource.None, 0, 0, -1, -1, true, null);
if (encoderHandle >= 0)
{
NativePlugin.Start(encoderHandle);
// Write out 100 frames
int numFrames = 100;
for (int i = 0; i < numFrames; i++)
{
// TODO: fill the byte array with your own data :)
// Wait for the encoder to be ready for the next frame
int numAttempts = 32;
while (numAttempts > 0)
{
if (NativePlugin.IsNewFrameDue(encoderHandle))
{
// Encode the new frame
NativePlugin.EncodeFrame(encoderHandle, frameHandle.AddrOfPinnedObject());
break;
}
System.Threading.Thread.Sleep(1);
numAttempts--;
}
}
// End the session
NativePlugin.Stop(encoderHandle, false);
NativePlugin.FreeRecorder(encoderHandle);
}
if (frameHandle.IsAllocated)
{
frameHandle.Free();
}
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6ebfd325dceeb4842b31e562ca753497
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@@ -0,0 +1,81 @@
using UnityEngine;
using System.Collections.Generic;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Demos
{
/// <summary>
/// Spawns cube prefabs from a transform and removes them once they reach a maximum number
/// </summary>
public class SurroundCaptureDemo : MonoBehaviour
{
[SerializeField] Transform _spawnPoint = null;
[SerializeField] GameObject _cubePrefab = null;
[SerializeField] bool _spawn = true;
private const int MaxCubes = 48;
private const float SpawnTime = 0.25f;
// State
private float _timer = SpawnTime;
private List<GameObject> _cubes = new List<GameObject>(32);
private void Update()
{
// Spawn cubes at a certain rate
_timer -= Time.deltaTime;
if (_timer <= 0f)
{
if (_spawn)
{
_timer = SpawnTime;
SpawnCube();
}
// Remove cubes when there are too many
if (_cubes.Count > MaxCubes || !_spawn)
{
RemoveCube();
}
}
}
private void SpawnCube()
{
Quaternion rotation = Quaternion.Euler(Random.Range(-180f, 180f), Random.Range(-180f, 180f), Random.Range(-180f, 180f));
float scale = Random.Range(0.1f, 0.6f);
GameObject go = (GameObject)GameObject.Instantiate(_cubePrefab, _spawnPoint.position, rotation);
Transform t = go.GetComponent<Transform>();
go.GetComponent<Rigidbody>().AddExplosionForce(10f, _spawnPoint.position, 5f, 0f, ForceMode.Impulse);
//AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, float upwardsModifier = 0.0F, ForceMode mode = ForceMode.Force);
t.localScale = new Vector3(scale * 2f, scale, scale * 2f);
t.SetParent(_spawnPoint);
_cubes.Add(go);
}
private void RemoveCube()
{
if (_cubes.Count > 0)
{
// Remove the oldest cube
GameObject go = _cubes[0];
// Disabling the collider makes it fall through the floor - which is a neat way to hide its removal
go.GetComponent<Collider>().enabled = false;
_cubes.RemoveAt(0);
StartCoroutine("KillCube", go);
}
}
private System.Collections.IEnumerator KillCube(GameObject go)
{
yield return new WaitForSeconds(1.5f);
Destroy(go);
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 414b748b3f9089641bbcd64644cba905
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@@ -0,0 +1,71 @@
using UnityEngine;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Demos
{
/// <summary>
/// Animates a procedural texture effect driven by a shader
/// </summary>
public class TextureCaptureDemo : MonoBehaviour
{
[SerializeField] Shader _shader = null;
[SerializeField] int _textureWidth = 1024;
[SerializeField] int _textureHeight = 1024;
[SerializeField] CaptureFromTexture _movieCapture = null;
// State
private Material _material;
private RenderTexture _texture;
private void Start()
{
_material = new Material(_shader);
RenderTextureReadWrite readWrite = QualitySettings.activeColorSpace == ColorSpace.Gamma ? RenderTextureReadWrite.Linear : RenderTextureReadWrite.sRGB;
_texture = new RenderTexture(_textureWidth, _textureHeight, 0, RenderTextureFormat.ARGB32, readWrite);
_texture.filterMode = FilterMode.Bilinear;
_texture.Create();
if (_movieCapture)
{
_movieCapture.SetSourceTexture(_texture);
}
}
private void OnDestroy()
{
if (_material != null)
{
Material.Destroy(_material);
_material = null;
}
if (_texture != null)
{
RenderTexture.Destroy(_texture);
_texture = null;
}
}
private void Update()
{
UpdateTexture();
}
private void UpdateTexture()
{
Graphics.Blit(Texture2D.whiteTexture, _texture, _material);
}
private void OnGUI()
{
if (_texture != null)
{
GUI.depth = 100;
GUI.DrawTexture(new Rect(0f, 0f, Screen.width, Screen.height), _texture, ScaleMode.ScaleToFit, false);
}
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1f519d13df72fce439c800f34395deb7
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: -50
icon: {instanceID: 0}
userData:

View File

@@ -0,0 +1,251 @@
using UnityEngine;
using System.Collections;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Demos
{
/// <summary>
/// Allows the user to select from a list of webcams and creates a capture instance for the webcam recording.
/// Currently only a single webcam can be captured at once.
/// </summary>
public class WebcamCaptureDemo : MonoBehaviour
{
#pragma warning disable 0414 // x is assigned but its value is never used
[SerializeField] GUISkin _skin = null;
[SerializeField] GameObject _prefab = null;
[SerializeField] int _webcamResolutionWidth = 640;
[SerializeField] int _webcamResolutionHeight = 480;
[SerializeField] int _webcamFrameRate = 30;
#pragma warning restore 0414
#if AVPRO_MOVIECAPTURE_WEBCAMTEXTURE_SUPPORT
private class Instance
{
public string name;
public WebCamTexture texture;
public CaptureFromWebCamTexture capture;
public CaptureGUI gui;
}
// State
private Instance[] _instances;
private int _selectedWebcamIndex = -1;
private IEnumerator Start()
{
Application.targetFrameRate = 60;
// Make sure we're authorised for using the camera. On iOS the OS will forcibly
// close the application if authorisation has not been granted. Make sure the
// "Camera Usage Description" field has been filled in the player settings.
// This needs to be done first otherwise no cameras will be reported.
if (!Application.HasUserAuthorization(UserAuthorization.WebCam))
{
yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
}
// Make sure we're authorised for using the microphone. On iOS the OS will forcibly
// close the application if authorisation has not been granted. Make sure the
// "Microphone Usage Description" field has been filled in the player settings.
// if (_capture.AudioCaptureSource == AudioCaptureSource.Microphone)
{
if (!Application.HasUserAuthorization(UserAuthorization.Microphone))
{
yield return Application.RequestUserAuthorization(UserAuthorization.Microphone);
}
if (Application.HasUserAuthorization(UserAuthorization.Microphone))
{
// On iOS modified the audio session to allow recording from the microphone.
NativePlugin.SetMicrophoneRecordingHint(true);
}
}
// Create instance data per webcam
int numCams = WebCamTexture.devices.Length;
_instances = new Instance[numCams];
for (int i = 0; i < numCams; i++)
{
GameObject go = (GameObject)GameObject.Instantiate(_prefab);
Instance instance = new Instance();
instance.name = WebCamTexture.devices[i].name;
instance.capture = go.GetComponent<CaptureFromWebCamTexture>();
instance.capture.FilenamePrefix = "Demo4Webcam-" + i;
instance.gui = go.GetComponent<CaptureGUI>();
instance.gui.ShowUI = false;
_instances[i] = instance;
#if false
WebCamDevice device = WebCamTexture.devices[i];
Resolution[] resolutions = device.availableResolutions;
if (resolutions != null)
{
Debug.Log($"Device '{device.name}' has {resolutions.Length} supported resolutions:");
foreach (Resolution resolution in resolutions)
{
Debug.Log($"{resolution.width}x{resolution.height}@{resolution.refreshRate}");
}
}
#endif
}
if (numCams > 0)
{
SelectWebcam(0);
}
}
private void StartWebcam(Instance instance)
{
// NOTE: WebcamTexture can be slow for high resolutions, this can cause issues with audio-video sync.
// Our plugins AVPro Live Camera or AVPro DeckLink can be used to capture high resolution devices
Debug.LogFormat("_webcamResolutionWidth: {0}, _webcamResolutionHeight: {1}, _webcamFrameRate: {2}", _webcamResolutionWidth, _webcamResolutionHeight, _webcamFrameRate);
instance.texture = new WebCamTexture(instance.name);
instance.texture.requestedWidth = _webcamResolutionWidth;
instance.texture.requestedHeight = _webcamResolutionHeight;
instance.texture.requestedFPS = _webcamFrameRate;
instance.texture.Play();
if (instance.texture.isPlaying)
{
instance.capture.WebCamTexture = instance.texture;
}
else
{
Debug.Log(string.Format("Unable to start webcam in mode {0}x{1}@{2}", _webcamResolutionWidth, _webcamResolutionHeight, _webcamFrameRate));
StopWebcam(instance);
}
}
private void StopWebcam(Instance instance)
{
if (instance.texture != null)
{
if (instance.capture != null && instance.capture.IsCapturing())
{
instance.capture.WebCamTexture = null;
instance.capture.StopCapture();
}
instance.texture.Stop();
Destroy(instance.texture);
instance.texture = null;
}
_selectedWebcamIndex = -1;
}
private void OnDestroy()
{
for (int i = 0; i < _instances.Length; i++)
{
StopWebcam(_instances[i]);
}
}
private void SelectWebcam(int index)
{
// Stop any currently
if (_selectedWebcamIndex >= 0)
{
StopWebcam(_instances[_selectedWebcamIndex]);
_selectedWebcamIndex = -1;
}
if (index >= 0)
{
_selectedWebcamIndex = index;
for (int j = 0; j < _instances.Length; j++)
{
_instances[j].gui.ShowUI = (j == _selectedWebcamIndex);
}
StartWebcam(_instances[_selectedWebcamIndex]);
}
}
private void OnGUI()
{
#if (UNITY_IOS || UNITY_ANDROID) && !UNITY_EDITOR
float sf = 2.0f;
#else
float sf = 1.0f;
#endif
GUI.matrix = Matrix4x4.Scale(new Vector3(sf, sf, 1f));
float hw = Screen.width / (2f * sf);
GUI.skin = _skin;
GUILayout.BeginArea(new Rect(hw, 0, hw, Screen.height));
GUILayout.BeginVertical();
GUILayout.Label("Select webcam:");
for (int i = 0; i < _instances.Length; i++)
{
Instance webcam = _instances[i];
GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
if (webcam.capture.IsCapturing())
{
float t = Mathf.PingPong(Time.timeSinceLevelLoad, 0.25f) * 4f;
GUI.backgroundColor = Color.Lerp(GUI.backgroundColor, Color.white, t);
GUI.color = Color.Lerp(Color.red, Color.white, t);
}
if (_selectedWebcamIndex == i)
{
GUI.backgroundColor = Color.green;
}
if (GUILayout.Button(webcam.name, GUILayout.Width(hw * 0.5f), GUILayout.ExpandWidth(false)))
{
if (_selectedWebcamIndex != i)
{
SelectWebcam(i);
}
else
{
StopWebcam(webcam);
}
}
GUI.backgroundColor = Color.white;
GUI.color = Color.white;
if (webcam.texture != null)
{
float a = (float)_webcamResolutionHeight / (float)_webcamResolutionWidth;
float w = (float)hw * 0.5f;
Rect camRect = GUILayoutUtility.GetRect(w, w * a);
GUI.DrawTexture(camRect, webcam.texture);
}
else
{
GUILayout.Label(string.Empty, GUILayout.MinWidth(256.0f), GUILayout.MaxWidth(256.0f), GUILayout.ExpandWidth(false));
}
GUILayout.EndHorizontal();
}
if (_selectedWebcamIndex >= 0 && _selectedWebcamIndex < _instances.Length)
{
Instance instance = _instances[_selectedWebcamIndex];
GUILayout.Label($"WebCam FPS: {instance.capture.WebCamFPS}");
}
GUILayout.EndVertical();
GUILayout.EndArea();
}
#else
void Start()
{
Debug.LogError("[AVProMovieCapture] To use WebCamTexture capture component/demo you must add the string AVPRO_MOVIECAPTURE_WEBCAMTEXTURE_SUPPORT must be added to `Scriping Define Symbols` in `Player Settings > Other Settings > Script Compilation`");
}
#endif // AVPRO_MOVIECAPTURE_WEBCAMTEXTURE_SUPPORT
}
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 98a052fe19e52c048865e758e854f078
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 5f4071a2eb4dd7e44953f88be83bd5a4
folderAsset: yes
timeCreated: 1563640874
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,124 @@
Shader "Hidden/AVProMovieCapture/Plasma"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// #pragma exclude_renderers gles
#pragma target 2.5
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
//dave hoskins hash
float2 hash(float2 p)
{
float3 HASHSCALE3 = float3(0.1031, 0.1030, 0.0973);
float3 p3 = frac(float3(p.xyx) * HASHSCALE3);
p3 += dot(p3, p3.yzx + 19.19);
return frac((p3.xx+p3.yz)*p3.zy);
}
float voronoi(float2 p, float gap)
{
p *= 1.0 / gap;
float2 n = floor(p);
float2 f = frac(p);
float min_dist = 99999.0;
for (int j = -1; j <= 1; j++)
for (int i = -1; i <= 1; i++)
{
float2 pos = float2(float(i), float(j));
float2 jitter = (hash(n + pos) - 0.5) * 2.0;
jitter = 0.5 + sin(_Time.y + 6.2831 * jitter) * 0.5;
float2 r = pos + jitter - f;
float d = length(r);
if (d < min_dist)
{
min_dist = d;
}
}
return pow(min_dist, 3.0) * gap * 10;
}
float3 tonemap(float3 color)
{
color = max(float3(0, 0, 0), color - float3(0.004, 0.004, 0.004));
color = (color * (6.2 * color + .5)) / (color * (6.2 * color + 1.7) + 0.06);
return color;
}
float plasma(float2 p)
{
float gap = 0.5;
float norm_factor = 0.0;
float total_val = 0.0;
[unroll(8)]
for (int i = 0; i < 8; ++i)
{
total_val += voronoi(p, gap) / 16.0;
norm_factor += gap;
gap /= 2.0;
}
return total_val / norm_factor;
}
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
i.uv += float2(0, -_Time.y * 0.1);
float r = abs(frac(i.uv.y) - 0.5) * 2.0;
float b = 1 - r;
float g = 1.0 - 2 * abs(i.uv.x - 0.5);
fixed4 col = fixed4(r, g, b, 1) * plasma(i.uv);
col.rgb = tonemap(col.rgb);
col.a = 1;
return col;
}
ENDCG
}
}
Fallback Off
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f3d2361de25fd894da4e336b857ff62d
timeCreated: 1491491549
licenseType: Store
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: b2afb1484f696a74c8028a9456053886
folderAsset: yes
timeCreated: 1563637382
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 1
guid: 0096b784692acfb4e92e5ce9ab0233d5

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: b7a195eaf70dd7c4db070647dbb48dce
folderAsset: yes
timeCreated: 1563637382
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,6 @@
{
"name": "RenderHeads.AVProMovieCapture.Editor",
"references": [ "RenderHeads.AVProMovieCapture.Runtime" ],
"includePlatforms": [ "Editor" ]
}

View File

@@ -0,0 +1,6 @@
fileFormatVersion: 2
guid: 5692e4d2014af1542a09e0dab1e4a164
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 3d2a76974faba2d4eaf900faaf2f04b7
folderAsset: yes
timeCreated: 1563636592
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,90 @@
fileFormatVersion: 2
guid: 9dadcbc01dfb782409ab9f21874995f1
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 1
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 256
textureSettings:
filterMode: -1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 0
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 256
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 256
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 256
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Android
maxTextureSize: 256
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 8a69b148c9c07e443bb5c63956646b4a
folderAsset: yes
timeCreated: 1563636592
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
#if UNITY_EDITOR
#if !UNITY_2018_3_OR_NEWER
#define SUPPORT_SCENE_VIEW_GIZMOS_CAPTURE
#endif
using UnityEngine;
using UnityEditor;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
[CanEditMultipleObjects]
[CustomEditor(typeof(CameraSelector))]
public class CameraSelectorEditor : UnityEditor.Editor
{
private SerializedProperty _propSelectBy;
private SerializedProperty _propScanFrequency;
private SerializedProperty _propScanHiddenCameras;
private SerializedProperty _propTag;
private SerializedProperty _propName;
private SerializedProperty _propCamera;
void OnEnable()
{
_propSelectBy = serializedObject.AssertFindProperty("_selectBy");
_propScanFrequency = serializedObject.AssertFindProperty("_scanFrequency");
_propScanHiddenCameras = serializedObject.AssertFindProperty("_scanHiddenCameras");
_propTag = serializedObject.AssertFindProperty("_tag");
_propName = serializedObject.AssertFindProperty("_name");
_propCamera = serializedObject.AssertFindProperty("_camera");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(_propScanFrequency);
EditorGUILayout.PropertyField(_propScanHiddenCameras);
EditorGUILayout.PropertyField(_propSelectBy);
if (_propSelectBy.enumValueIndex == (int)CameraSelector.SelectByMode.Name)
{
EditorGUILayout.PropertyField(_propName);
}
else if (_propSelectBy.enumValueIndex == (int)CameraSelector.SelectByMode.Tag)
{
EditorGUILayout.PropertyField(_propTag);
}
else if (_propSelectBy.enumValueIndex == (int)CameraSelector.SelectByMode.Manual)
{
EditorGUILayout.PropertyField(_propCamera);
}
#if !SUPPORT_SCENE_VIEW_GIZMOS_CAPTURE
else if (_propSelectBy.enumValueIndex == (int)CameraSelector.SelectByMode.EditorSceneView)
{
GUI.color = Color.yellow;
GUILayout.TextArea("Warning: Scene View capture only currently supports gizmo capture up to Unity 2018.2.x");
GUI.color = Color.white;
}
#endif
if (Application.isPlaying)
{
EditorGUILayout.Separator();
GUILayout.Label("Cameras:");
CameraSelector selector = (this.target) as CameraSelector;
// Display buttons for all possible cameras
for (int i = 0; i < selector.CameraCacheCount; i++)
{
if (selector.Camera != selector.CameraCache[i])
{
if (GUILayout.Button(selector.CameraCache[i].name))
{
selector.Camera = selector.CameraCache[i];
}
}
else
{
GUI.color = Color.green;
GUILayout.Button(selector.Camera.name);
GUI.color = Color.white;
}
}
EditorGUILayout.Separator();
if (_propScanFrequency.enumValueIndex != (int)CameraSelector.ScanFrequencyMode.Frame)
{
if (GUILayout.Button("Update Camera List"))
{
selector.UpdateCameraCache();
}
}
}
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a731464844c643e4e8da08697d37df67
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d1daa6f19b63e2c418e9046e54cd0888
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b7c7fb5275f597f4ca030385c3259720
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}

View File

@@ -0,0 +1,143 @@
#if UNITY_EDITOR
#if UNITY_2018_1_OR_NEWER
// Unity 2018.1 introduces stereo cubemap render methods
#define AVPRO_MOVIECAPTURE_UNITY_STEREOCUBEMAP_RENDER
#endif
using UnityEngine;
using UnityEditor;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
[CanEditMultipleObjects]
[CustomEditor(typeof(CaptureFromCamera360))]
public class CaptureFromCamera360Editor : CaptureBaseEditor
{
//private CaptureFromCamera360 _capture;
private SerializedProperty _propCameraSelector;
private SerializedProperty _propCamera;
private SerializedProperty _propRenderResolution;
private SerializedProperty _propRenderSize;
private SerializedProperty _propAntiAliasing;
private SerializedProperty _propCubemapResolution;
private SerializedProperty _propCubemapDepth;
private SerializedProperty _propSupportGUI;
private SerializedProperty _propSupporCameraRotation;
private SerializedProperty _propOnlyLeftRightRotation;
private SerializedProperty _propStereoRendering;
private SerializedProperty _propRender180Degrees;
private SerializedProperty _propIPD;
private SerializedProperty _propBlendOverlapPercent;
protected override void OnEnable()
{
base.OnEnable();
//_capture = (this.target) as CaptureFromCamera360;
_propCameraSelector = serializedObject.AssertFindProperty("_cameraSelector");
_propCamera = serializedObject.AssertFindProperty("_camera");
_propRenderResolution = serializedObject.AssertFindProperty("_renderResolution");
_propRenderSize = serializedObject.AssertFindProperty("_renderSize");
_propAntiAliasing = serializedObject.AssertFindProperty("_renderAntiAliasing");
_propCubemapResolution = serializedObject.AssertFindProperty("_cubemapResolution");
_propCubemapDepth = serializedObject.AssertFindProperty("_cubemapDepth");
_propSupportGUI = serializedObject.AssertFindProperty("_supportGUI");
_propSupporCameraRotation = serializedObject.AssertFindProperty("_supportCameraRotation");
_propOnlyLeftRightRotation = serializedObject.AssertFindProperty("_onlyLeftRightRotation");
_propRender180Degrees = serializedObject.AssertFindProperty("_render180Degrees");
_propStereoRendering = serializedObject.AssertFindProperty("_stereoRendering");
_propIPD = serializedObject.AssertFindProperty("_ipd");
_propBlendOverlapPercent = serializedObject.AssertFindProperty("_blendOverlapPercent");
}
protected void GUI_Camera()
{
EditorGUILayout.PropertyField(_propCameraSelector);
if (null == _propCameraSelector.objectReferenceValue)
{
EditorGUILayout.PropertyField(_propCamera);
}
EditorUtils.EnumAsDropdown("Resolution", _propRenderResolution, CaptureBaseEditor.ResolutionStrings);
if (_propRenderResolution.enumValueIndex == (int)CaptureBase.Resolution.Custom)
{
EditorGUILayout.PropertyField(_propRenderSize, new GUIContent("Size"));
_propRenderSize.vector2Value = new Vector2(Mathf.Clamp((int)_propRenderSize.vector2Value.x, 1, NativePlugin.MaxRenderWidth), Mathf.Clamp((int)_propRenderSize.vector2Value.y, 1, NativePlugin.MaxRenderHeight));
}
{
string currentAA = "None";
if (QualitySettings.antiAliasing > 1)
{
currentAA = QualitySettings.antiAliasing.ToString() + "x";
}
EditorUtils.IntAsDropdown("Anti-aliasing", _propAntiAliasing, new string[] { "Current (" + currentAA + ")", "None", "2x", "4x", "8x" }, new int[] { -1, 1, 2, 4, 8 });
}
EditorUtils.IntAsDropdown("Cubemap Resolution", _propCubemapResolution, new string[] { "256", "512", "1024", "2048", "4096", "8192" }, new int[] { 256, 512, 1024, 2048, 4096, 8192 });
EditorUtils.IntAsDropdown("Cubemap Depth", _propCubemapDepth, new string[] { "0", "16", "24" }, new int[] { 0, 16, 24 });
EditorGUILayout.PropertyField(_propSupportGUI, new GUIContent("Capture GUI"));
EditorGUILayout.PropertyField(_propSupporCameraRotation, new GUIContent("Camera Rotation"));
if (_propSupporCameraRotation.boolValue)
{
EditorGUILayout.PropertyField(_propOnlyLeftRightRotation);
}
EditorGUILayout.PropertyField(_propRender180Degrees);
EditorGUILayout.PropertyField(_propStereoRendering);
if (_propStereoRendering.enumValueIndex != (int)StereoPacking.None)
{
#if AVPRO_MOVIECAPTURE_UNITY_STEREOCUBEMAP_RENDER
if (!PlayerSettings.enable360StereoCapture)
{
ShowNoticeBox(MessageType.Warning, "360 Stereo Capture needs to be enabled in PlayerSettings");
if (GUILayout.Button("Enable 360 Stereo Capture"))
{
PlayerSettings.enable360StereoCapture = true;
}
}
#endif
// TODO: detect HDRP and warn that stereo capture is not supported
EditorGUILayout.PropertyField(_propIPD, new GUIContent("Interpupillary distance"));
}
// RJT TODO: Supports stereo via 'CubemapRenderMethod.Manual' but I gather its results are not correct so either:
// - 1. Fix up 'Manual' stereo if possible
// - 2. Disable/warn here if stereo is selected
// if (_propStereoRendering.enumValueIndex == (int)StereoPacking.None)
{
// RJT TODO: Could technically allow more than 100% as camera perspective visually means 100% != a complete face, but
// definitely approaches a point of massively diminishing (but increasingly costly) returns so probably not worthwhile
EditorGUILayout.Slider(_propBlendOverlapPercent, 0.0f, 100.0f, new GUIContent("Blend Overlap %"));
}
}
protected override void GUI_User()
{
if (_baseCapture != null && !_baseCapture.IsCapturing())
{
serializedObject.Update();
bool boolTrue = true;
EditorUtils.DrawSection("Capture From Camera 360+Stereo", ref boolTrue, GUI_Camera);
if (serializedObject.ApplyModifiedProperties())
{
EditorUtility.SetDirty(target);
}
}
}
}
}
#endif

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0c3bf56fa2bee61458e783a9f0feb685
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@@ -0,0 +1,119 @@
#if UNITY_5_5_OR_NEWER
#define AVPRO_MOVIECAPTURE_UNITYPROFILER_55
#endif
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
[CanEditMultipleObjects]
[CustomEditor(typeof(CaptureFromCamera360ODS))]
public class CaptureFromCamera360ODSEditor : CaptureBaseEditor
{
//private CaptureFromCamera360ODS _capture;
private SerializedProperty _propCameraSelector;
private SerializedProperty _propCamera;
private SerializedProperty _propRenderResolution;
private SerializedProperty _propRenderSize;
private SerializedProperty _propAntiAliasing;
private SerializedProperty _propRender180Degrees;
private SerializedProperty _propIPD;
private SerializedProperty _propPixelSliceSize;
private SerializedProperty _propPaddingSize;
private SerializedProperty _propCameraClearMode;
private SerializedProperty _propCameraClearColor;
private SerializedProperty _propCameraImageEffects;
protected override void OnEnable()
{
base.OnEnable();
//_capture = (this.target) as CaptureFromCamera360ODS;
_propCameraSelector = serializedObject.AssertFindProperty("_settings.cameraSelector");
_propCamera = serializedObject.AssertFindProperty("_settings.camera");
_propRenderResolution = serializedObject.AssertFindProperty("_renderResolution");
_propRenderSize = serializedObject.AssertFindProperty("_renderSize");
_propAntiAliasing = serializedObject.AssertFindProperty("_renderAntiAliasing");
_propRender180Degrees = serializedObject.AssertFindProperty("_settings.render180Degrees");
_propIPD = serializedObject.AssertFindProperty("_settings.ipd");
_propPixelSliceSize = serializedObject.AssertFindProperty("_settings.pixelSliceSize");
_propPaddingSize = serializedObject.AssertFindProperty("_settings.paddingSize");
_propCameraClearMode = serializedObject.AssertFindProperty("_settings.cameraClearMode");
_propCameraClearColor = serializedObject.AssertFindProperty("_settings.cameraClearColor");
_propCameraImageEffects = serializedObject.AssertFindProperty("_settings.cameraImageEffects");
}
protected void GUI_Camera()
{
EditorGUILayout.PropertyField(_propCameraSelector);
if (null == _propCameraSelector.objectReferenceValue)
{
EditorGUILayout.PropertyField(_propCamera);
}
EditorUtils.EnumAsDropdown("Resolution", _propRenderResolution, CaptureBaseEditor.ResolutionStrings);
if (_propRenderResolution.enumValueIndex == (int)CaptureBase.Resolution.Custom)
{
EditorGUILayout.PropertyField(_propRenderSize, new GUIContent("Size"));
_propRenderSize.vector2Value = new Vector2(Mathf.Clamp((int)_propRenderSize.vector2Value.x, 1, NativePlugin.MaxRenderWidth), Mathf.Clamp((int)_propRenderSize.vector2Value.y, 1, NativePlugin.MaxRenderHeight));
}
{
string currentAA = "None";
if (QualitySettings.antiAliasing > 1)
{
currentAA = QualitySettings.antiAliasing.ToString() + "x";
}
EditorUtils.IntAsDropdown("Anti-aliasing", _propAntiAliasing, new string[] { "Current (" + currentAA + ")", "None", "2x", "4x", "8x" }, new int[] { -1, 1, 2, 4, 8 });
}
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_propRender180Degrees);
EditorGUILayout.PropertyField(_propIPD, new GUIContent("Interpupillary distance"));
EditorGUILayout.PropertyField(_propPixelSliceSize);
EditorGUILayout.PropertyField(_propPaddingSize);
EditorGUILayout.PropertyField(_propCameraClearMode);
EditorGUILayout.PropertyField(_propCameraClearColor);
EditorGUILayout.PropertyField(_propCameraImageEffects, true);
}
protected override void GUI_User()
{
if (_baseCapture != null && !_baseCapture.IsCapturing())
{
serializedObject.Update();
bool boolTrue = true;
EditorUtils.DrawSection("Capture from Camera 360 + ODS", ref boolTrue, GUI_Camera);
#if AVPRO_MOVIECAPTURE_UNITYPROFILER_55
// This component makes the profiler use a TON of memory, so warn the user to disable it
if (UnityEngine.Profiling.Profiler.enabled)
{
ShowNoticeBox(MessageType.Warning, "Having the Unity profiler enabled while using the CaptureFromCamera360ODS component is not recommended.\n\nToo many samples are generated which can make the system run out of memory\n\nDisable the profiler, close the window and remove the tab. A Unity restart may be required after disabling the profiler recording.");
}
#endif
if (serializedObject.ApplyModifiedProperties())
{
EditorUtility.SetDirty(target);
}
}
}
}
}
#endif

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e864b7158340a1949b733e272c103dba
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@@ -0,0 +1,163 @@
#if UNITY_EDITOR
#if !UNITY_2018_3_OR_NEWER
#define SUPPORT_SCENE_VIEW_GIZMOS_CAPTURE
#endif
using UnityEngine;
using UnityEditor;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
[CanEditMultipleObjects]
[CustomEditor(typeof(CaptureFromCamera))]
public class CaptureFromCameraEditor : CaptureBaseEditor
{
//private CaptureFromCamera _capture;
private SerializedProperty _propCameraSelector;
private SerializedProperty _propLastCamera;
private SerializedProperty _propContribCameras;
private SerializedProperty _propUseContribCameras;
#if SUPPORT_SCENE_VIEW_GIZMOS_CAPTURE
private SerializedProperty _propIncludeSceneViewGizmos;
#endif
private SerializedProperty _propRenderResolution;
private SerializedProperty _propRenderSize;
private SerializedProperty _propAntiAliasing;
private static readonly GUIContent _guiItemCamera = new GUIContent("Camera", "The top level camera you want to capture");
private static readonly GUIContent _guiItemContribCamera = new GUIContent("Contributing Cameras", "Cameras in render order from first to last that contribute to the rendering of the main camera above");
protected override void OnEnable()
{
base.OnEnable();
//_capture = (this.target) as CaptureFromCamera;
_propCameraSelector = serializedObject.AssertFindProperty("_cameraSelector");
_propLastCamera = serializedObject.AssertFindProperty("_lastCamera");
_propContribCameras = serializedObject.AssertFindProperty("_contribCameras");
_propContribCameras.isExpanded = true;
_propUseContribCameras = serializedObject.AssertFindProperty("_useContributingCameras");
#if SUPPORT_SCENE_VIEW_GIZMOS_CAPTURE
_propIncludeSceneViewGizmos = serializedObject.AssertFindProperty("_includeSceneViewGizmos");
#endif
_propRenderResolution = serializedObject.AssertFindProperty("_renderResolution");
_propRenderSize = serializedObject.AssertFindProperty("_renderSize");
_propAntiAliasing = serializedObject.AssertFindProperty("_renderAntiAliasing");
}
protected void GUI_Camera()
{
Camera prevLastCamera = null, lastCamera = null;
EditorGUILayout.PropertyField(_propCameraSelector);
if (null == _propCameraSelector.objectReferenceValue)
{
prevLastCamera = (Camera)_propLastCamera.objectReferenceValue;
EditorGUILayout.PropertyField(_propLastCamera, _guiItemCamera);
lastCamera = (Camera)_propLastCamera.objectReferenceValue;
}
// If the user has changed the camera, reset the contributing cameras
if (lastCamera != prevLastCamera)
{
_propContribCameras.arraySize = 0;
if (lastCamera == null)
{
_propUseContribCameras.boolValue = false;
}
}
_propUseContribCameras.boolValue = EditorGUILayout.ToggleLeft("Use Contributing Cameras", _propUseContribCameras.boolValue);
if (lastCamera != null)
{
if (_propUseContribCameras.boolValue)
{
if (GUILayout.Button("Find Contributing Cameras", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false)))
{
bool hasContribCameras = false;
if (Utils.HasContributingCameras(lastCamera))
{
Camera[] cameras = Utils.FindContributingCameras(lastCamera);
if (cameras != null && cameras.Length > 0)
{
hasContribCameras = true;
_propContribCameras.arraySize = cameras.Length;
for (int slotIndex = 0; slotIndex < cameras.Length; slotIndex++)
{
_propContribCameras.GetArrayElementAtIndex(slotIndex).objectReferenceValue = cameras[slotIndex];
}
}
}
if (!hasContribCameras)
{
_propContribCameras.arraySize = 0;
_propUseContribCameras.boolValue = false;
}
}
EditorGUILayout.PropertyField(_propContribCameras, _guiItemContribCamera, true);
EditorGUILayout.Space();
}
}
EditorUtils.EnumAsDropdown("Resolution", _propRenderResolution, CaptureBaseEditor.ResolutionStrings);
if (_propRenderResolution.enumValueIndex == (int)CaptureBase.Resolution.Custom)
{
EditorGUILayout.PropertyField(_propRenderSize, new GUIContent("Size"));
_propRenderSize.vector2Value = new Vector2(Mathf.Clamp((int)_propRenderSize.vector2Value.x, 1, NativePlugin.MaxRenderWidth), Mathf.Clamp((int)_propRenderSize.vector2Value.y, 1, NativePlugin.MaxRenderHeight));
}
{
string currentAA = "None";
if (QualitySettings.antiAliasing > 1)
{
currentAA = QualitySettings.antiAliasing.ToString() + "x";
}
EditorUtils.IntAsDropdown("Anti-aliasing", _propAntiAliasing, new string[] { "Current (" + currentAA + ")", "None", "2x", "4x", "8x" }, new int[] { -1, 1, 2, 4, 8 });
}
#if SUPPORT_SCENE_VIEW_GIZMOS_CAPTURE
EditorGUILayout.PropertyField(_propIncludeSceneViewGizmos);
#endif
}
protected override void GUI_User()
{
if (_baseCapture != null && !_baseCapture.IsCapturing())
{
serializedObject.Update();
bool boolTrue = true;
EditorUtils.DrawSection("Capture From Camera", ref boolTrue, GUI_Camera);
if (serializedObject.ApplyModifiedProperties())
{
EditorUtility.SetDirty(target);
}
}
}
/*
public override void OnInspectorGUI()
{
GUI_Header();
GUI_BaseOptions();
}*/
}
}
#endif

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 00cfbd397f486bc47af3c7358fef2c74
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}

View File

@@ -0,0 +1,41 @@
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
[CanEditMultipleObjects]
[CustomEditor(typeof(CaptureFromScreen))]
public class CaptureFromScreenEditor : CaptureBaseEditor
{
private SerializedProperty _propCaptureMouseCursor;
private SerializedProperty _propMouseCursor;
protected override void GUI_Misc()
{
GUI_MouseCursor();
base.GUI_Misc();
}
protected void GUI_MouseCursor()
{
EditorGUILayout.PropertyField(_propCaptureMouseCursor);
if (_propCaptureMouseCursor.boolValue)
{
EditorGUILayout.PropertyField(_propMouseCursor);
}
}
protected override void OnEnable()
{
base.OnEnable();
_propCaptureMouseCursor = serializedObject.AssertFindProperty("_captureMouseCursor");
_propMouseCursor = serializedObject.AssertFindProperty("_mouseCursor");
}
}
}
#endif

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 48a8b5e7b8c7ff147bd561367991de49
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}

View File

@@ -0,0 +1,46 @@
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
[CanEditMultipleObjects]
[CustomEditor(typeof(CaptureFromTexture))]
public class CaptureFromTextureEditor : CaptureBaseEditor
{
private SerializedProperty _propManualUpdate;
protected override void OnEnable()
{
base.OnEnable();
_propManualUpdate = serializedObject.AssertFindProperty("_manualUpdate");
}
protected void GUI_Camera()
{
EditorGUILayout.PropertyField(_propManualUpdate);
}
protected override void GUI_User()
{
if (_baseCapture != null && !_baseCapture.IsCapturing())
{
serializedObject.Update();
bool boolTrue = true;
EditorUtils.DrawSection("Capture From Texture", ref boolTrue, GUI_Camera);
if (serializedObject.ApplyModifiedProperties())
{
EditorUtility.SetDirty(target);
}
}
}
}
}
#endif

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a9575e652d155954c9cca03aad0c6655
timeCreated: 1526301386
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,363 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
public class EditorScreenshot : MonoBehaviour
{
internal enum ImageFormat
{
PNG,
JPG,
TGA,
EXR,
}
internal enum ExrPrecision
{
Half,
Float,
}
internal enum ExrCompression
{
None,
ZIP,
RLE,
PIZ,
}
[Serializable]
internal class Options
{
[SerializeField, Range(1, 100)]
internal int jpgQuality = 75;
[SerializeField]
internal ExrPrecision exrPrecision;
[SerializeField]
internal ExrCompression exrCompression;
internal Texture2D.EXRFlags GetExrFlags()
{
Texture2D.EXRFlags result = Texture2D.EXRFlags.None;
if (exrPrecision == ExrPrecision.Float) result |= Texture2D.EXRFlags.OutputAsFloat;
if (exrCompression == ExrCompression.ZIP) result |= Texture2D.EXRFlags.CompressZIP;
else if (exrCompression == ExrCompression.RLE) result |= Texture2D.EXRFlags.CompressRLE;
else if (exrCompression == ExrCompression.PIZ) result |= Texture2D.EXRFlags.CompressPIZ;
return result;
}
}
private const string SceneCameraName = "SceneCamera";
internal static RenderTexture GetSceneViewTexture()
{
RenderTexture result = null;
Camera[] cameras = FindAllCameras();
if (cameras != null)
{
Camera camera = FindCameraByName(cameras.Length, cameras, SceneCameraName);
if (camera != null)
{
if (camera.targetTexture != null)
{
// Note we have to force a render
camera.Render();
result = camera.targetTexture;
}
}
}
return result;
}
private static RenderTexture GetSceneViewTexture2()
{
RenderTexture result = null;
RenderTexture[] rts = Resources.FindObjectsOfTypeAll<RenderTexture>();
foreach (RenderTexture rt in rts)
{
if (rt.name == "SceneView RT")
{
result = rt;
break;
}
}
return result;
}
internal static void SceneViewToFile(string fileNamePrefix, string folderPath, ImageFormat format, Options options)
{
RenderTexture cameraTexture = GetSceneViewTexture();
if (cameraTexture != null)
{
Texture2D texture = GetReadableTexture(cameraTexture, format == ImageFormat.EXR);
if (texture != null)
{
string filePath = EditorScreenshot.GenerateFilename(fileNamePrefix, format, texture.width, texture.height);
filePath = GenerateFilePath(folderPath, filePath);
TextureToFile(texture, filePath, format, options);
if (Application.isPlaying)
{
Destroy(texture);
}
else
{
DestroyImmediate(texture);
}
}
}
else
{
Debug.LogError("SceneView texture isn't available, make sure the view is visible");
}
}
internal static Texture2D GetReadableTexture(RenderTexture texture, bool supportHDR)
{
var oldRT = RenderTexture.active;
TextureFormat format = TextureFormat.RGBA32;
if (supportHDR)
{
format = TextureFormat.RGBAFloat;
}
Texture2D destTex = new Texture2D(texture.width, texture.height, format, false, supportHDR);
RenderTexture.active = texture;
destTex.ReadPixels(new Rect(0, 0, texture.width, texture.height), 0, 0);
destTex.Apply();
RenderTexture.active = oldRT;
return destTex;
}
internal static bool SupportsTGA()
{
#if UNITY_2018_3_OR_NEWER
return true;
#else
return false;
#endif
}
internal static bool SupportsGameViewJPGTGAEXR()
{
#if UNITY_2017_3_OR_NEWER
return Application.isPlaying;
#else
return false;
#endif
}
internal static bool SupportsGameViewEXR()
{
#if UNITY_2019_1_OR_NEWER
return Application.isPlaying;
#else
return false;
#endif
}
internal static void TextureToFile(Texture2D texture, string filePath, ImageFormat format, Options options)
{
byte[] data = null;
#if UNITY_2017_1_OR_NEWER
switch (format)
{
case ImageFormat.PNG:
data = ImageConversion.EncodeToPNG(texture);
break;
case ImageFormat.JPG:
data = ImageConversion.EncodeToJPG(texture, options.jpgQuality);
break;
case ImageFormat.TGA:
#if UNITY_2018_3_OR_NEWER
data = ImageConversion.EncodeToTGA(texture);
#endif
break;
case ImageFormat.EXR:
data = ImageConversion.EncodeToEXR(texture, options.GetExrFlags());
break;
}
#else
switch (format)
{
case ImageFormat.PNG:
data = texture.EncodeToPNG();
break;
case ImageFormat.JPG:
data = texture.EncodeToJPG(options.jpgQuality);
break;
case ImageFormat.EXR:
data = texture.EncodeToEXR(options.GetExrFlags());
break;
}
#endif
if (data != null)
{
System.IO.File.WriteAllBytes(filePath, data);
OnFileWritten(filePath);
}
}
internal static void GameViewToPNG(string filePath, int superSize = 1)
{
#if UNITY_2017_1_OR_NEWER
ScreenCapture.CaptureScreenshot(filePath, superSize);
#else
Application.CaptureScreenshot(filePath, superSize);
#endif
// The screenshot will not be generated until the frame has finished (at least in Application.CaptureScreenshot())
if (!Application.isPlaying)
{
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
}
OnFileWritten(filePath);
}
internal static void OnFileWritten(string filePath)
{
Debug.Log("[AVProMovieCapture] File written: " + filePath);
CaptureBase.LastFileSaved = filePath;
}
internal static void RenderTextureToFile(string filePath, ImageFormat format, Options options, RenderTexture rt)
{
Texture2D texture = GetReadableTexture(rt, format == ImageFormat.EXR);
if (texture != null)
{
TextureToFile(texture, filePath, format, options);
if (Application.isPlaying)
{
Destroy(texture);
}
else
{
DestroyImmediate(texture);
}
}
}
internal static void GameViewToFile(string filePath, ImageFormat format, Options options, int superSize = 1)
{
// Coroutines aren't supported in editor mode, so we fake it using a GameObject with EditorCoroutine component
GameObject go = new GameObject("temp-screenshot");
go.hideFlags = HideFlags.HideAndDontSave;
EditorCoroutine co = go.AddComponent<EditorCoroutine>();
co.RunCoroutine(EditorScreenshot.GameViewToFileCoroutine(filePath, format, options, go, superSize));
}
internal static IEnumerator GameViewToFileCoroutine(string filePath, ImageFormat format, Options options, GameObject go, int superSize = 1)
{
yield return new WaitForEndOfFrame();
Texture2D texture = null;
#if UNITY_2017_3_OR_NEWER
if (format != ImageFormat.EXR)
{
texture = ScreenCapture.CaptureScreenshotAsTexture(superSize);
}
else
{
// For EXR we want floating point textures which CaptureScreenshotAsTexture() doesn't provide
RenderTextureFormat rtFormat = (options.exrPrecision == ExrPrecision.Float) ? RenderTextureFormat.ARGBFloat : RenderTextureFormat.ARGBHalf;
RenderTexture rt = new RenderTexture(Screen.width * superSize, Screen.height * superSize, 24, rtFormat);
rt.Create();
#if UNITY_2019_1_OR_NEWER
ScreenCapture.CaptureScreenshotIntoRenderTexture(rt);
#endif
texture = GetReadableTexture(rt, true);
Destroy(rt);
}
#endif
if (texture != null)
{
TextureToFile(texture, filePath, format, options);
if (Application.isPlaying)
{
Destroy(texture);
Destroy(go);
}
else
{
DestroyImmediate(texture);
DestroyImmediate(go);
}
}
}
internal static Camera[] FindAllCameras()
{
return Resources.FindObjectsOfTypeAll<Camera>();
}
static Camera FindCameraByName(int cameraCount, Camera[] cameras, string name)
{
Camera result = null;
for (int i = 0; i < cameraCount; i++)
{
Camera c = cameras[i];
if (c.name == name)
{
result = c;
break;
}
}
return result;
}
internal static string GetExtension(ImageFormat format)
{
switch (format)
{
case ImageFormat.PNG:
return "png";
case ImageFormat.JPG:
return "jpg";
case ImageFormat.TGA:
return "tga";
case ImageFormat.EXR:
return "exr";
}
throw new Exception("Unknown image format");
}
internal static Vector2 GetGameViewSize()
{
Vector2 result = Vector2.zero;
string[] res = UnityStats.screenRes.Split('x');
if (res.Length == 2)
{
result.x = int.Parse(res[0]);
result.y = int.Parse(res[1]);
}
return result;
}
internal static string GenerateFilename(string filenamePrefix, ImageFormat format, int width, int height)
{
string filenameExtension = GetExtension(format);
string dateTime = DateTime.Now.ToString("yyyyMMdd-HHmmss");
string filename = string.Format("{0}-{1}-{2}x{3}.{4}", filenamePrefix, dateTime, width, height, filenameExtension);
return filename;
}
internal static string GenerateFilePath(string folderPath, string fileName)
{
if (!System.IO.Directory.Exists(folderPath))
{
System.IO.Directory.CreateDirectory(folderPath);
}
return System.IO.Path.Combine(folderPath, fileName);
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 53e4ed1851d9d49438b8d2c269ba57a2
timeCreated: 1643542876
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,279 @@
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Reflection;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
/*public static class Utils
{
public static T GetCopyOf<T>(this Component comp, T other) where T : Component
{
System.Type type = comp.GetType();
if (type != other.GetType())
{
return null; // type mis-match
}
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Default | BindingFlags.DeclaredOnly;
PropertyInfo[] pinfos = type.GetProperties(flags);
for (int i = 0; i < pinfos.Length; i++)
{
PropertyInfo pinfo = pinfos[i];
if (pinfo.CanWrite)
{
try
{
pinfo.SetValue(comp, pinfo.GetValue(other, null), null);
}
catch { } // In case of NotImplementedException being thrown. For some reason specifying that exception didn't seem to catch it, so I didn't catch anything specific.
}
}
FieldInfo[] finfos = type.GetFields(flags);
foreach (var finfo in finfos)
{
finfo.SetValue(comp, finfo.GetValue(other));
}
return comp as T;
}
}*/
internal enum BitrateUnits
{
BitsPerSecond,
KBitsPerSecond,
MBitsPerSecond,
}
public static class EditorUtils
{
public static string[] AudioCaptureSourceNames = { "None", "Unity", "Microphone", "Manual", "Wwise", "Unity Audio Mixer" };
public static string[] CommonFrameRateNames = { "1", "10", "15", "23.98", "24 - CINEMA", "25 - PAL", "29.97 - NTSC", "30 - PC", "50 - PAL", "59.94 - NTSC", "60 - PC", "75", "90", "120" };
public static float[] CommonFrameRateValues = { 1f, 10f, 15f, 23.976f, 24f, 25f, 29.97f, 30f, 50f, 59.94f, 60f, 75f, 90f, 120f };
public static string[] CommonAudioSampleRateNames = { "8kHz", "22.5kHz", "44.1kHz", "48kHz", "96kHz" };
public static int[] CommonAudioSampleRateValues = { 8000, 22050, 44100, 48000, 96000 };
internal static string[] OutputTargetNames = new string[] { "Video File", "Image Sequence", "Named Pipe" };
public static string[] CommonVideoBitRateNames = { "YouTube/360p30 H.264 - 1 Mbps",
"YouTube/360p60 H.264 - 1.5 Mbps",
"YouTube/480p30 H.264 - 2.5 Mbps",
};
public static float[] CommonVideoBitRateValues = { 1f, 1.5f, 2.5f };
public static SerializedProperty AssertFindProperty(this SerializedObject so, string propertyName)
{
SerializedProperty result = so.FindProperty(propertyName);
Debug.Assert(result != null, "Missing property: " + propertyName);
return result;
}
public static void CentreLabel(string text, GUIStyle style = null)
{
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
if (style == null)
{
GUILayout.Label(text);
}
else
{
GUILayout.Label(text, style);
}
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
}
public static void BoolAsDropdown(string name, SerializedProperty prop, string trueOption, string falseOption)
{
string[] popupNames = { trueOption, falseOption };
int popupIndex = 0;
if (!prop.boolValue)
{
popupIndex = 1;
}
popupIndex = EditorGUILayout.Popup(name, popupIndex, popupNames);
prop.boolValue = (popupIndex == 0);
}
public static void EnumAsDropdown(string name, SerializedProperty prop, string[] options)
{
prop.enumValueIndex = EditorGUILayout.Popup(name, prop.enumValueIndex, options);
}
public static void IntAsDropdown(string name, SerializedProperty prop, string[] options, int[] values)
{
int index = 0;
for (int i = 0; i < values.Length; i++)
{
if (values[i] == prop.intValue)
{
index = i;
break;
}
}
index = EditorGUILayout.Popup(name, index, options);
prop.intValue = values[index];
}
public static void FloatAsDropdown(string name, SerializedProperty prop, string[] options, float[] values, bool customAtEnd)
{
bool isFound = false;
int index = 0;
for (int i = 0; i < values.Length; i++)
{
if (values[i] == prop.floatValue)
{
isFound = true;
index = i;
break;
}
}
if (!isFound && customAtEnd)
{
index = options.Length - 1;
}
EditorGUI.BeginChangeCheck();
if (string.IsNullOrEmpty(name))
{
index = EditorGUILayout.Popup(index, options);
}
else
{
index = EditorGUILayout.Popup(name, index, options);
}
if (EditorGUI.EndChangeCheck())
{
prop.floatValue = values[index];
}
}
private struct FloatPopupData
{
public FloatPopupData(SerializedObject obj, SerializedProperty prop, float value, Object target)
{
_obj = obj;
_prop = prop;
_value = value;
_target = target;
}
public void Apply()
{
_prop.floatValue = _value;
if (_obj.ApplyModifiedProperties())
{
EditorUtility.SetDirty(_target);
}
}
private Object _target;
private SerializedObject _obj;
private SerializedProperty _prop;
private float _value;
}
private static void FloatAsPopupCallback_Select(object obj)
{
((FloatPopupData)obj).Apply();
}
public static void FloatAsPopup(string buttonText, string popupText, SerializedObject obj, SerializedProperty prop, string[] options, float[] values)
{
if (GUILayout.Button(buttonText, GUILayout.ExpandWidth(false)))
{
// Remove focus to clear the selection, otherwise the property field will not update
GUI.FocusControl(null);
GenericMenu toolsMenu = new GenericMenu();
toolsMenu.AddDisabledItem(new GUIContent(popupText));
toolsMenu.AddSeparator("");
for (int i = 0; i < options.Length; i++)
{
bool isSelected = (values[i] == prop.floatValue);
toolsMenu.AddItem(new GUIContent(options[i]), isSelected, FloatAsPopupCallback_Select, new FloatPopupData(obj, prop, values[i], obj.targetObject));
}
toolsMenu.ShowAsContext();
}
}
internal static BitrateUnits BitrateUnitsDisplay = BitrateUnits.MBitsPerSecond;
internal static void BitrateField(string name, SerializedProperty prop)
{
GUILayout.BeginHorizontal();
{
double factor = 1.0;
switch (BitrateUnitsDisplay)
{
case BitrateUnits.BitsPerSecond:
factor = 1.0;
break;
case BitrateUnits.KBitsPerSecond:
factor = 1000;
break;
case BitrateUnits.MBitsPerSecond:
factor = 1000000;
break;
}
double bitrate = (uint)prop.intValue / factor;
bitrate = EditorGUILayout.DelayedDoubleField(name, bitrate);
prop.intValue = (int)(bitrate * factor);
}
BitrateUnitsDisplay = (BitrateUnits)EditorGUILayout.Popup((int)BitrateUnitsDisplay, new string[] { "bps", "Kbps", "Mbps" }, GUILayout.Width(64f), GUILayout.MaxWidth(64f), GUILayout.ExpandWidth(false));
GUILayout.EndHorizontal();
}
public static void DrawSection(string name, ref bool isExpanded, System.Action action)
{
Color boxbgColor = new Color(0.8f, 0.8f, 0.8f, 0.1f);
if (EditorGUIUtility.isProSkin)
{
boxbgColor = Color.black;
}
DrawSectionColored(name, ref isExpanded, action, boxbgColor, Color.white, Color.white);
}
public static void DrawSectionColored(string name, ref bool isExpanded, System.Action action, Color boxbgcolor, Color bgcolor, Color color)
{
GUI.color = Color.white;
GUI.backgroundColor = Color.clear;
//GUI.backgroundColor = bgcolor;
if (isExpanded)
{
GUI.color = Color.white;
GUI.backgroundColor = boxbgcolor;
}
GUILayout.BeginVertical("box");
GUI.color = color;
GUI.backgroundColor = bgcolor;
if (GUILayout.Button(name, EditorStyles.toolbarButton))
{
isExpanded = !isExpanded;
}
//GUI.backgroundColor = Color.white;
//GUI.color = Color.white;
if (isExpanded)
{
action.Invoke();
}
GUI.backgroundColor = Color.white;
GUI.color = Color.white;
GUILayout.EndVertical();
}
}
}
#endif

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f7411c9d2a49082438fc100e6d5418c2
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@@ -0,0 +1,212 @@
#if UNITY_2018_1_OR_NEWER || (UNITY_2017_4_OR_NEWER && !UNITY_2017_4_0 && !UNITY_2017_4_1 && !UNITY_2017_4_2 && !UNITY_2017_4_3 && !UNITY_2017_4_4 && !UNITY_2017_4_5 && !UNITY_2017_4_6 && !UNITY_2017_4_7 && !UNITY_2017_4_8 && !UNITY_2017_4_9 && !UNITY_2017_4_10 && !UNITY_2017_4_11 && !UNITY_2017_4_12 && !UNITY_2017_4_13 && !UNITY_2017_4_14 && !UNITY_2017_4_15 && !UNITY_2017_4_15)
// Unity added Android ARM64 support in 2018.1, and backported to 2017.4.16
#define AVPROMC_UNITY_ANDROID_ARM64_SUPPORT
#endif
#if !UNITY_2019_3_OR_NEWER || UNITY_2021_2_OR_NEWER || (UNITY_2020_3_OR_NEWER && !UNITY_2020_3_0 && !UNITY_2020_3_1 && !UNITY_2020_3_2 && !UNITY_2020_3_3 && !UNITY_2020_3_4 && !UNITY_2020_3_5 && !UNITY_2020_3_6 && !UNITY_2020_3_7 && !UNITY_2020_3_8 && !UNITY_2020_3_9 && !UNITY_2020_3_10 && !UNITY_2020_3_11 && !UNITY_2020_3_12 && !UNITY_2020_3_13 && !UNITY_2020_3_14 && !UNITY_2020_3_15 && !UNITY_2020_3_16) || (UNITY_2019_4_OR_NEWER && !UNITY_2019_4_0 && !UNITY_2019_4_1 && !UNITY_2019_4_2 && !UNITY_2019_4_3 && !UNITY_2019_4_4 && !UNITY_2019_4_5 && !UNITY_2019_4_6 && !UNITY_2019_4_7 && !UNITY_2019_4_8 && !UNITY_2019_4_9 && !UNITY_2019_4_10 && !UNITY_2019_4_11 && !UNITY_2019_4_12 && !UNITY_2019_4_13 && !UNITY_2019_4_14 && !UNITY_2019_4_15 && !UNITY_2019_4_16 && !UNITY_2019_4_17 && !UNITY_2019_4_18 && !UNITY_2019_4_19 && !UNITY_2019_4_20 && !UNITY_2019_4_21 && !UNITY_2019_4_22 && !UNITY_2019_4_23 && !UNITY_2019_4_24 && !UNITY_2019_4_25 && !UNITY_2019_4_26 && !UNITY_2019_4_27 && !UNITY_2019_4_28 && !UNITY_2019_4_29 && !UNITY_2019_4_30)
// Unity dropped Android x86 support in 2019, but then added it back in 2021.2.0 and backported to 2020.3.17 and 2019.4.31
#define AVPROMC_UNITY_ANDROID_X86_SUPPORT
#endif
#if UNITY_2021_2_OR_NEWER || (UNITY_2020_3_OR_NEWER && !UNITY_2020_3_0 && !UNITY_2020_3_1 && !UNITY_2020_3_2 && !UNITY_2020_3_3 && !UNITY_2020_3_4 && !UNITY_2020_3_5 && !UNITY_2020_3_6 && !UNITY_2020_3_7 && !UNITY_2020_3_8 && !UNITY_2020_3_9 && !UNITY_2020_3_10 && !UNITY_2020_3_11 && !UNITY_2020_3_12 && !UNITY_2020_3_13 && !UNITY_2020_3_14 && !UNITY_2020_3_15 && !UNITY_2020_3_16) || (UNITY_2019_4_OR_NEWER && !UNITY_2019_4_0 && !UNITY_2019_4_1 && !UNITY_2019_4_2 && !UNITY_2019_4_3 && !UNITY_2019_4_4 && !UNITY_2019_4_5 && !UNITY_2019_4_6 && !UNITY_2019_4_7 && !UNITY_2019_4_8 && !UNITY_2019_4_9 && !UNITY_2019_4_10 && !UNITY_2019_4_11 && !UNITY_2019_4_12 && !UNITY_2019_4_13 && !UNITY_2019_4_14 && !UNITY_2019_4_15 && !UNITY_2019_4_16 && !UNITY_2019_4_17 && !UNITY_2019_4_18 && !UNITY_2019_4_19 && !UNITY_2019_4_20 && !UNITY_2019_4_21 && !UNITY_2019_4_22 && !UNITY_2019_4_23 && !UNITY_2019_4_24 && !UNITY_2019_4_25 && !UNITY_2019_4_26 && !UNITY_2019_4_27 && !UNITY_2019_4_28 && !UNITY_2019_4_29 && !UNITY_2019_4_30)
// Unity added Android x86_64 support in 2021.2.0 and backported to 2020.3.17 and 2019.4.31
#define AVPROMC_UNITY_ANDROID_X8664_SUPPORT
#endif
#if UNITY_2019_1_OR_NEWER
#define AVPROMC_UNITY_UWP_ARM64_SUPPORT
#endif
#if UNITY_2018_1_OR_NEWER
#define AVPROMC_UNITY_BUILDWITHREPORT_SUPPORT
#endif
using UnityEngine;
using UnityEditor;
using UnityEditor.Build;
#if AVPROMC_UNITY_BUILDWITHREPORT_SUPPORT
using UnityEditor.Build.Reporting;
#endif
using System.Collections.Generic;
//-----------------------------------------------------------------------------
// Copyright 2015-2021 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
/// <summary>
/// Some versions of Unity do not support specific CPU architectures for plugin files
/// so this Build Preprocessor checks the plugin files for those and either disables
/// them if their arch is not supported, or assigns the correct arch and enables them
/// </summary>
public class PluginProcessor :
#if AVPROMC_UNITY_BUILDWITHREPORT_SUPPORT
IPreprocessBuildWithReport
#else
IPreprocessBuild
#endif
{
internal class CpuArchitecture
{
internal CpuArchitecture(string code, bool isSupportedByThisUnityVersion)
{
_code = code;
_isSupportedByThisUnityVersion = isSupportedByThisUnityVersion;
}
private string _code;
private bool _isSupportedByThisUnityVersion;
internal string Code()
{
return _code;
}
internal bool IsSupportedByThisUnityVersion()
{
return _isSupportedByThisUnityVersion;
}
}
internal class PluginFile
{
internal PluginFile(BuildTarget buildTarget, string relativeFilePath, bool supportsEditor, CpuArchitecture cpuArchitecture)
{
_buildTarget = buildTarget;
_relativeFilePath = relativeFilePath;
_cpuArchitecture = cpuArchitecture;
_supportsEditor = supportsEditor;
}
internal bool IsBuildTarget(BuildTarget buildTarget)
{
return (_buildTarget == buildTarget);
}
internal BuildTarget BuildTarget()
{
return _buildTarget;
}
internal bool IsForFile(string path)
{
return path.Replace("\\", "/").Contains(_relativeFilePath);
}
internal bool IsSupportedByThisUnityVersion()
{
return _cpuArchitecture.IsSupportedByThisUnityVersion();
}
internal string CpuArchitectureCode()
{
return _cpuArchitecture.Code();
}
internal bool SupportsEditor()
{
return _supportsEditor;
}
private BuildTarget _buildTarget;
private string _relativeFilePath;
private CpuArchitecture _cpuArchitecture;
private bool _supportsEditor;
}
private static List<PluginFile> _pluginFiles = new List<PluginFile>(32);
internal static void AddPluginFiles(BuildTarget buildTarget, string[] filenames, string folderPrefix, bool supportsEditor, CpuArchitecture cpuArchitecture)
{
foreach (string filename in filenames)
{
_pluginFiles.Add(new PluginFile(buildTarget, folderPrefix + filename, supportsEditor, cpuArchitecture));
}
}
internal static void AddPlugins_Android()
{
#if AVPROMC_UNITY_ANDROID_ARM64_SUPPORT
const bool IsAndroidArm64Supported = true;
#else
const bool IsAndroidArm64Supported = false;
#endif
#if AVPROMC_UNITY_ANDROID_X86_SUPPORT
const bool IsAndroidX86Supported = true;
#else
const bool IsAndroidX86Supported = false;
#endif
#if AVPROMC_UNITY_ANDROID_X8664_SUPPORT
const bool IsAndroidX8664Supported = true;
#else
const bool IsAndroidX8664Supported = false;
#endif
string[] filenames = {
"libAVProMovieCaptureNative.so",
};
BuildTarget target = BuildTarget.Android;
AddPluginFiles(target, filenames, "Android/libs/armeabi-v7a/", false, new CpuArchitecture("ARMv7", true));
AddPluginFiles(target, filenames, "Android/libs/arm64-v8a/", false, new CpuArchitecture("ARM64", IsAndroidArm64Supported));
AddPluginFiles(target, filenames, "Android/libs/x86/", false, new CpuArchitecture("X86", IsAndroidX86Supported));
AddPluginFiles(target, filenames, "Android/libs/x86_64/", false, new CpuArchitecture("X86_64", IsAndroidX8664Supported));
}
private static void BuildPluginFileList()
{
_pluginFiles.Clear();
AddPlugins_Android();
}
public int callbackOrder { get { return 0; } }
#if AVPROMC_UNITY_BUILDWITHREPORT_SUPPORT
public void OnPreprocessBuild(BuildReport report)
{
BuildPluginFileList();
CheckNativePlugins(report.summary.platform);
}
#else
public void OnPreprocessBuild(BuildTarget target, string path)
{
BuildPluginFileList();
CheckNativePlugins(target);
}
#endif
internal static void CheckNativePlugins(BuildTarget target)
{
PluginImporter[] importers = PluginImporter.GetAllImporters();
foreach (PluginImporter pi in importers)
{
// Currently we're only interested in native plugins
if (!pi.isNativePlugin) continue;
// Skip plugins that aren't in the AVProMovieCapture path
// NOTE: This is commented out for now to allow the case where users have moved the plugin files to another folder.
// Eventually might need a more robust method, perhaps using GUIDS
//if (!pi.assetPath.Contains("AVProMovieCapture")) continue;
foreach (PluginFile pluginFile in _pluginFiles)
{
if (pluginFile.IsBuildTarget(target) &&
pluginFile.IsForFile(pi.assetPath))
{
pi.SetCompatibleWithAnyPlatform(false);
if (pluginFile.IsSupportedByThisUnityVersion())
{
Debug.Log("[AVProMovieCapture] Enabling " + pluginFile.CpuArchitectureCode() + " " + pi.assetPath);
pi.SetCompatibleWithEditor(pluginFile.SupportsEditor());
pi.SetCompatibleWithPlatform(pluginFile.BuildTarget(), true);
pi.SetPlatformData(pluginFile.BuildTarget(), "CPU", pluginFile.CpuArchitectureCode());
}
else
{
pi.SetCompatibleWithEditor(false);
pi.SetCompatibleWithPlatform(pluginFile.BuildTarget(), false);
pi.SetPlatformData(pluginFile.BuildTarget(), "CPU", "");
Debug.Log("[AVProMovieCapture] Disabling " + pluginFile.CpuArchitectureCode() + " " + pi.assetPath);
}
pi.SaveAndReimport();
break;
}
}
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More