如主题所示,如何在Unity3D创建的apk中导出Point Cloud Data?我如何使用这些数据在Unity3D中创建3D网格或模型?
答案 0 :(得分:1)
在Unity3D中使用Tango创建3D网格或模型
Unity Tango SDK中有一个示例场景,可让您直接在apk应用中获取并导出彩色网格。看看Assets \ TangoSDK \ Examples \ Scenes \ ExperimentalMeshBuilderWithColor.unity。
在apk中导出点云数据
我认为SDK中没有直接执行此操作的功能,但请查看以下脚本:Assets \ TangoSDK \ Examples \ Common \ Scripts \ TangoDynamicMesh.cs,更准确地说是函数{{1将TangoDynamicMesh导出为OBJ文件格式。
您可以创建一个类似的脚本,从TangoPointCloud.m_mesh而不是TangoDynamicMesh获取值,以将您的pointcloud导出为OBJ文件。
还要看看这个问题:How do I export Point Cloud Data (Project Tango)
从Unity中的3D点创建网格
从3D点创建网格并不容易,并且在Unity中没有直接的方法。从导出的OBJ点云,您可以使用Point Cloud Library或Meshlab等外部工具。
答案 1 :(得分:0)
您可以获得此example的点云数据。在指南中设置完所有内容后,您可以轻松获得所有点的坐标:
private Vector3[] GetPointCloudData()
{
TangoPointCloud pointCloud = FindObjectOfType<TangoPointCloud>();
return pointCloud.m_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);
}
请注意,颜色是硬编码的,我无法从pointcloud数据中获取颜色。
对于提取网格,您可以按照此example。