4
4
using CompressedImageMsg = RosMessageTypes . Sensor . CompressedImageMsg ;
5
5
6
6
/// <summary>
7
- /// LiDARスキャンデータ(LaserScanMsg)を受信するためのクラス
8
- /// 主にスキャンデータの取得および座標変換に使い、描画は別のスクリプトを用意することを想定
7
+ /// カメラデータ(CompressedImageMsg)を受信し、描画するためのクラス
9
8
/// </summary>
10
9
public class ImageSubscriber : MonoBehaviour
11
10
{
@@ -17,7 +16,7 @@ public class ImageSubscriber : MonoBehaviour
17
16
[ SerializeField ] RawImage rawImage ;
18
17
19
18
private Texture2D texture2D ;
20
- private byte [ ] imageData ;
19
+ private CameraImage cameraImage = new CameraImage ( ) ;
21
20
private bool isMessageReceived ;
22
21
23
22
/// <summary>
@@ -47,22 +46,36 @@ void Update()
47
46
/// </summary>
48
47
void ImageMsgUpdate ( CompressedImageMsg rawImage )
49
48
{
50
- imageData = rawImage . data ;
51
- isMessageReceived = true ;
52
- if ( isDebugMode )
49
+ lock ( cameraImage )
53
50
{
54
- Debug . Log ( "rawImage recieved. length :" + System . Buffer . ByteLength ( imageData ) ) ;
51
+ cameraImage . imageData = rawImage . data ;
52
+ if ( isDebugMode )
53
+ {
54
+ Debug . Log ( "rawImage recieved. length :" + System . Buffer . ByteLength ( cameraImage . imageData ) ) ;
55
+ }
55
56
}
57
+ isMessageReceived = true ;
56
58
}
57
59
58
60
/// <summary>
59
61
/// ImageMsgのデータをTextureに反映する関数
60
62
/// </summary>
61
63
void ProcessMessage ( )
62
64
{
63
- texture2D . LoadImage ( imageData ) ;
64
- texture2D . Apply ( ) ;
65
+ lock ( cameraImage )
66
+ {
67
+ texture2D . LoadImage ( cameraImage . imageData ) ;
68
+ texture2D . Apply ( ) ;
69
+ }
65
70
rawImage . texture = texture2D ;
66
71
isMessageReceived = false ;
67
72
}
73
+ }
74
+
75
+ /// <summary>
76
+ /// アクセス制限用のカメライメージデータ格納配列
77
+ /// </summary>
78
+ class CameraImage
79
+ {
80
+ public byte [ ] imageData { get ; set ; }
68
81
}
0 commit comments