Done with homo inverse

This commit is contained in:
Alexander Munch-Hansen 2019-02-28 15:44:34 +01:00
parent c743adaebd
commit 14a17145c8
6 changed files with 1811 additions and 208 deletions

View File

@ -40,11 +40,14 @@ public class Homo_script : MonoBehaviour
private GameObject pls;
private bool manualComputation = false;
private Mat skullTextureMat;
void Start()
{
skullTextureMat = MatDisplay.LoadRGBATexture("Resources/flying_skull_tex.png");
dstPoints = new MatOfPoint2f();
dstPoints.alloc(4);
dstPoints.put(3, 0, width, height);
@ -61,6 +64,7 @@ public class Homo_script : MonoBehaviour
pls = GameObject.Find("pls");
rend = pls.GetComponent<Renderer>();
}
void Update()
@ -154,13 +158,24 @@ public class Homo_script : MonoBehaviour
Imgproc.warpPerspective(camImgCopy, outputMat, homo, new Size(outputMat.width(), outputMat.height()));
Mat outputSkullMat = skullTextureMat.clone();
Imgproc.warpPerspective(skullTextureMat, outputSkullMat, homo.inv(), new Size(outputSkullMat.width(), outputSkullMat.height()));
var rectOutputMat = new Mat(outputMat, new OpenCVForUnity.CoreModule.Rect(0, 0, width, height));
MatDisplay.MatToTexture(rectOutputMat, ref outputTexture);
Mat anotherCamImg = camImageMat.clone();
Core.addWeighted(camImageMat, 0.95f, outputSkullMat, 0.4f, 0.0, anotherCamImg);
//Display the Mat that includes video feed and debug points
MatDisplay.DisplayMat(camImageMat, MatDisplaySettings.FULL_BACKGROUND);
MatDisplay.DisplayMat(anotherCamImg, MatDisplaySettings.FULL_BACKGROUND);
rend.sharedMaterial.mainTexture = outputTexture;

View File

@ -0,0 +1,77 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: flying_skull_tex
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
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: 2800000, guid: da937246ba8864191b811e386bf6987b, type: 3}
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: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _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

Before

Width:  |  Height:  |  Size: 340 KiB

After

Width:  |  Height:  |  Size: 340 KiB

234
AR-2b/Assets/homo_inv.cs Normal file
View File

