/****************************************************************************
* Copyright 2019 Nreal Techonology Limited. All rights reserved.
*
* This file is part of NRSDK.
*
* https://www.nreal.ai/
*
*****************************************************************************/
namespace NRKernal.Experimental.Persistence
{
using UnityEngine;
///
/// Point cloud mesh script.
/// Create random points and put it in a Mesh with Point Topology. The color depend of the vertical (Y) position of the point.
///
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class PointCloudMeshScript : MonoBehaviour
{
private Mesh mesh;
int numPoints = 60000;
// Use this for initialization
void Start()
{
mesh = new Mesh();
GetComponent().mesh = mesh;
GetComponent().material = new Material(Shader.Find("Custom/VertexColor"));
CreateMesh();
}
void CreateMesh()
{
Vector3[] points = new Vector3[numPoints];
int[] indecies = new int[numPoints];
Color[] colors = new Color[numPoints];
int max = 10;
int min = -10;
for (int i = 0; i < points.Length; ++i)
{
int x = Random.Range(min, max);
int y = Random.Range(min, max);
int z = Random.Range(min, max);
points[i] = new Vector3(x, y, z);
indecies[i] = i;
float value = (float)1.0 * (((float)y - (float)min) / ((float)max - (float)min));
colors[i] = new Color(value, value, value, 1.0f);
}
mesh.vertices = points;
mesh.colors = colors;
mesh.SetIndices(indecies, MeshTopology.Points, 0);
}
}
}