Rip
BIN
AR-2/Assets/.DS_Store
vendored
1156
AR-2/Assets/2a1.unity
Normal file
1156
AR-2/Assets/2a2.unity
Normal file
15
AR-2/Assets/BeerShader.shader
Normal file
|
@ -0,0 +1,15 @@
|
|||
Shader "AR/BeerShader"
|
||||
{
|
||||
SubShader
|
||||
{
|
||||
Tags { "Queue"="Geometry-100" }
|
||||
|
||||
|
||||
Pass
|
||||
{
|
||||
ZWrite On
|
||||
ColorMask 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
60
AR-2/Assets/BeerShader2.shader
Normal file
|
@ -0,0 +1,60 @@
|
|||
Shader "AR/BeerShader_2"
|
||||
{
|
||||
|
||||
Properties {
|
||||
_MainTex ("Beer Texture", 2D) = "white" {}
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
Tags { "Queue"="Geometry-100" }
|
||||
|
||||
ZWrite On
|
||||
ColorMask 0
|
||||
|
||||
Pass
|
||||
{
|
||||
|
||||
CGPROGRAM
|
||||
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
fixed4 _Color;
|
||||
|
||||
struct Input {
|
||||
float4 position : POSITION;
|
||||
float4 color : COLOR;
|
||||
float2 coord : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct VertexToFragment {
|
||||
float4 position : SV_POSITION;
|
||||
float4 color : COLOR;
|
||||
half2 coord : TEXCOORD0;
|
||||
};
|
||||
|
||||
|
||||
VertexToFragment vert(Input IN) {
|
||||
VertexToFragment OUT;
|
||||
OUT.position = UnityObjectToClipPos( IN.position);
|
||||
OUT.color = IN.color;
|
||||
OUT.coord = IN.coord;
|
||||
return OUT;
|
||||
}
|
||||
|
||||
sampler2D _MainTex;
|
||||
|
||||
fixed4 frag(VertexToFragment IN) : SV_Target {
|
||||
fixed4 c = tex2D(_MainTex, IN.coord) * IN.color;
|
||||
if (c.r == 0) {
|
||||
discard;
|
||||
}
|
||||
return IN.color;
|
||||
}
|
||||
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 52 KiB |
473
AR-2/Assets/MatDisplay.cs
Executable file
|
@ -0,0 +1,473 @@
|
|||
using OpenCVForUnity.CoreModule;
|
||||
using OpenCVForUnity.ImgcodecsModule;
|
||||
using OpenCVForUnity.ImgprocModule;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public struct MatDisplaySettings {
|
||||
|
||||
public static float DEFAULT_SIZE = 0.75f;
|
||||
public static MatDisplaySettings FULL_BACKGROUND = new MatDisplaySettings(0,0,2,true);
|
||||
public static MatDisplaySettings BOTTOM_LEFT = new MatDisplaySettings(-1, -1, DEFAULT_SIZE, false);
|
||||
public static MatDisplaySettings BOTTOM_RIGHT = new MatDisplaySettings(1, -1, DEFAULT_SIZE, false);
|
||||
public static MatDisplaySettings TOP_LEFT = new MatDisplaySettings(-1, 1, DEFAULT_SIZE, false);
|
||||
public static MatDisplaySettings TOP_RIGHT = new MatDisplaySettings(1, 1, DEFAULT_SIZE, false);
|
||||
|
||||
public float x, y, size;
|
||||
public bool background;
|
||||
|
||||
public MatDisplaySettings(float x,float y,float size,bool background)
|
||||
{
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.size = size;
|
||||
this.background = background;
|
||||
}
|
||||
|
||||
public MatDisplaySettings(float x,float y,float size) : this(x,y,size,false)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
internal class MatDrawer
|
||||
{
|
||||
public bool active = false;
|
||||
public MatDisplaySettings properties;
|
||||
public int channels;
|
||||
|
||||
public Texture2D texture = null;
|
||||
public bool flipY = false;
|
||||
|
||||
public void Activate(MatDisplaySettings properties)
|
||||
{
|
||||
active = true;
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
public void Draw(Material material)
|
||||
{
|
||||
if (active)
|
||||
{
|
||||
material.mainTexture = texture;
|
||||
material.SetPass(0);
|
||||
|
||||
float height = properties.size;
|
||||
float width = height;
|
||||
if (texture != null)
|
||||
width *= (float)texture.width / texture.height;
|
||||
width *= ((float)Screen.height / Screen.width);
|
||||
float x = properties.x - width * 0.5f;
|
||||
float y = properties.y - height * 0.5f;
|
||||
|
||||
if (x < -1)
|
||||
x = -1;
|
||||
if (x > 1 - width)
|
||||
x = 1 - width;
|
||||
if (y < -1)
|
||||
y = -1;
|
||||
if (y > 1 - height)
|
||||
y = 1 - height;
|
||||
|
||||
float y1 = flipY ? y : y + height;
|
||||
float y2 = flipY ? y + height : y;
|
||||
|
||||
GL.Begin(GL.TRIANGLE_STRIP);
|
||||
GL.Color(Color.white);
|
||||
GL.TexCoord(new Vector3(0, 0, 0));
|
||||
GL.Vertex(new Vector3(x, y1, 0));
|
||||
GL.Color(Color.white);
|
||||
GL.TexCoord(new Vector3(1, 0, 0));
|
||||
GL.Vertex(new Vector3(x + width, y1, 0));
|
||||
GL.Color(Color.white);
|
||||
GL.TexCoord(new Vector3(0, 1, 0));
|
||||
GL.Vertex(new Vector3(x, y2, 0));
|
||||
GL.Color(Color.white);
|
||||
GL.TexCoord(new Vector3(1, 1, 0));
|
||||
GL.Vertex(new Vector3(x + width, y2, 0));
|
||||
GL.End();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class MatDisplay : MonoBehaviour {
|
||||
|
||||
private static MatDisplay instance;
|
||||
|
||||
public static bool SAFE_MODE = false;
|
||||
public static bool X86 = false;
|
||||
|
||||
private static bool started = false;
|
||||
private static bool error = false;
|
||||
|
||||
private static byte[] convData = new byte[2048 * 2048 * 4];
|
||||
private static Mat convertMat;
|
||||
private static Mat flipMat = new Mat();
|
||||
|
||||
private static MatDrawer[] matDisplays = new MatDrawer[64];
|
||||
private static MatDrawer[] texDisplays = new MatDrawer[64];
|
||||
private static int texDisplayCount = 0;
|
||||
|
||||
private static bool awaitRender = false;
|
||||
|
||||
public Material material;
|
||||
|
||||
private Material foregroundMaterial;
|
||||
private Material backgroundMaterial;
|
||||
|
||||
private Camera cam;
|
||||
|
||||
void Start () {
|
||||
cam = GetComponent<Camera>();
|
||||
if(cam==null)
|
||||
{
|
||||
cam = GameObject.FindObjectOfType<Camera>();
|
||||
}
|
||||
if(cam==null)
|
||||
{
|
||||
Debug.LogError("No camera found");
|
||||
}
|
||||
if(material==null)
|
||||
{
|
||||
material = new Material(Shader.Find("AR/MatDisplay"));
|
||||
}
|
||||
foregroundMaterial = new Material(material);
|
||||
foregroundMaterial.renderQueue = 4005;
|
||||
backgroundMaterial = new Material(material);
|
||||
backgroundMaterial.renderQueue = 500;
|
||||
for (int i = 0;i<matDisplays.Length;i++)
|
||||
{
|
||||
matDisplays[i] = new MatDrawer();
|
||||
texDisplays[i] = new MatDrawer();
|
||||
}
|
||||
convertMat = new Mat();
|
||||
Clear();
|
||||
started = true;
|
||||
}
|
||||
|
||||
public static void DisplayTexture(Texture2D texture,MatDisplaySettings properties)
|
||||
{
|
||||
MatDrawer uDispl = texDisplays[texDisplayCount++];
|
||||
uDispl.texture = texture;
|
||||
uDispl.flipY = true;
|
||||
uDispl.Activate(properties);
|
||||
}
|
||||
|
||||
public static bool isValid
|
||||
{
|
||||
get {
|
||||
if (error)
|
||||
return false;
|
||||
if (instance == null)
|
||||
{
|
||||
instance = GameObject.FindObjectOfType<MatDisplay>();
|
||||
if (instance == null)
|
||||
{
|
||||
Camera cam = Camera.main;
|
||||
if (cam == null)
|
||||
{
|
||||
Debug.LogError("No camera found");
|
||||
error = true;
|
||||
return false;
|
||||
}else
|
||||
{
|
||||
instance = cam.gameObject.AddComponent<MatDisplay>();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!started)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetCameraFoV(float fov = 41.5f)
|
||||
{
|
||||
GameObject.FindObjectOfType<Camera>().fieldOfView = fov;
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
cam.clearFlags = CameraClearFlags.Depth;
|
||||
if (awaitRender)
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
awaitRender = true;
|
||||
|
||||
GameObject backgroungPlane = GameObject.Find("BackgroundPlane");
|
||||
if (backgroungPlane != null)
|
||||
{
|
||||
backgroungPlane.SetActive(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
internal static TextureFormat ChannelsToFormat(int channels)
|
||||
{
|
||||
switch (channels)
|
||||
{
|
||||
case 1:
|
||||
return TextureFormat.RGB24;
|
||||
case 3:
|
||||
return TextureFormat.RGB24;
|
||||
case 4:
|
||||
return TextureFormat.RGBA32;
|
||||
default:
|
||||
throw new Exception("Invalid channel number: "+channels);
|
||||
}
|
||||
}
|
||||
|
||||
public static unsafe void DisplayImageData(IntPtr ptr, int width,int height,int channels,MatDisplaySettings properties)
|
||||
{
|
||||
if(width * height <= 0)
|
||||
throw new Exception("[MatDisplay] invalid extends: width="+width+", height="+height);
|
||||
if (!isValid)
|
||||
return;
|
||||
int len = width * height * channels;
|
||||
|
||||
TextureFormat format = ChannelsToFormat(channels);
|
||||
|
||||
MatDrawer uDispl = null;
|
||||
//Reuse displ
|
||||
foreach(MatDrawer displ in matDisplays)
|
||||
{
|
||||
if(!displ.active)
|
||||
{
|
||||
if (displ.texture != null && format == displ.texture.format && height == displ.texture.height && width == displ.texture.width)
|
||||
{
|
||||
uDispl = displ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (uDispl == null)
|
||||
{
|
||||
//Find new display
|
||||
foreach (MatDrawer displ in matDisplays)
|
||||
{
|
||||
if (displ.texture==null)
|
||||
{
|
||||
uDispl = displ;
|
||||
displ.texture = new Texture2D(width,height, format, false);
|
||||
displ.channels = channels;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (uDispl == null)
|
||||
{
|
||||
Debug.LogError("Too many mat displays");
|
||||
return;
|
||||
}
|
||||
|
||||
//Update texture data
|
||||
uDispl.flipY = false;
|
||||
uDispl.texture.LoadRawTextureData(ptr, len);
|
||||
uDispl.texture.Apply();
|
||||
|
||||
//Activate display for rendering
|
||||
uDispl.Activate(properties);
|
||||
}
|
||||
|
||||
public unsafe static void DisplayImageData(byte[] data, int width, int height, int channels, MatDisplaySettings properties)
|
||||
{
|
||||
int len = width * height * channels;
|
||||
if (channels == 1)
|
||||
{
|
||||
int cI = 0;
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
byte val = data[i];
|
||||
convData[cI++] = val;
|
||||
convData[cI++] = val;
|
||||
convData[cI++] = val;
|
||||
}
|
||||
data = convData;
|
||||
channels = 3;
|
||||
}
|
||||
|
||||
fixed (byte* ptr = data)
|
||||
{
|
||||
DisplayImageData(new IntPtr(ptr), width, height, channels, properties);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DisplayMat(Mat mat, MatDisplaySettings properties)
|
||||
{
|
||||
if (!isValid)
|
||||
return;
|
||||
|
||||
Mat uMat = PrepareMatData(mat);
|
||||
DisplayImageData(new IntPtr(uMat.dataAddr()), uMat.width(), uMat.height(), uMat.channels(), properties);
|
||||
}
|
||||
|
||||
public unsafe static void MatToTexture(Mat srcMat, ref Texture2D targetTexture)
|
||||
{
|
||||
Mat uMat = PrepareMatData(srcMat);
|
||||
Core.flip(uMat,flipMat,0);
|
||||
//uMat = flipMat;
|
||||
TextureFormat format = ChannelsToFormat(uMat.channels());
|
||||
if (targetTexture !=null && (targetTexture.width != uMat.width() || targetTexture.height != uMat.height() || targetTexture.format != format || targetTexture.mipmapCount>1))
|
||||
{
|
||||
Debug.LogWarning("Invalid texture given. Pass uninitialized or valid texture. Deleting and recreating texture.");
|
||||
targetTexture = null;
|
||||
}
|
||||
if (targetTexture==null)
|
||||
targetTexture = new Texture2D(srcMat.width(), srcMat.height(), format, false);
|
||||
targetTexture.LoadRawTextureData(new IntPtr(flipMat.dataAddr()), uMat.width()*uMat.height()*uMat.channels());
|
||||
targetTexture.Apply();
|
||||
}
|
||||
|
||||
/*
|
||||
public unsafe static void MatToTexture(Mat srcMat, Texture targetTexture)
|
||||
{
|
||||
if (!(targetTexture is Texture2D))
|
||||
throw new Exception("Invalid texture");
|
||||
Texture2D tex = (Texture2D)targetTexture;
|
||||
MatToTexture(srcMat,ref tex);
|
||||
}*/
|
||||
|
||||
private unsafe static Mat PrepareMatData(Mat mat)
|
||||
{
|
||||
Mat uMat = mat;
|
||||
if (mat.channels() == 1)
|
||||
{
|
||||
Imgproc.cvtColor(mat, convertMat, Imgproc.COLOR_GRAY2RGB);
|
||||
uMat = convertMat;
|
||||
}
|
||||
return uMat;
|
||||
}
|
||||
|
||||
void Clear()
|
||||
{
|
||||
if (matDisplays != null)
|
||||
{
|
||||
foreach (MatDrawer matDispl in matDisplays)
|
||||
{
|
||||
if (matDispl != null)
|
||||
matDispl.active = false;
|
||||
}
|
||||
}
|
||||
if(texDisplays!=null)
|
||||
{
|
||||
foreach (MatDrawer texDisplay in texDisplays)
|
||||
{
|
||||
if (texDisplay != null)
|
||||
{
|
||||
texDisplay.texture = null;
|
||||
texDisplay.active = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
texDisplayCount = 0;
|
||||
}
|
||||
|
||||
void OnPreRender()
|
||||
{
|
||||
if (cam == null)
|
||||
return;
|
||||
GL.LoadProjectionMatrix(Matrix4x4.identity);
|
||||
Matrix4x4 prevModelView = GL.modelview;
|
||||
GL.Viewport(new UnityEngine.Rect(0,0,Screen.width,Screen.height));
|
||||
GL.modelview = Matrix4x4.identity;
|
||||
foreach (MatDrawer displ in matDisplays)
|
||||
{
|
||||
if (displ.properties.background)
|
||||
displ.Draw(backgroundMaterial);
|
||||
}
|
||||
for (int i = 0; i < texDisplayCount; i++)
|
||||
{
|
||||
if (texDisplays[i].properties.background)
|
||||
texDisplays[i].Draw(backgroundMaterial);
|
||||
}
|
||||
GL.modelview = prevModelView;
|
||||
GL.LoadProjectionMatrix(cam.projectionMatrix);
|
||||
}
|
||||
|
||||
void OnPostRender ()
|
||||
{
|
||||
if (cam == null)
|
||||
return;
|
||||
GL.LoadProjectionMatrix(Matrix4x4.identity);
|
||||
Matrix4x4 prevModelView = GL.modelview;
|
||||
GL.Viewport(new UnityEngine.Rect(0, 0, Screen.width, Screen.height));
|
||||
GL.modelview = Matrix4x4.identity;
|
||||
foreach(MatDrawer displ in matDisplays)
|
||||
{
|
||||
if(!displ.properties.background)
|
||||
displ.Draw(foregroundMaterial);
|
||||
}
|
||||
for(int i=0;i<texDisplayCount;i++)
|
||||
{
|
||||
if (!texDisplays[i].properties.background)
|
||||
texDisplays[i].Draw(foregroundMaterial);
|
||||
}
|
||||
GL.modelview = prevModelView;
|
||||
GL.LoadProjectionMatrix(cam.projectionMatrix);
|
||||
Clear();
|
||||
awaitRender = false;
|
||||
}
|
||||
|
||||
private static float[] tmpPnt = new float[2];
|
||||
|
||||
public static Vector2 GetPoint2f(MatOfPoint2f matOfPoint2f, int index)
|
||||
{
|
||||
matOfPoint2f.get(index, 0, tmpPnt);
|
||||
return new Vector2(tmpPnt[0],tmpPnt[1]);
|
||||
}
|
||||
|
||||
public static void PutPoint2f(MatOfPoint2f target,int index, float x,float y)
|
||||
{
|
||||
if(index>=target.size().height)
|
||||
throw new Exception("Your mat of point is not big enough. Use alloc(capacity) before setting elements.");
|
||||
target.put(index, 0, x, y);
|
||||
}
|
||||
|
||||
public static void PutPoint2f(MatOfPoint2f target, int index, Vector2 point)
|
||||
{
|
||||
PutPoint2f(target,index,point.x,point.y);
|
||||
}
|
||||
|
||||
public static Mat LoadRGBATexture(string textureFilename)
|
||||
{
|
||||
string fn = "Assets/" + textureFilename;
|
||||
Mat loadMat = Imgcodecs.imread(fn);
|
||||
Mat result = new Mat();
|
||||
if (loadMat.width() > 0)
|
||||
{
|
||||
Imgproc.cvtColor(loadMat, result, Imgproc.COLOR_BGRA2RGBA);
|
||||
}
|
||||
else
|
||||
return null;
|
||||
return result;
|
||||
}
|
||||
|
||||
private static double[] tempDouble = new double[1];
|
||||
private static float[] tempFloat = new float[1];
|
||||
|
||||
public static Vector3 MatColumnToVector3(Mat mat, int column)
|
||||
{
|
||||
Vector3 result = new Vector3();
|
||||
if(mat.type() == CvType.CV_64F)
|
||||
{
|
||||
mat.get(0, column, tempDouble);
|
||||
result.x = (float)tempDouble[0];
|
||||
mat.get(1, column, tempDouble);
|
||||
result.y = (float)tempDouble[0];
|
||||
mat.get(2, column, tempDouble);
|
||||
result.z = (float)tempDouble[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
mat.get(0, column, tempFloat);
|
||||
result.x = tempFloat[0];
|
||||
mat.get(1, column, tempFloat);
|
||||
result.y = tempFloat[0];
|
||||
mat.get(2, column, tempFloat);
|
||||
result.z = tempFloat[0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
53
AR-2/Assets/MatDisplayShader.shader
Executable file
|
@ -0,0 +1,53 @@
|
|||
Shader "AR/MatDisplay"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_MainTex ("Texture", 2D) = "white" {}
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
Tags { "RenderType"="Transparent" }
|
||||
Cull Off
|
||||
ZWrite Off
|
||||
ZTest Always
|
||||
|
||||
Pass
|
||||
{
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
#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;
|
||||
|
||||
v2f vert (appdata v)
|
||||
{
|
||||
v2f o;
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.uv;
|
||||
return o;
|
||||
}
|
||||
|
||||
fixed4 frag (v2f i) : SV_Target
|
||||
{
|
||||
fixed4 col = tex2D(_MainTex, i.uv);
|
||||
return col;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
77
AR-2/Assets/Materials/beer_mask.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: beer_mask
|
||||
m_Shader: {fileID: 4800000, guid: 2099a48cdfdf04ba0851e51953a666c1, type: 3}
|
||||
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: 9b2d50797bca94e76b70b9d726bccba5, 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}
|
18
AR-2/Assets/OpenCVScript.cs
Normal file
|
@ -0,0 +1,18 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class OpenCVScript : MonoBehaviour
|
||||
{
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
363
AR-2/Assets/OpenCVVisualCoherence.unity
Normal file
|
@ -0,0 +1,363 @@
|
|||
%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: 9
|
||||
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.44657838, g: 0.49641234, b: 0.57481676, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 11
|
||||
m_GIWorkflowMode: 0
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 1
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 10
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 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: 2
|
||||
m_BakeBackend: 1
|
||||
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_ShowResolutionOverlay: 1
|
||||
m_LightingDataAsset: {fileID: 0}
|
||||
m_UseShadowmask: 1
|
||||
--- !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
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &1001315648
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1001315650}
|
||||
- component: {fileID: 1001315649}
|
||||
m_Layer: 0
|
||||
m_Name: GameObject
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1001315649
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1001315648}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 31af50fb72e3b400d8ccc0fef00cbf28, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!4 &1001315650
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1001315648}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.10250124, y: 0.010528497, z: 0.07359406}
|
||||
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}
|
||||
--- !u!1 &1034971291
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1034971293}
|
||||
- component: {fileID: 1034971292}
|
||||
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 &1034971292
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1034971291}
|
||||
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_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
m_BounceIntensity: 1
|
||||
m_ColorTemperature: 6570
|
||||
m_UseColorTemperature: 0
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &1034971293
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1034971291}
|
||||
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: 0
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!1 &1846189156
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1846189161}
|
||||
- component: {fileID: 1846189160}
|
||||
- component: {fileID: 1846189159}
|
||||
- component: {fileID: 1846189158}
|
||||
- component: {fileID: 1846189157}
|
||||
- component: {fileID: 1846189163}
|
||||
- component: {fileID: 1846189162}
|
||||
m_Layer: 0
|
||||
m_Name: ARCamera
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1846189157
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1846189156}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c47f92041efbb4b429a4eafca855ebe3, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &1846189158
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1846189156}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: -1826476478, guid: bab6fa851cf5a1a4bba3cec5f191cb8e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
mWorldCenterMode: 2
|
||||
mWorldCenter: {fileID: 0}
|
||||
--- !u!81 &1846189159
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1846189156}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &1846189160
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1846189156}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 2
|
||||
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_projectionMatrixMode: 1
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_GateFitMode: 2
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.05
|
||||
far clip plane: 2000
|
||||
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: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &1846189161
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1846189156}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.0976, y: 0, z: -0.0093}
|
||||
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 &1846189162
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1846189156}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8c0d1f48f6a3d4e30a957a5d96927c46, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &1846189163
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1846189156}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c7af34bc5e2f8423ab708d81040d71f5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
material: {fileID: 0}
|
|
@ -51,7 +51,7 @@ MonoBehaviour:
|
|||
videoBackgroundShader: {fileID: 4800000, guid: f40623b353e2f1943b1b3ba42975db7a,
|
||||
type: 3}
|
||||
matteShader: {fileID: 4800000, guid: 66d0d78a3000021448b598bb54a3bfdf, type: 3}
|
||||
videoBackgroundEnabled: 1
|
||||
videoBackgroundEnabled: 0
|
||||
deviceTracker:
|
||||
autoInitTracker: 0
|
||||
autoStartTracker: 0
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<QCARConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="qcar_config.xsd">
|
||||
<Tracking>
|
||||
<ImageTarget name="beer" size="0.080000 0.100627" />
|
||||
<ImageTarget name="terrain_controller" size="0.100000 0.099413" />
|
||||
<ImageTarget name="terrain_base" size="0.100000 0.099738" />
|
||||
</Tracking>
|
||||
|
|
BIN
AR-2/Assets/Textures/HeightMaps/height_map1.jpg
Executable file
After Width: | Height: | Size: 33 KiB |
BIN
AR-2/Assets/Textures/HeightMaps/kaguya_lalt_500.jpg
Executable file
After Width: | Height: | Size: 124 KiB |
BIN
AR-2/Assets/Textures/HeightMaps/mars_height.jpg
Executable file
After Width: | Height: | Size: 237 KiB |
BIN
AR-2/Assets/Textures/HeightMaps/mars_height_2.jpg
Executable file
After Width: | Height: | Size: 67 KiB |
BIN
AR-2/Assets/Textures/HeightMaps/mars_height_sphere.jpg
Executable file
After Width: | Height: | Size: 54 KiB |
BIN
AR-2/Assets/Textures/HeightMaps/mars_mgs_molaS.jpg
Executable file
After Width: | Height: | Size: 67 KiB |
BIN
AR-2/Assets/Textures/Surfaces/Dirt.jpg
Executable file
After Width: | Height: | Size: 38 KiB |
BIN
AR-2/Assets/Textures/Surfaces/Sand.jpg
Executable file
After Width: | Height: | Size: 2.2 KiB |
5
AR-2/Assets/Textures/Surfaces/desktop.ini
Executable file
|
@ -0,0 +1,5 @@
|
|||
[.ShellClassInfo]
|
||||
InfoTip=This folder is shared online.
|
||||
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
|
||||
IconIndex=16
|
||||
|
BIN
AR-2/Assets/Textures/Surfaces/grass.jpg
Executable file
After Width: | Height: | Size: 6.4 KiB |
BIN
AR-2/Assets/Textures/Surfaces/red_sand.jpg
Executable file
After Width: | Height: | Size: 8.6 KiB |
BIN
AR-2/Assets/Textures/beer_mask.png
Executable file
After Width: | Height: | Size: 5.6 KiB |
5
AR-2/Assets/Textures/desktop.ini
Executable file
|
@ -0,0 +1,5 @@
|
|||
[.ShellClassInfo]
|
||||
InfoTip=This folder is shared online.
|
||||
IconFile=C:\Program Files (x86)\Google\Drive\googledrivesync.exe
|
||||
IconIndex=16
|
||||
|
BIN
AR-2/Assets/Textures/noise.png
Executable file
After Width: | Height: | Size: 386 KiB |
868
AR-2/Assets/Tree.prefab
Normal file
BIN
AR-2/Assets/Tree_Textures/diffuse.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
AR-2/Assets/Tree_Textures/normal_specular.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
AR-2/Assets/Tree_Textures/shadow.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
AR-2/Assets/Tree_Textures/translucency_gloss.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
35
AR-2/Assets/VideoBGScript.cs
Normal file
|
@ -0,0 +1,35 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using OpenCVForUnity.CoreModule;
|
||||
using OpenCVForUnity.ImgprocModule;
|
||||
using Vuforia;
|
||||
|
||||
public class VideoBGScript : MonoBehaviour
|
||||
{
|
||||
Mat cameraImageMat;
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
MatDisplay.SetCameraFoV(41.5f);
|
||||
|
||||
Image cameraImage = CameraDevice.Instance.GetCameraImage(Image.PIXEL_FORMAT.RGBA8888);
|
||||
|
||||
if (cameraImage != null) {
|
||||
if (cameraImageMat == null) {
|
||||
cameraImageMat = new Mat(cameraImage.Height, cameraImage.Width, CvType.CV_8UC4);
|
||||
}
|
||||
cameraImageMat.put(0,0, cameraImage.Pixels);
|
||||
|
||||
|
||||
MatDisplay.DisplayMat(cameraImageMat, MatDisplaySettings.FULL_BACKGROUND);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
BIN
AR-2/Assets/beer_mask.jpg
Executable file
After Width: | Height: | Size: 52 KiB |
|
@ -8,7 +8,7 @@ Material:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: plain
|
||||
m_Shader: {fileID: 4800000, guid: a9e6ccf80455a4d9fb7561b1326d0ec9, type: 3}
|
||||
m_Shader: {fileID: 4800000, guid: 2099a48cdfdf04ba0851e51953a666c1, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
|
|
|
@ -106,6 +106,11 @@ PlayerSettings:
|
|||
xboxOneDisableEsram: 0
|
||||
xboxOnePresentImmediateThreshold: 0
|
||||
switchQueueCommandMemory: 0
|
||||
switchQueueControlMemory: 16384
|
||||
switchQueueComputeMemory: 262144
|
||||
switchNVNShaderPoolsGranularity: 33554432
|
||||
switchNVNDefaultPoolsGranularity: 16777216
|
||||
switchNVNOtherPoolsGranularity: 16777216
|
||||
vulkanEnableSetSRGBWrite: 0
|
||||
m_SupportedAspectRatios:
|
||||
4:3: 1
|
||||
|
@ -422,6 +427,7 @@ PlayerSettings:
|
|||
switchAllowsRuntimeAddOnContentInstall: 0
|
||||
switchDataLossConfirmation: 0
|
||||
switchUserAccountLockEnabled: 0
|
||||
switchSystemResourceMemory: 16777216
|
||||
switchSupportedNpadStyles: 3
|
||||
switchNativeFsCacheSize: 32
|
||||
switchIsHoldTypeHorizontal: 0
|
||||
|
@ -528,7 +534,7 @@ PlayerSettings:
|
|||
il2cppCompilerConfiguration: {}
|
||||
managedStrippingLevel: {}
|
||||
incrementalIl2cppBuild: {}
|
||||
allowUnsafeCode: 0
|
||||
allowUnsafeCode: 1
|
||||
additionalIl2CppArgs:
|
||||
scriptingRuntimeVersion: 1
|
||||
apiCompatibilityLevelPerPlatform: {}
|
||||
|
|