@ -0,0 +1,234 @@
using OpenCVForUnity.CoreModule;
using OpenCVForUnity.ImgprocModule;
using OpenCVForUnity.ObjdetectModule;
using OpenCVForUnity.UnityUtils;
using OpenCVForUnity.UtilsModule;
using UnityEngine;
using OpenCVForUnity.Calib3dModule;
using System.Linq;
using Vuforia;
public class homo_inv : MonoBehaviour
{
public Camera cam;
public GameObject corner1;
public GameObject corner2;
public GameObject corner3;
public GameObject corner4;
//Default values: guessed, not calibrated
public float fx = 650;
public float fy = 650;
public float cx = 320;
public float cy = 240;
private int width = 1024;
private int height = 1024;
private MatOfPoint2f dstPoints;
private Texture2D outputTexture;
private Mat camImageMat;
private GameObject pls;
private Renderer rend;
private bool manualComputation = false;
private Mat skullTextureMat;
void Start()
{
skullTextureMat = MatDisplay.LoadRGBATexture("Resources/flying_skull_tex.png");
dstPoints = new MatOfPoint2f();
dstPoints.alloc(4);
/*dstPoints.put(0, 0, 0, height);
dstPoints.put(1, 0, width, height);
dstPoints.put(3, 0, width, 0);
dstPoints.put(2, 0, 0, 0);*/
dstPoints.put(2, 0, 0, height);
dstPoints.put(3, 0, width, height);
dstPoints.put(0, 0, 0, 0);
dstPoints.put(1, 0, width, 0);
outputTexture = new Texture2D(width, height, TextureFormat.RGBA32, false);
// Debugging
pls = GameObject.Find("pls");
rend = pls.GetComponent<Renderer>();
}
void Update()
{
//Access camera image provided by Vuforia
Image camImg = CameraDevice.Instance.GetCameraImage(Image.PIXEL_FORMAT.RGBA8888);
if (camImg != null)
{
if (camImg != null)
{
if (camImageMat == null)
{
camImageMat = new Mat(camImg.Height, camImg.Width, CvType.CV_8UC4);
}
camImageMat.put(0, 0, camImg.Pixels);
}
//---- TRANSFORM/PROJECT CORNER WORLD COORDINATES TO IMAGE COORDINATES ----
Vector3 worldPnt1 = corner1.transform.position;
Vector3 worldPnt2 = corner2.transform.position;
Vector3 worldPnt3 = corner3.transform.position;
Vector3 worldPnt4 = corner4.transform.position;
//See lecture slides
Matrix4x4 Rt = cam.transform.worldToLocalMatrix;
Matrix4x4 A = Matrix4x4.identity;
A.m00 = fx;
A.m11 = fy;
A.m02 = cx;
A.m12 = cy;
//See equation for pinhole camera model
Matrix4x4 worldToImage = A * Rt;
//Apply transform to get homogeneous image coordinates
Vector3 hUV1 = worldToImage.MultiplyPoint3x4(worldPnt1);
Vector3 hUV2 = worldToImage.MultiplyPoint3x4(worldPnt2);
Vector3 hUV3 = worldToImage.MultiplyPoint3x4(worldPnt3);
Vector3 hUV4 = worldToImage.MultiplyPoint3x4(worldPnt4);
//hUV are the image coordinates in homogeneous coordinates, we need to normalize, i.e., divide by Z to get to Cartesian coordinates
Vector2 uv1 = new Vector2(hUV1.x, hUV1.y) / hUV1.z;
Vector2 uv2 = new Vector2(hUV2.x, hUV2.y) / hUV2.z;
Vector2 uv3 = new Vector2(hUV3.x, hUV3.y) / hUV3.z;
Vector2 uv4 = new Vector2(hUV4.x, hUV4.y) / hUV4.z;
//Do not forget to alloc before putting values into a MatOfPoint2f (see Start() above)
//We need to flip the v-coordinates, see coordinate system overview
float maxV = camImg.Height - 1;
MatOfPoint2f imagePoints = new MatOfPoint2f();
imagePoints.alloc(4);
imagePoints.put(0, 0, uv1.x, maxV - uv1.y);
imagePoints.put(1, 0, uv2.x, maxV - uv2.y);
imagePoints.put(2, 0, uv3.x, maxV - uv3.y);
imagePoints.put(3, 0, uv4.x, maxV - uv4.y);
//Debug draw points using OpenCV's drawing functions
Point imgPnt1 = new Point(imagePoints.get(0, 0));
Point imgPnt2 = new Point(imagePoints.get(1, 0));
Point imgPnt3 = new Point(imagePoints.get(2, 0));
Point imgPnt4 = new Point(imagePoints.get(3, 0));
Mat camImgCopy = camImageMat.clone();
Mat outputMat = camImgCopy.clone();
if (true)
{
Imgproc.circle(camImageMat, imgPnt1, 5, new Scalar(255, 0, 0, 255));
Imgproc.circle(camImageMat, imgPnt2, 5, new Scalar(0, 255, 0, 255));
Imgproc.circle(camImageMat, imgPnt3, 5, new Scalar(0, 0, 255, 255));
Imgproc.circle(camImageMat, imgPnt4, 5, new Scalar(255, 255, 0, 255));
}
Mat homo = new Mat();
if (manualComputation)
{
homo = ComputeHomo(imagePoints, dstPoints);
}
else
{
homo = Calib3d.findHomography(imagePoints, dstPoints);
}
Mat outputSkullMat = camImgCopy.clone();
//Mat outputSkullMat = skullTextureMat.clone();
Imgproc.warpPerspective(skullTextureMat, outputSkullMat, homo.inv(), outputSkullMat.size());
Mat dstCam = camImageMat.clone();
Core.addWeighted(camImageMat, 0.95f, outputSkullMat, 0.7f, 0.0f, dstCam);
//Display the Mat that includes video feed and debug points
MatDisplay.DisplayMat(dstCam, MatDisplaySettings.FULL_BACKGROUND);
//rend.sharedMaterial.mainTexture = outputTexture;
// Makes camera prettier
//cam.fieldOfView = 2 * Mathf.Atan(camImg.Height * 0.5f / fy) * Mathf.Rad2Deg;
imagePoints.Dispose();
}
}
Mat ComputeHomo(MatOfPoint2f imgPoints, MatOfPoint2f destPoints)
{
Mat H = new Mat(8, 1, CvType.CV_32FC1);
Mat A = new Mat(8, 8, CvType.CV_32FC1);
Mat b = new Mat(8, 1, CvType.CV_32FC1);
for (int i = 0; i < 4; i++)
{
var u = destPoints.get(i, 0)[0];
var v = destPoints.get(i, 0)[1];
b.put(i * 2, 0, u);
b.put((i * 2)+1, 0, v);
var x = imgPoints.get(i, 0)[0];
var y = imgPoints.get(i, 0)[1];
A.put(i*2, 0, x, y, 1, 0, 0, 0, -u*x, -u*y);
A.put((i * 2)+1, 0, 0, 0, 0, x, y, 1, -v*x, -v*y);
}
Core.solve(A, b, H);
Mat ShitsReal = new Mat(3, 3, CvType.CV_32FC1);
ShitsReal.put(0, 0, H.get(0,0)[0], H.get(1,0)[0], H.get(2,0)[0]);
ShitsReal.put(1, 0, H.get(3,0)[0], H.get(4,0)[0], H.get(5,0)[0]);
ShitsReal.put(2, 0, H.get(6,0)[0], H.get(7,0)[0], 1);
return ShitsReal;
}
}

