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 GameObject pls;
|
||||||
|
|
||||||
private bool manualComputation = false;
|
private bool manualComputation = false;
|
||||||
|
private Mat skullTextureMat;
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
skullTextureMat = MatDisplay.LoadRGBATexture("Resources/flying_skull_tex.png");
|
||||||
|
|
||||||
dstPoints = new MatOfPoint2f();
|
dstPoints = new MatOfPoint2f();
|
||||||
dstPoints.alloc(4);
|
dstPoints.alloc(4);
|
||||||
dstPoints.put(3, 0, width, height);
|
dstPoints.put(3, 0, width, height);
|
||||||
|
@ -61,6 +64,7 @@ public class Homo_script : MonoBehaviour
|
||||||
pls = GameObject.Find("pls");
|
pls = GameObject.Find("pls");
|
||||||
rend = pls.GetComponent<Renderer>();
|
rend = pls.GetComponent<Renderer>();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
|
@ -154,13 +158,24 @@ public class Homo_script : MonoBehaviour
|
||||||
|
|
||||||
Imgproc.warpPerspective(camImgCopy, outputMat, homo, new Size(outputMat.width(), outputMat.height()));
|
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));
|
var rectOutputMat = new Mat(outputMat, new OpenCVForUnity.CoreModule.Rect(0, 0, width, height));
|
||||||
|
|
||||||
MatDisplay.MatToTexture(rectOutputMat, ref outputTexture);
|
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
|
//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;
|
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_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!135 &67228972
|
--- !u!135 &67228972
|
||||||
SphereCollider:
|
SphereCollider:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -227,6 +227,166 @@ MonoBehaviour:
|
||||||
m_Script: {fileID: 11500000, guid: f4ea9ea3ecbdd4784bc2ad6084c3db79, type: 3}
|
m_Script: {fileID: 11500000, guid: f4ea9ea3ecbdd4784bc2ad6084c3db79, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
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
|
--- !u!1 &429717595
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -265,18 +425,6 @@ MonoBehaviour:
|
||||||
fy: 650
|
fy: 650
|
||||||
cx: 320
|
cx: 320
|
||||||
cy: 240
|
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
|
--- !u!4 &429717597
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -309,7 +457,7 @@ GameObject:
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!135 &442480153
|
--- !u!135 &442480153
|
||||||
SphereCollider:
|
SphereCollider:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -400,7 +548,7 @@ GameObject:
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!135 &566786899
|
--- !u!135 &566786899
|
||||||
SphereCollider:
|
SphereCollider:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -593,7 +741,7 @@ MeshFilter:
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 723326977}
|
m_GameObject: {fileID: 723326977}
|
||||||
m_Mesh: {fileID: 1366717396}
|
m_Mesh: {fileID: 345927574}
|
||||||
--- !u!23 &723326979
|
--- !u!23 &723326979
|
||||||
MeshRenderer:
|
MeshRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -611,7 +759,7 @@ MeshRenderer:
|
||||||
m_RenderingLayerMask: 1
|
m_RenderingLayerMask: 1
|
||||||
m_RendererPriority: 0
|
m_RendererPriority: 0
|
||||||
m_Materials:
|
m_Materials:
|
||||||
- {fileID: 1584614219}
|
- {fileID: 2134106160}
|
||||||
m_StaticBatchInfo:
|
m_StaticBatchInfo:
|
||||||
firstSubMesh: 0
|
firstSubMesh: 0
|
||||||
subMeshCount: 0
|
subMeshCount: 0
|
||||||
|
@ -763,166 +911,6 @@ Transform:
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 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
|
--- !u!1 &1437005650
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -941,7 +929,7 @@ GameObject:
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!135 &1437005651
|
--- !u!135 &1437005651
|
||||||
SphereCollider:
|
SphereCollider:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -1124,34 +1112,6 @@ Transform:
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
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
|
--- !u!1001 &1590124969
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -1219,5 +1179,57 @@ PrefabInstance:
|
||||||
propertyPath: m_LocalScale.z
|
propertyPath: m_LocalScale.z
|
||||||
value: 20
|
value: 20
|
||||||
objectReference: {fileID: 0}
|
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_RemovedComponents: []
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: b07d7c0ed92004731951cc02dfe544a4, type: 3}
|
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