Skip to content

3D mesh

功能点介绍

主要功能函数

函数名返回值参数类型参数

StARkitStartSpatialMesh
开启扫描空间Mesh功能

EStARkitCode

StARkitStopSpatialMesh
关闭扫描空间Mesh功能

EStARkitCode

StARkitClearSpatialMesh
清除扫描缓存的数据

EStARkitCode

StARkitSaveFinalSpatialMesh
根据传入的文件路径将扫描
缓存的数据保存为完整版
和精简版,传入的文件
必须是.raw。

EStARKitCodestringmeshPath:保存文件路径。
string

simplifyMeshPath:
精简版mesh数据保存路径,
主要用于生成碰撞体的mesh

StARkitGetFinalSpatialMesh
这是把StARkitSaveFinalSpatialMesh
存储的数据读取出来。

EStARkitCodestringmeshPath:存储的数据文件路径。
SStARkitMeshDatameshData:读取的文件数据。

StARkitGetBlockMesh
获取mesh数据

EStARkitCodeSStARkitMeshData[]meshData:拿到的可以直接用于画mesh的数据。

SStARkitMeshData

1)命名空间:Lenovo.stARkit.Toolkit.Utilites.Definitions。

2)简介:这是用来画Mesh的数据的集合,FindPlane和SpatialMesh的数据最后会整合后为SStARkitMeshData,这里面的顶点数组和三角数组可以用来直接画Mesh。

3)属性:

属性名类型说明
MeshIDuint空间Mesh的编号,根据这个ID来判断哪个部分的Mesh数据更新了。
MeshVerSionuintMesh数据的更新号。
VerticesVector3[]Mesh的顶点数组。
Trianglesint[]Mesh的三角面排列数组。
planeSStARkitPlaneData当Mesh是FindPlane的数据时包含一个中心点和法线信息。

SBlockMeshInfo

1)命名空间:Lenovo.stARkit.Toolkit.Utilites.Definitions。

2)简介:这是SpatialMesh的mesh的数据信息的结构体,这个结构体包含了顶点个数和三角面个数,和SMeshFaceTriangleIndex,SMeshVertex配合一起使用。

3)属性:

属性名类型说明
MeshIDuint空间Mesh的编号,根据这个ID来边帮那个部分的Mesh数据更新了。
MeshVersionuintMesh数据的更新号,当此编号发生变化,表示数据发生了变化。
MeshVertexCountuint此次mesh数据的顶点个数。
MeshFaceCountuint此次mesh数据的三角面个数。

SMeshFaceTriangleIndex

1)命名空间:Lenovo.stARkit.Toolkit.Utilites.Definitions。

2)简介:这是SpatialMesh的三角面信息的结构体,表示哪3个顶点组成一个三角面,和SBlockMeshInfo,SMeshVertex配合使用。

3)属性:

属性名类型说明
v0uint三角面的第一个顶点。
v1uint三角面的第二个顶点。
v2uint三角面的第三个顶点。

SMeshVertex

1)命名空间:Lenovo.stARkit.Toolkit.Utilites.Definitions。

2)简介:这是SpatialMesh的顶点信息结构体,表示一个顶点在世界坐标系下的位置,和SBlockMeshInfo,SMeshFaceTriangleIndex配合使用。

3) 属性:

属性名类型说明
xfloat顶点X轴的坐标
yfloat顶点Y轴的坐标
zfloat顶点Z轴的坐标

功能点样例

3D mesh Demo是空间重建功能展示,需要设备具有TOF模组。

  1. 选择Assets/stARkit/Lenovo.stARkit.SDK/Tutorial/SpatialMesh/Scene/SpatialBlockMeshExample,依照上面的Android Build的步骤出一个APK。

  2. 将Build好的apk在设备中安装好后运行应用。

  3. 运行起来后将看到有4个选项按钮在视野前方并会跟随头动,使用gaze对这些按钮进行操作。

    Start Scan Mesh : 开启空间扫描功能,函数的调用结果会在4个按钮下方的第一个显示栏显示,根据显示内容查看函数调用情况。如果函数调用成功了,那么每帧都会去获取数据,但不是每次都有数据更新的,数据函数的结果会在最下方的信息栏显示,最后的数字表示拿到Mesh碎片的个数。

    Stop Scan Mesh : 关闭扫描功能,函数的调用结果会在4个按钮下方的第一个显示栏显示,根据显示内容查看函数调用情况。

    Save Final Mesh : 将扫描到的结果全部保存下来,现在保存的文件格式raw,当需要时可以调用加载FinalMesh的函数读取显示。函数的调用结果会在4个按钮下方的第一个显示栏显示,根据显示内容查看函数调用情况。

    Clear Cache Mesh : 清除当前缓存的数据。函数的调用结果会在4个按钮下方的第一个显示栏显示,根据显示内容查看函数调用情况。

Save Final Mesh 后光标点击Mesh,检测到Mesh的碰撞体会生成Cube。