Done with homo inverse
This commit is contained in:
parent
c743adaebd
commit
14a17145c8
|
@ -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;
|
||||
|
||||
|
|
77
AR-2b/Assets/Models/Materials/flying_skull_tex.mat
Normal file
77
AR-2b/Assets/Models/Materials/flying_skull_tex.mat
Normal 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}
|
Before Width: | Height: | Size: 340 KiB After Width: | Height: | Size: 340 KiB |
234
AR-2b/Assets/homo_inv.cs
Normal file
234
AR-2b/Assets/homo_inv.cs
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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}
|
||||
|
|
1265
AR-2b/Assets/inverse_homo_skull.unity
Normal file
1265
AR-2b/Assets/inverse_homo_skull.unity
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user