2017-07-20 2 views

Répondre

1

Créer un maillage 3D ou d'un modèle avec Tango dans Unity3D

Il y a une scène par exemple dans l'unité SDK Tango qui vous permet d'acquérir et d'exporter un maillage de couleur directement dans l'application apk. Regardez les éléments \ TangoSDK \ Examples \ Scenes \ ExperimentalMeshBuilderWithColor.unity.

Export Data Point Cloud apk

Je ne pense pas qu'il y ait une fonction dans le SDK qui le fait directement, mais un coup d'oeil au script suivant: \ Actifs TangoSDK \ Exemples \ Common Files \ Scripts \ TangoDynamicMesh.cs et plus précisément la fonction public void ExportMeshToObj(string filepath) qui exporte un TangoDynamicMesh vers un format de fichier OBJ.

Vous pouvez créer un script similaire qui obtient des valeurs de TangoPointCloud.m_mesh au lieu d'un TangoDynamicMesh pour exporter votre pointcloud en tant que fichier OBJ.

ont aussi un regard sur cette question: How do I export Point Cloud Data (Project Tango)

Créer un maillage de points 3D dans l'unité

Création d'un maillage de points 3D est pas facile et il n'y a aucun moyen simple de le faire dans l'unité. A partir d'un nuage de points OBJ exporté, vous pouvez utiliser des outils externes tels que Point Cloud Library ou Meshlab.

0

Vous pouvez obtenir des données de nuage de points en suivant cette example. Après la mise en place tout comme dans le guide, vous pouvez facilement obtenir les coordonnées de tous les points:

private Vector3[] GetPointCloudData() 
{ 
    TangoPointCloud pointCloud = FindObjectOfType<TangoPointCloud>(); 
    return pointCloud.m_points; 
} 

Cependant, avec ce que vous obtenez des points seulement qui sont actuellement visibles sur l'écran de votre appareil.

Une fois que vous les envoyer au serveur, créer gameobject contenant Mesh et dessinez points:

public void CreateMesh(Vector3[] points) 
{ 
    Util.Debug("Drawing..."); 
    mesh.Clear(); 

    int[] indecies = new int[points.Length]; 
    Color[] colors = new Color[points.Length]; 
    for (int i = 0; i < points.Length; ++i) 
    { 
     indecies[i] = i; 
     colors[i] = Color.green; 
    } 

    mesh.vertices = points; 
    mesh.colors = colors; 
    mesh.SetIndices(indecies, MeshTopology.Points, 0); 

} 

Notez que les couleurs sont codées en dur, je ne parvenaient pas à les obtenir à partir des données PointCloud.

Pour l'extraction de maillage, vous pouvez suivre cette example.