48 lines
1.1 KiB
GDScript
48 lines
1.1 KiB
GDScript
extends MeshInstance3D
|
|
|
|
var pointcloud = PointCloud.new()
|
|
var sum_time = 0.0
|
|
var transparency_speed = 4.0
|
|
var transparency_scale = 0.3 # 0.0~0.5
|
|
var cycle_time = 3.0
|
|
|
|
func _ready():
|
|
pointcloud.subscribe("/perception/obstacle_segmentation/pointcloud", false)
|
|
|
|
func _process(delta):
|
|
sum_time += delta
|
|
|
|
if sum_time * transparency_speed < 2 * PI:
|
|
transparency = clamp(cos(sum_time * transparency_speed) * transparency_scale + (1 - transparency_scale), 0.0, 1.0)
|
|
else:
|
|
transparency = 1.0
|
|
if (cycle_time < sum_time):
|
|
sum_time = 0.0
|
|
|
|
|
|
if !pointcloud.has_new():
|
|
return
|
|
|
|
var arr = []
|
|
arr.resize(Mesh.ARRAY_MAX)
|
|
var verts = PackedVector3Array()
|
|
# var uvs = PoolVector2Array()
|
|
# var normals = PoolVector3Array()
|
|
# var indices = PoolIntArray()
|
|
|
|
verts = pointcloud.get_pointcloud("map")
|
|
# for vert in verts:
|
|
# uvs.append(Vector2(vert.y, 0))
|
|
|
|
arr[Mesh.ARRAY_VERTEX] = verts
|
|
# arr[Mesh.ARRAY_TEX_UV] = uvs
|
|
|
|
if !verts.is_empty():
|
|
mesh.clear_surfaces()
|
|
mesh.add_surface_from_arrays(Mesh.PRIMITIVE_POINTS, arr)
|
|
pointcloud.set_old()
|
|
|
|
|
|
func _on_enable_obstacle_segmentation_button_toggled(toggled_on):
|
|
visible = toggled_on
|