Azure Kinect에서 초록색 배경이 없는 검은색 키 같은 거.
입문
LIV로 BeatSaber의 MR 애니메이션을 찍을 때 "이거 혼자서도 설치할 수 있지??"이런 생각을 계기로 도전해 봤습니다.
2시간 정도 노력하면 무사히 끝낼 수 있으니 기사를 써보자.
완성된 일
Azure Kinect에는 녹색 배경의 색도 키가 합성된 것이 없습니다pic.twitter.com/SuvWXWhAbf - 그 녀석 @Looking Glass & Azure Kinect(@asidys230)December 13, 2019
환경
Unity 2019.2.11.f
・Azure Kinect(아마존에서 산 것)
단계(대략)
1. 점구름 표시
우리의 멋진 블로그를 참조하세요.
C#로 시작하는 Azure Kinect 개발 ⑥: Unity+C#에 Point Cloud 표시
이런 느낌이 나올 것 같아요
2. 색도키 무엇
이번 색도 키는 대상이 겹치는 부분을 묘사하지 않기 위해 이루어졌다.
인물을 추출하는 것이 아니라 배경을 제거하는 것이다p>
배경만 표시된 상태에서 점 구름을 복사하여 다음 음영처리기가 적용된 재료로 변경합니다.
복제된 점구름의 PointSize는 조금 더 크고, 배경을 덮는 점구름은 이런 느낌입니다.
나는 착색기 문외한이기 때문에 이 글을 참고했다.
[Unity 착색기 시작] 객체가 겹치는 부분을 파냅니다.
다음은 점운을 위한 다양한 버전입니다.p>
Shader "Custom/ColorutoutPoint" {
Properties{
_Size("ShaderSize", Float) = 1.000000
_PointSize("PointSize", Float) = 5.0
_Color("Color", Color) = (1,1,1,1)
}
SubShader{
Tags {"Queue" = "Geometry-1"}
Pass {
Zwrite On
ColorMask 0
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#include "UnityCG.cginc"
#pragma multi_compile_fog
#define USING_FOG (defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2))
float _Size;
float _PointSize;
// uniforms
// vertex shader input data
struct appdata {
float3 pos : POSITION;
half4 color : COLOR;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
// vertex-to-fragment interpolators
struct v2f {
float psize : PSIZE;
fixed4 color : COLOR0;
#if USING_FOG
fixed fog : TEXCOORD0;
#endif
float4 pos : SV_POSITION;
UNITY_VERTEX_OUTPUT_STEREO
};
// vertex shader
v2f vert(appdata IN) {
IN.pos.xyz = IN.pos.xyz * _Size;
v2f o;
UNITY_SETUP_INSTANCE_ID(IN);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
half4 color = IN.color;
float3 eyePos = mul(UNITY_MATRIX_MV, float4(IN.pos,1)).xyz;
half3 viewDir = 0.0;
o.color = saturate(color);
// compute texture coordinates
// fog
#if USING_FOG
float fogCoord = length(eyePos.xyz); // radial fog distance
UNITY_CALC_FOG_FACTOR_RAW(fogCoord);
o.fog = saturate(unityFogFactor);
#endif
// transform position
o.pos = UnityObjectToClipPos(IN.pos);
o.psize = _PointSize;
return o;
}
// fragment shader
fixed4 frag(v2f IN) : SV_Target {
fixed4 col;
col = IN.color;
// fog
#if USING_FOG
col.rgb = lerp(unity_FogColor.rgb, col.rgb, IN.fog);
#endif
return col;
}
ENDCG
}
}
}
//背景除去用メッシュ生成
if (Input.GetKeyDown(KeyCode.Space))
{
if (GameObject.Find("CutoutMesh"))
{
GameObject obj = GameObject.Find("CutoutMesh");
Destroy(obj);
}
verticesGreenBack = vertices;
greenBack = new GameObject();
greenBack.name = "CutoutMesh";
greenBack.AddComponent<MeshFilter>();
meshRendererG = greenBack.AddComponent<MeshRenderer>();
meshG = new Mesh();
//65535点以上描画する際に下記を記述
meshG.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
//頂点座標と色をmeshに渡す
meshG.vertices = verticesGreenBack;
//リストに格納した番号の頂点座標を点として描画
meshG.SetIndices(indices, MeshTopology.Points, 0);
//メッシュをこのオブジェクトのMeshFilterに適用
greenBack.GetComponent<MeshFilter>().mesh = meshG;
meshRendererG.material = materialG;
}
// 削除
if (Input.GetKey(KeyCode.Backspace))
{
GameObject obj = GameObject.Find("CutoutMesh");
Destroy(obj);
}
천천히 카메라 앞으로 걸어가다.
사람만 좋은 것 같아요.br/>
Azure Kinect에는 녹색 배경이 없는 색도 키가 합성되어 있습니다pic.twitter.com/SuvWXWhAbf@LookingGlass&AzureKinect (@asidys230) December 13, 2019
さいごに
내일은 takmin의 "kalibr로 카메라/IMU 교정"입니다.p>
Reference
이 문제에 관하여(Azure Kinect에서 초록색 배경이 없는 검은색 키 같은 거.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/asidys230/items/60bf6b563ff9eadbc025텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)