子节点共同的父节点java_如何使子节点和父节点的 SCNNode 位置相同?

我有一个名为 wc 的子节点的场景。我想在该节点上添加 dae/model 文件。

我能够通过以下方式添加 model/dae:

使用 bundle 中的 dae 资产创建父场景

将父场景添加到 scnView 并将其强制转换为 self.view

获取要添加 dae 的必需节点。

使用所需的节点 dae 创建 sub-Scene。

将 sub-scene 根节点添加为父场景所需节点的子节点。

将子节点的位置设置为父场景的所需节点的位置。

以下是片段:

代码片段(在 viewDidLoad 中)

//Create Scene

SCNScene *scene = [SCNScene sceneNamed:@"bathScene.scnassets/peace01.dae"];

SCNView *scnView = (SCNView *)self.view;

scnView.scene = scene;

scnView.allowsCameraControl = YES;

scnView.delegate = self;

scnView.autoenablesDefaultLighting = YES;

//Get the required node where dae is to be added

SCNNode * wcNode = [scnView.scene.rootNode childNodeWithName:@"wc" recursively:YES];

SCNVector3 wcNodeScreenPosition = [scnView projectPoint:wcNode.position];

NSLog(@"wcNode position %f, %f, %f",wcNodeScreenPosition.x, wcNodeScreenPosition.y, wcNodeScreenPosition.z);

//Create sub-Scene

SCNScene* wcScene = [SCNScene sceneNamed:@"bathScene.scnassets/closet.dae"];

//Add the sub-scene root node to the required node of parent scene

[scnView.scene.rootNode addChildNode:[wcScene.rootNode childNodeWithName:@"ceramic" recursively: false]];

SCNNode * wcDAENode = [wcScene.rootNode childNodeWithName:@"ceramic" recursively: false];

wcDAENode.position = [wcNode position];

SCNVector3 wcDAENodeScreenPosition = [scnView projectPoint:wcDAENode.position];

NSLog(@"DAE position %f, %f, %f",wcDAENodeScreenPosition.x, wcDAENodeScreenPosition.y, wcDAENodeScreenPosition.z);

日志输出

wcNode 位置 275.306549,157.163620,0.956176

DAE 位置 284.000000,160.000000,0.959596

正如您在上述日志输出中所看到的,所需节点及其子 Dae 节点的位置与渲染模型在场景中移动的位置不同。

为什么职位不同?

我该如何弥补这一转变?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值