gpt4 book ai didi

ios - 在场景中配置SCNNode

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:12 25 4
gpt4 key购买 nike

我想在 SceneKit 中显示围绕一个点放置的几个对象,例如在球体上,但对象配置存在一些问题。

主要思想是让相机位于中心 (0,0,0),所有物体都将使用球坐标系配置,所以一旦我将物体放在某个图像球体系统中,我就会旋转相机一些轴来查看空间选定部分中的对象。

我一开始尝试做的事情 - 我想创建空的 SCNScene,添加灯光,读取 .dae 文件并配置对象。

但现在我无法理解我错在哪里 - 当我尝试更改 SCNNode 的任何属性时 - 实际上没有任何改变。此外,我需要将相机的 zFar 设置为奇怪的大值 - 10000 - 以便能够看到对象(我现在使用 allowsCameraControl 设置为 YES能够旋转对象)

实际代码:

    SCNScene *scene = [SCNScene scene]; //main scene

SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
cameraNode.camera.zFar = 10000; //only with this value i can see my obj
cameraNode.position = SCNVector3Make(0, 0, 0); //position in the center
[scene.rootNode addChildNode:cameraNode];

// create and add a light to the scene
SCNNode *lightNode = [SCNNode node];
lightNode.light = [SCNLight light];
lightNode.light.type = SCNLightTypeOmni;
lightNode.position = SCNVector3Make(0, 10, 10);
[scene.rootNode addChildNode:lightNode];

// create and add an ambient light to the scene
SCNNode *ambientLightNode = [SCNNode node];
ambientLightNode.light = [SCNLight light];
ambientLightNode.light.type = SCNLightTypeAmbient;
ambientLightNode.light.color = [UIColor darkGrayColor];
[scene.rootNode addChildNode:ambientLightNode];

SCNScene *objScene = [SCNScene sceneNamed:@"art.scnassets/file.dae"];

SCNMaterial *material = [SCNMaterial material];
material.diffuse.contents = [UIImage imageNamed:@"art.scnassets/texture.png"];
material.locksAmbientWithDiffuse = true;

SCNNode *node = [objScene.rootNode childNodeWithName:@"obj" recursively:YES];
node.geometry.firstMaterial = material;
//try next:
// node.position = SCNVector3Make(0, 0, 0);
// node.presentationNode.position = SCNVector3Make(0, 0, 0); -> should't be modified as explainde by Apple devs - "The effect of attempting to modify the returned node in any way is undefined"
// node.transform = SCNMatrix4MakeScale(0.5, 0.5, 0.5);
// node.scale = SCNVector3Make(0.1, 0.1, 0.1);
[scene.rootNode addChildNode:node];

有什么建议吗?也许我错过了什么——对 SceneKit 不是很熟悉。附加说明 - 我在 .dae 文件中也有一些基于骨骼的动画。

如何改变SCNNode的位置、比例、旋转(改变SCNNode的属性实际上没有任何反应)?

最佳答案

我认为您请求中的关键词是

I will rotate the camera around the axis to look at object(s) in the selected part of space.

检查 SCNLookAtConstraint .

您可以使用约束属性为 SCNNode 分配约束。将目标节点更改为与空间所选部分对应的对象。

关于ios - 在场景中配置SCNNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40306450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com