t1 / TFDContents / Assets / KinectScripts / Samples / SimpleBackgroundRemoval.cs @ 9
이력 | 보기 | 이력해설 | 다운로드 (2.02 KB)
1 | 3 | KTH | using UnityEngine; |
---|---|---|---|
2 | using System.Collections; |
||
3 | |||
4 | public class SimpleBackgroundRemoval : MonoBehaviour |
||
5 | { |
||
6 | [Tooltip("Whether to display the foreground texture on the screen or not.")] |
||
7 | public bool displayForeground = true; |
||
8 | |||
9 | [Tooltip("Please follow these instructions to make this component work.")] |
||
10 | [Multiline] |
||
11 | public string instructions = "Set 'Compute user map'-setting of KinectManager-component to 'Cut-Out Texture'."; |
||
12 | |||
13 | |||
14 | // the foreground texture |
||
15 | private Texture2D foregroundTex; |
||
16 | |||
17 | // rectangle taken by the foreground texture (in pixels) |
||
18 | private Rect foregroundRect; |
||
19 | |||
20 | // the Kinect manager |
||
21 | private KinectManager manager; |
||
22 | |||
23 | |||
24 | void Start () |
||
25 | { |
||
26 | manager = KinectManager.Instance; |
||
27 | |||
28 | if(manager && manager.IsInitialized()) |
||
29 | { |
||
30 | Rect cameraRect = Camera.main.pixelRect; |
||
31 | float rectHeight = cameraRect.height; |
||
32 | float rectWidth = cameraRect.width; |
||
33 | |||
34 | KinectInterop.SensorData sensorData = manager.GetSensorData(); |
||
35 | |||
36 | if(sensorData != null && sensorData.sensorInterface != null) |
||
37 | { |
||
38 | if(rectWidth > rectHeight) |
||
39 | rectWidth = rectHeight * sensorData.depthImageWidth / sensorData.depthImageHeight; |
||
40 | else |
||
41 | rectHeight = rectWidth * sensorData.depthImageHeight / sensorData.depthImageWidth; |
||
42 | |||
43 | foregroundRect = new Rect((cameraRect.width - rectWidth) / 2, cameraRect.height - (cameraRect.height - rectHeight) / 2, rectWidth, -rectHeight); |
||
44 | } |
||
45 | } |
||
46 | } |
||
47 | |||
48 | void Update () |
||
49 | { |
||
50 | if(manager && manager.IsInitialized()) |
||
51 | { |
||
52 | foregroundTex = manager.GetUsersLblTex(); |
||
53 | } |
||
54 | } |
||
55 | |||
56 | void OnGUI() |
||
57 | { |
||
58 | if(displayForeground && foregroundTex) |
||
59 | { |
||
60 | // get the foreground rectangle (use the portrait background, if available) |
||
61 | PortraitBackground portraitBack = PortraitBackground.Instance; |
||
62 | if(portraitBack && portraitBack.enabled) |
||
63 | { |
||
64 | foregroundRect = portraitBack.GetBackgroundRect(); |
||
65 | |||
66 | foregroundRect.y += foregroundRect.height; // invert y |
||
67 | foregroundRect.height = -foregroundRect.height; |
||
68 | } |
||
69 | |||
70 | GUI.DrawTexture(foregroundRect, foregroundTex); |
||
71 | } |
||
72 | } |
||
73 | |||
74 | } |