C# 使用全息镜头从场景开始将对象放置到墙上
我正在用Hololens的混合现实工具包开发一个场景un Unity 2017,我想从场景开始就将所有对象放置在墙壁或地板的不同部分 我已经知道如何使用tap在环境中放置对象,但我希望它能够分析空间,并根据房间的形状将对象放置在墙上或地板上C# 使用全息镜头从场景开始将对象放置到墙上,c#,unity3d,hololens,C#,Unity3d,Hololens,我正在用Hololens的混合现实工具包开发一个场景un Unity 2017,我想从场景开始就将所有对象放置在墙壁或地板的不同部分 我已经知道如何使用tap在环境中放置对象,但我希望它能够分析空间,并根据房间的形状将对象放置在墙上或地板上 谢谢 您需要去看看的部分(自述文件中链接了Unity软件包下载) 我只是简单地玩了一下,因为它不适合我正在进行的项目,但是有一些容易定位的资源 该软件包允许设备扫描固定的卷空间(让用户决定应用程序使用其周围的哪些部分),作为开发人员,您可以指定应用程序所需的
谢谢 您需要去看看的部分(自述文件中链接了Unity软件包下载) 我只是简单地玩了一下,因为它不适合我正在进行的项目,但是有一些容易定位的资源 该软件包允许设备扫描固定的卷空间(让用户决定应用程序使用其周围的哪些部分),作为开发人员,您可以指定应用程序所需的最小卷大小。扫描后,随着Spatial Understanding开始分析扫描区域,许多查询功能变得可用,允许您作为开发人员查找平台、墙壁、地板等,以便将对象放置在适当的位置: 下面的对象放置查询正在寻找一个位置,以便将半米立方体放置在曲面边缘上,远离其他先前放置的对象,靠近房间中心
列表规则=
新名单(){
ObjectPlacementRule。从其他对象(1.0f)创建,
};
列表约束=
新名单{
ObjectPlacementConstraint.Create_NearCenter(),
};
解算器放置对象(
“MyCustomObject”,
新建ObjectPlacementDefinition.Create_OneEdge(
新矢量3(0.25f,0.25f,0.25f),
新矢量3(0.25f,0.25f,0.25f)),
规则,伯爵,
理解dll.PinObject(rules.ToArray()),
限制,计数,
了解dll.PinObject(constraints.ToArray()),
了解dll.GetStaticObjectPlacementResultPtr());
如果成功,将返回包含放置位置、尺寸和方向的“ObjectPlacementResult”结构。此外,放置将添加到dll的内部放置对象列表中。后续的放置查询将考虑此对象。Unity示例中的“LevelSolver.cs”文件包含更多示例查询
您需要查看的部分(自述文件中链接了Unity软件包下载) 我只是简单地玩了一下,因为它不适合我正在进行的项目,但是有一些容易定位的资源 该软件包允许设备扫描固定的卷空间(让用户决定应用程序使用其周围的哪些部分),作为开发人员,您可以指定应用程序所需的最小卷大小。扫描后,随着Spatial Understanding开始分析扫描区域,许多查询功能变得可用,允许您作为开发人员查找平台、墙壁、地板等,以便将对象放置在适当的位置: 下面的对象放置查询正在寻找一个位置,以便将半米立方体放置在曲面边缘上,远离其他先前放置的对象,靠近房间中心
列表规则=
新名单(){
ObjectPlacementRule。从其他对象(1.0f)创建,
};
列表约束=
新名单{
ObjectPlacementConstraint.Create_NearCenter(),
};
解算器放置对象(
“MyCustomObject”,
新建ObjectPlacementDefinition.Create_OneEdge(
新矢量3(0.25f,0.25f,0.25f),
新矢量3(0.25f,0.25f,0.25f)),
规则,伯爵,
理解dll.PinObject(rules.ToArray()),
限制,计数,
了解dll.PinObject(constraints.ToArray()),
了解dll.GetStaticObjectPlacementResultPtr());
如果成功,将返回包含放置位置、尺寸和方向的“ObjectPlacementResult”结构。此外,放置将添加到dll的内部放置对象列表中。后续的放置查询将考虑此对象。Unity示例中的“LevelSolver.cs”文件包含更多示例查询
List<ObjectPlacementRule> rules =
new List<ObjectPlacementRule>() {
ObjectPlacementRule.Create_AwayFromOtherObjects(1.0f),
};
List<ObjectPlacementConstraint> constraints =
new List<ObjectPlacementConstraint> {
ObjectPlacementConstraint.Create_NearCenter(),
};
Solver_PlaceObject(
“MyCustomObject”,
new ObjectPlacementDefinition.Create_OnEdge(
new Vector3(0.25f, 0.25f, 0.25f),
new Vector3(0.25f, 0.25f, 0.25f)),
rules.Count,
UnderstandingDLL.PinObject(rules.ToArray()),
constraints.Count,
UnderstandingDLL.PinObject(constraints.ToArray()),
UnderstandingDLL.GetStaticObjectPlacementResultPtr());