首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将ARCamera旋转变换应用于节点(ARKit)

将ARCamera旋转变换应用于节点(ARKit)
EN

Stack Overflow用户
提问于 2018-03-07 19:55:54
回答 2查看 647关注 0票数 1

我希望将ARCamera的旋转应用于3D节点,以便该节点始终面对相机。如何在Objective-C中实现此代码?

EN

回答 2

Stack Overflow用户

发布于 2018-03-07 20:28:57

您可以通过使用SCNBillboardConstraint使SCNNode面向ARCamera

SCNBillboardConstraint对象会自动调整节点的方向,以便其局部z轴始终指向当前用于渲染场景的pointOfView节点。例如,可以使用布告牌约束来使用二维精灵图像而不是三维几何体高效地渲染场景的某些部分-通过将精灵映射到受布告牌约束影响的平面上,精灵将保持其相对于查看器的方向。若要将约束附加到SCNNode对象,请使用其约束特性。

目标C:

代码语言:javascript
复制
SCNBillboardConstraint *lookAtConstraint = [SCNBillboardConstraint billboardConstraint];

node.constraints = @[lookAtConstraint];

Swift:

代码语言:javascript
复制
let lookAtConstraint = SCNBillboardConstraint()
node.constraints = [lookAtConstraint]

如果希望SCNNode面向另一个节点,则可以使用SCNLookAtConstraint

例如,可以使用注视约束来确保摄影机或聚光灯始终跟随游戏角色的移动。若要将约束附加到SCNNode对象,请使用其约束特性。节点指向其局部坐标系的负z轴方向。该轴定义包含摄影机的节点的视图方向、包含聚光灯或平行光的节点的照明方向,以及节点几何体和子节点的方向。当场景工具包对注视约束求值时,它会更新受约束节点的变换属性,以便节点的负z轴指向约束的目标节点。

目标C:

代码语言:javascript
复制
SCNLookAtConstraint * lookAtNode = [SCNLookAtConstraint lookAtConstraintWithTarget:secondNode];
fistNode.constraints = @[lookAtNode];

Swift:

代码语言:javascript
复制
 let lookAtConstraint = SCNLookAtConstraint(target: secondNode)
 firstNode.constraints = [lookAtConstraint]
票数 3
EN

Stack Overflow用户

发布于 2020-02-07 10:50:52

我用过

代码语言:javascript
复制
let lookAtConstraint = SCNBillboardConstraint()
node.constraints = [lookAtConstraint]

当3D头部扫描模型被用户旋转时,SceneKit平行光节点总是照射来自用户视图的光。如果没有此选项,平行光将锁定在面部模型的前面,然后在头部的后面总是有一个暗影。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49151332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档