Exemplo n.º 1
0
 public PotreeNode(string name, PointCloudMetaData metaData, PotreeBoundingBox boundingBox, PotreeNode parent)
 {
     this.name        = name;
     this.metaData    = metaData;
     this.boundingBox = boundingBox;
     this.parent      = parent;
 }
Exemplo n.º 2
0
    private static PotreeBoundingBox calculateBoundingBox(PotreeBoundingBox parent, int index)
    {
        Vector3d min  = parent.Min();
        Vector3d max  = parent.Max();
        Vector3d size = parent.Size();

        //z and y are different here than in the sample-code because these coordinates are switched in unity
        if ((index & 2) != 0)
        {
            min.z += size.z / 2;
        }
        else
        {
            max.z -= size.z / 2;
        }
        if ((index & 1) != 0)
        {
            min.y += size.y / 2;
        }
        else
        {
            max.y -= size.y / 2;
        }
        if ((index & 4) != 0)
        {
            min.x += size.x / 2;
        }
        else
        {
            max.x -= size.x / 2;
        }
        return(new PotreeBoundingBox(min, max));
    }
Exemplo n.º 3
0
    public GameObject CreateGameObject(string name, Vector3[] vertexData, Color[] colorData, PotreeBoundingBox boundingBox)
    {
        GameObject gameObject = new GameObject(name);

        Mesh mesh = new Mesh();

        MeshFilter filter = gameObject.AddComponent <MeshFilter>();

        filter.mesh = mesh;
        MeshRenderer renderer = gameObject.AddComponent <MeshRenderer>();

        renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
        renderer.receiveShadows    = false;
        renderer.material          = material;
        renderer.enabled           = false;

        int[] indecies = new int[vertexData.Length];
        for (int i = 0; i < vertexData.Length; ++i)
        {
            indecies[i] = i;
        }
        mesh.vertices = vertexData;
        mesh.colors   = colorData;
        mesh.SetIndices(indecies, MeshTopology.Points, 0);

        //Set Translation
        //gameObject.transform.Translate(boundingBox.Min().ToFloatVector());

        PrevisPotreeUpdate comp = gameObject.AddComponent <PrevisPotreeUpdate>();

        comp.screenSize                    = screenSize;
        comp.interpolation                 = interpolation;
        gameObject.transform.parent        = previsParent.transform;
        gameObject.transform.localPosition = boundingBox.Min().ToFloatVector();

        if (gameObjectCollection != null)
        {
            gameObjectCollection.Add(gameObject);
        }

        return(gameObject);
    }