View File

@ -130,7 +130,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!135 &67228972
SphereCollider:
m_ObjectHideFlags: 0
@ -227,6 +227,166 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f4ea9ea3ecbdd4784bc2ad6084c3db79, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!43 &345927574
Mesh:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ImageTargetMesh14864
serializedVersion: 9
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 6
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 4
localAABB:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0.5, y: 0, z: 0.5}
m_Shapes:
vertices: []
shapes: []
channels: []
fullWeights: []
m_BindPose: []
m_BoneNameHashes:
m_RootBoneNameHash: 0
m_MeshCompression: 0
m_IsReadable: 1
m_KeepVertices: 1
m_KeepIndices: 1
m_IndexFormat: 0
m_IndexBuffer: 000001000200020001000300
m_VertexData:
serializedVersion: 2
m_VertexCount: 4
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 12
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 24
format: 0
dimension: 2
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
m_DataSize: 128
_typelessdata: 000000bf00000000000000bf000000000000803f000000000000000000000000000000bf000000000000003f000000000000803f00000000000000000000803f0000003f00000000000000bf000000000000803f000000000000803f000000000000003f000000000000003f000000000000803f000000000000803f0000803f
m_CompressedMesh:
m_Vertices:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_UV:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Normals:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Tangents:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Weights:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_NormalSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_TangentSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_FloatColors:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_BoneIndices:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_Triangles:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_UVInfo: 0
m_LocalAABB:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0.5, y: 0, z: 0.5}
m_MeshUsageFlags: 0
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
m_MeshMetrics[0]: 1
m_MeshMetrics[1]: 1
m_MeshOptimized: 0
m_StreamData:
offset: 0
size: 0
path:
--- !u!1 &429717595
GameObject:
m_ObjectHideFlags: 0
@ -265,18 +425,6 @@ MonoBehaviour:
fy: 650
cx: 320
cy: 240
p1:
x: -0.5
y: 0.5
p2:
x: 0.5
y: 0.5
p3:
x: 0.5
y: -0.5
p4:
x: -0.5
y: -0.5
--- !u!4 &429717597
Transform:
m_ObjectHideFlags: 0
@ -309,7 +457,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!135 &442480153
SphereCollider:
m_ObjectHideFlags: 0
@ -400,7 +548,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!135 &566786899
SphereCollider:
m_ObjectHideFlags: 0
@ -593,7 +741,7 @@ MeshFilter:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 723326977}
m_Mesh: {fileID: 1366717396}
m_Mesh: {fileID: 345927574}
--- !u!23 &723326979
MeshRenderer:
m_ObjectHideFlags: 0
@ -611,7 +759,7 @@ MeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 1584614219}
- {fileID: 2134106160}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@ -763,166 +911,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!43 &1366717396
Mesh:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ImageTargetMesh7516
serializedVersion: 9
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 6
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 4
localAABB:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0.5, y: 0, z: 0.5}
m_Shapes:
vertices: []
shapes: []
channels: []
fullWeights: []
m_BindPose: []
m_BoneNameHashes:
m_RootBoneNameHash: 0
m_MeshCompression: 0
m_IsReadable: 1
m_KeepVertices: 1
m_KeepIndices: 1
m_IndexFormat: 0
m_IndexBuffer: 000001000200020001000300
m_VertexData:
serializedVersion: 2
m_VertexCount: 4
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 12
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 24
format: 0
dimension: 2
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
m_DataSize: 128
_typelessdata: 000000bf00000000000000bf000000000000803f000000000000000000000000000000bf000000000000003f000000000000803f00000000000000000000803f0000003f00000000000000bf000000000000803f000000000000803f000000000000003f000000000000003f000000000000803f000000000000803f0000803f
m_CompressedMesh:
m_Vertices:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_UV:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Normals:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Tangents:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Weights:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_NormalSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_TangentSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_FloatColors:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_BoneIndices:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_Triangles:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_UVInfo: 0
m_LocalAABB:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0.5, y: 0, z: 0.5}
m_MeshUsageFlags: 0
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
m_MeshMetrics[0]: 1
m_MeshMetrics[1]: 1
m_MeshOptimized: 0
m_StreamData:
offset: 0
size: 0
path:
--- !u!1 &1437005650
GameObject:
m_ObjectHideFlags: 0
@ -941,7 +929,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!135 &1437005651
SphereCollider:
m_ObjectHideFlags: 0
@ -1124,34 +1112,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!21 &1584614219
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: 'unwrapped_skullMaterial
7526'
m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 172f3df370d54b7a9d705b7c2fa63bac, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats: []
m_Colors:
- _Color: {r: 0.9607843, g: 0.10606851, b: 0.050980415, a: 1}
--- !u!1001 &1590124969
PrefabInstance:
m_ObjectHideFlags: 0
@ -1219,5 +1179,57 @@ PrefabInstance:
propertyPath: m_LocalScale.z
value: 20
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: b07d7c0ed92004731951cc02dfe544a4, type: 3}
propertyPath: m_LocalRotation.x
value: 0.7071068
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: b07d7c0ed92004731951cc02dfe544a4, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: b07d7c0ed92004731951cc02dfe544a4, type: 3}
propertyPath: m_LocalRotation.w
value: -0.7071068
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: b07d7c0ed92004731951cc02dfe544a4, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 270
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: b07d7c0ed92004731951cc02dfe544a4, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 13700000, guid: b07d7c0ed92004731951cc02dfe544a4, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: d07de9e9029cb4e08813867ec400ba4e, type: 2}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: b07d7c0ed92004731951cc02dfe544a4, type: 3}
--- !u!21 &2134106160
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: 'unwrapped_skullMaterial
14874'
m_Shader: {fileID: 4800000, guid: bd60f254bfe034e099e9f70c306d67e7, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 172f3df370d54b7a9d705b7c2fa63bac, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats: []
m_Colors:
- _Color: {r: 0.9607843, g: 0.10606851, b: 0.050980415, a: 1}

File diff suppressed because it is too large Load Diff