北京赛车pk10经验论坛 北京赛车pk10代理流水 北京赛车pk10四码盈利 北京赛车pk10输少赢多 北京赛车pk10刷图软件 下载北京赛车pk10微信 北京赛车pk10下载苹果 易算北京赛车pk10软件 北京赛车pk10绝密规律 易算北京赛车pk10手机 北京赛车pk10代理流水 北京赛车pk10个人技巧 北京赛车pk10龙虎规律 北京赛车pk10代理佣金 北京赛车pk10系统出租 北京赛车pk10停了 北京赛车pk10计划苹果 北京赛车pk10微信群二维码 北京赛车pk10追开软件 北京赛车pk10十名走势图 北京赛车pk10网页 北京赛车pk10苹果版下载 2017北京赛车pk10稳赢 北京赛车pk10技巧5码公式 北京赛车pk10公式软件 银河北京赛车pk10平台 北京赛车pk10计算概率 北京赛车pk107码技巧 北京赛车pk10下注平台 北京赛车pk10appios

文档翻译 之(4.1) 【User Experience】 ARKit

作者:玉琳 / 微信号:Zhang_YuLin0311 发布日期:2019-07-10

ARKit 文档翻译 之(4.1) 【User Experience】
示例代码
Handling 3D Interaction and UI Controls in Augmented Reality 在增强?#36136;?#20013;处理3D交互和UI控件,遵循AR体验中的视觉反馈,?#36136;?#20132;互和逼真渲染的最佳实践。
增强?#36136;擔ˋR)为用户提供了与应用中的真实和虚拟3D内容进行交互的新方式。然而,人机界面设计的许多基本原理仍然?#34892;А?#20196;人信服的AR幻想也需要仔细关注3D资产设计和渲染。 iOS人机界面指南包括有关AR的人机界面原则的建议。该项目展示了应用这些指南的方法,并轻松创建身临其境的直观AR体验。
此示例应用程序提供简单的AR体验,允许用户在其真实环境中放置一个或多个逼真的虚拟对象,然后使用直观的?#36136;?#25490;列这些对象。该应用程序提供用户界面提示,以帮助用户了解AR体验的状态及其交互选项。
以下部分对应于iOS人机界面指南>增强?#36136;?#20013;的部分,并提供有关此示例应用程序如何实现这些指南的详?#24863;?#24687;。有关每个部分的更详细推理,请参阅iOS人机界面指?#29616;?#30340;相应内容。
— ?放置虚拟对象帮助人们了解何时定位表面并放置对象。 FocusSquare类在AR视图中绘制方形轮廓,为用户提供有关ARKit世界跟踪状态的提示。图一
方块改变大小和方向以反映估计的场景深度,并且使用突出的动画在打开和关闭状态之间切换以指示ARKit是否已经检测到适合放置对象的平面。 在用户放置虚拟对象之后,焦点方块消失,保持隐藏直到用户将相机指向另一个表面。
当用户放置对象时?#23454;?#22320;响应。 当用户选择要放置的虚拟对象时,示例应用程序的setPosition(_:relativeTo:smoothMovement)方法使用FocusSquare对象的简单启发式方法将对象放置在屏幕中间的大致实际位置,即使ARKit没有 但在那个位置检测到一架飞机。图二
这个位置可能不是用户想要放置虚拟对象的真实世界表面的准确估计,但它足够接近以快速获得屏幕上的对象。
随着时间的推移,ARKit会检测平面并优化其位置估计,调用渲染器:didAddNode:forAnchor:和renderer:didUpdateNode:forAnchor?#20309;?#25176;方法来报告结果。 在这些方法中,示例应用程序调用其adjustOntoPlaneAnchor(_:using :)方法来确定先前放置的虚拟对象是否接近检测到的平面。 如果是这样,该方法使用微妙的动画将虚拟对象移动到平面上,以便对象看起来处于用户选择的位置,同时受益于ARKit对该位置的真实世界表面的精确估计:图三
使用锚点来提高虚拟对象周围的跟踪质量。无论何时放置虚拟对象,始终向ARSession添加表示其位置和方向的ARAnchor。移动虚拟对象后,?#22659;?#26087;位置的锚点并在新位置创建新锚点。添加锚点告诉ARKit位置很重要,提高该区域的世界跟踪质量,并帮助虚拟对象看起来相对于真实世界的表面保持原位。 (请参阅示例代码的addOrUpdateAnchor()方法。)
— 用户与虚拟对象的交互
允许人们使用标准的,熟悉的?#36136;?#30452;接与虚拟对象进行交互。该示例应用程序使用单指轻击,单指和双指平移以及双?#24863;?#36716;?#36136;?#35782;别器来让用户定位?#25237;?#21521;虚拟对象。示例代码的VirtualObjectInteraction类管理这些?#36136;啤?br>通常,保持交互简单。拖动虚拟对象时(请参阅translate(_:basedOn:infinitePlane :)方法),示例应用程序会将对象的移动限制为放置在其上的二维平面。类似地,因为虚拟对象位于水平平面上,所以旋转?#36136;疲?#35831;参阅didRotate(_ :)方法)仅围绕其垂直轴旋转对象,以便对象保留在平面上。
在交互式虚拟对象的合理接近范围内响应?#36136;啤?#31034;例代码的objectInteracting(with:in :)方法使用?#36136;?#35782;别器提供的触摸位置执行命中测试。通过针对虚拟对象的边界框的命中测试,该方法使得用户触摸更可能影响对象,即使触摸位置不在对象具有可见内容的点上。通过对多点触控?#36136;?#25191;行多次命中测试,该方法使用户触摸更有可能影响目标对象:图四
考虑是否需要用户启动的对象缩放。此AR体验会放置可能自然出现在用户环境中的逼真虚拟对象,因此保留对象的内在大小有助于逼真。因此,示例应用程序?#25442;?#28155;加?#36136;?#25110;其他UI以启用对象缩放。另外,通过?#35805;?#25324;缩放?#36136;疲?#31034;例应用程序防止用户?#20801;质?#26159;否调整对象大小或改变对象与相机的距离而感到困惑。 (如果您选择在应用中启用对象缩放,请使用捏合?#36136;?#35782;别器。)
警惕潜在冲突的?#36136;啤?#31034;例代码的ThresholdPanGesture类是UIPanGestureRecognizer子类,它提供了一种?#26144;偈质?#35782;别器效果的方法,直到正在进行的?#36136;?#36229;过指定的移动阈值。示例代码的touchesMoved(with :)方法使用此类让用户在拖动对象和在单个双指?#36136;?#20013;旋转它之间?#20132;?#36807;渡:图五
确保虚拟对象移动顺畅。 示例代码的setPosition(_:relativeTo:smoothMovement)方法在导致拖动对象的触摸?#36136;?#20301;置和该对象的最近位置的历史之间进行插值。 通过根据与相机的距离平均最近的位置,此方法可以产生?#20132;?#30340;拖动运动,而?#25442;?#23548;致拖动的对象落后于用户的?#36136;疲?img data-echo="http://img01.xunart.com/mmbiz_jpg/j35GLrS5IrJI77bd4jMGT3TpgTFaqiaIjxFKBpicJIIkicImRE8yRf7fKWS23R6u0dMeAHv4aNiaobebOHIcVa1TqQ/640?wx_fmt=jpeg"/>图六
探索更具吸引力的互动方式。在AR体验中,平移?#36136;?- 即将手指移动到设备的屏幕上 - 并不是将虚拟内容拖动到新位置的唯一自然方式。用户还可以在移动设备时直观地尝试将手指保持在屏幕上,从而?#34892;?#22320;在AR场景上拖动触摸点。
示例应用程序通过在拖动?#36136;?#27491;在进行时连续调用其updateObjectToCurrentTrackingPosition()方法来支持此类?#36136;疲?#21363;使?#36136;?#30340;触摸位置未更改也是如此。如果设备在拖动期间移动,则该方法计算与触摸位置相对应的新世界位置并相应地移动虚拟对象。
— 进入增强?#36136;?br>指示何时发生初始化并涉及用户。示例应用程序显示有关AR会话状态的文本提示以及使用浮动文本视?#21152;階R体验交互的?#24471;鰲?#31034;例代码的StatusViewController类管理此视图,显示在允许用户有时间读取它们之后逐渐消失的瞬态指令,或者在用户更正问题之前保持可见的重要状态消息。
— 处理问题
如果?#29615;?#21512;他们的期望,允许人们重置体验。 示例应用程序具有一个重置按钮,该按钮始终显示在UI的右上角,允许用户重新启动AR体验,无论其当前状态如何。 请参阅示例代码中的restartExperience()方法。
仅在功能强大的设备上提供AR功能。 示例应用程序需要ARKit作为其核心功能,因此它在其Info.plist文件的部分中定义了arkit密钥。 部署构建的项目时,此密钥会阻止在不支持ARKit的设备上安装应用程序。
如果您的应用程序使用AR作为辅助功能,请使用isSupported方法确定是否隐藏需要ARKit的功能。
北京赛车pk10有妙招吗
快乐十分走势图 期货风险公式 彩票快乐10分走势图 完美世界手游中州挂机 西班牙人队巴塞罗那 墨尔本胜利主场在哪里 好多怪兽注册 安徽十一选五开奖结果 360双色球彩经网 快乐赛车开奖结果直播 南京麻将下载 psp圣女贞德二连击