问题标签 [scenekit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10678 浏览

ios - 使用allowCameraControl时可以获取SCNView摄像头位置吗?

SCNView 文档说,当用户改变视角时,将 allowCameraControl 设置为 YES 不会更新相机节点位置。当用户改变视角时,有什么方法可以获取用户修改的相机参数?

0 投票
3 回答
1326 浏览

ios - SceneKit – 带有 DAE 模型的 HitTest

我想知道哪个节点被击中,但我的方法仅适用于具有 SCNBox 和 SCNFloor 等几何形状的节点,但不适用于 DAE 模型:

这就是我制作 .dae 节点(heroNode)的方式:

问题出在哪里?

0 投票
0 回答
245 浏览

ios - 两个运动的物理物体不会相互碰撞

我想制作一个两个characterNodes,这些节点将移动并相互碰撞,但是当我使用SCNTransaction、SCNAction 或Animation 时,这些主体只是相互穿过,并且在渲染器方法中移动主体的行为相似,位置改变了+1。用 applyForce 移动字符也没有用。我尝试将动态、运动学或静态 NodeA 附加到其他 nonPhycisc NodeB 并移动 NodeB,但它也不起作用。我有其他想法使用不可见的 SCNPhysicsVehicle 并将其作为孩子添加到我的 characterNode 但似乎太复杂了。

你知道如何解决这个问题吗?

0 投票
2 回答
335 浏览

texture-mapping - 围绕 Y 轴的任意纹理位移

我有一个单一的云纹理,我想沿着 SCNNode 球面几何的 Y(“垂直”)轴任意置换,以产生有许多不同云纹理的错觉。

我阅读了有关 SCNMaterialProperty、CATransform3D 旋转的文档,但我完全迷失了。在 3D 程序中,您可以沿 X、Y 和 Z 轴设置纹理“原点”——场景套件/核心动画中的等价物是什么?

谢谢你的帮助!

0 投票
2 回答
1205 浏览

swift - 如何在另一个场景中显示场景的一部分(Scene Kit + Swift)

首先,我只想向你们介绍我的问题,因为它真的很复杂,所以你需要这个来正确理解它。
我正在尝试使用 Scene Kit 和 Swift 做一些事情:我想重现我们在电视节目Doctor Who中看到的内容,其中医生的宇宙飞船内部更大,正如您在此视频中看到的那样。
当然,Scene Kit 框架不支持那种不真实的维度,所以我们需要做一些hackery 来实现它。

现在用通俗的英语说一下我的想法,
其实我们要做的就是在同一个地方展示两个完全不同的维度;所以我在想:

  • 宇宙飞船内部的第一个维度。
  • 宇宙飞船外部的第二个维度。

现在,假设您在船外,您将在外部维度中,并且在这个外部维度中,我的目标是在门的水平面上显示内部维度的一部分,以产生这种效果,其中相机在外面,但我们可以清楚地看到里面更大: 我们可以看到一艘宇宙飞船(看起来像一个警察局),这艘船很小但是我们可以通过这些敞开的门看到这艘船的内部,里面看起来比里面大得多
我们将从内部使用等效原理。

现在让我们谈谈游戏逻辑:
我认为表示这些维度的一个好方法是两个使用两个场景。 我们将 outsideScene 称为外部场景,将 insideScene 称为内部场景
因此,如果我们再次拍摄照片,这将在场景级别给出: 和之前一样的图,这里,船的外面全部涂成绿色,而我们通过门看到的里面涂成黄色,实际上图像的绿色部分代表了外面的场景(这是场景我们在),黄色部分(打开的门的矩形)代表insideScene,我想在outsideScene中显示这个场景

为了让它看起来更逼真,内部的视图需要跟随外部摄像机的运动,这就是为什么我认为这两个摄像机的所有属性都是相同的: 在此处输入图像描述
在此处输入图像描述

左边是outsideScene,右边是insideScene。我用橙色表示相机视野

如果outsideScene 相机向右移动,insideScene 相机会做同样的事情,如果outsideScene 相机旋转,insideScene 相机也会以同样的方式旋转……你懂的原理。

所以,我的问题如下:我可以用什么来掩盖某个场景的某个部分(在这种情况下是outsideView中的黄色区域)与另一个视图(insideView)的相机“看到”什么?
首先,我认为我可以简单地从 insideScene 获取 NSImage,然后将其作为表面的纹理放在 outsideScene 中,但问题是 Scene Kit 会计算它的透视、照明等......所以它只会看起来我们正在屏幕上显示一些东西,这不是我想要的。

0 投票
4 回答
4022 浏览

ios - 在 SceneKit 中追逐相机

假设我有一个立方体节点并且我在场景中移动它,我怎样才能有一个跟随盒子的相机?

我知道有SCNLookAtConstraint,但我追求的是追逐相机。一个实际上改变了它的位置,以便它被附加在节点后面的一种。

我还没有找到任何示例代码来显示实现这一点的方法,有人有什么想法吗?

0 投票
3 回答
1148 浏览

objective-c - 如何使用“SCNVector4Make()”?

我有一个简短的问题。我不知道我必须在这个函数中输入哪些值,我在互联网上找不到任何有价值的例子。

这是我的功能:

我已经设置了一个节点和其他一切。

x, y, ,的值是什么zw当我想以 角度转动对象时45 degrees

0 投票
1 回答
1010 浏览

view - 无法将 3D 子视图添加到控制器的视图中

当我想将 3D 子视图添加到我的控制器视图时遇到问题。我看不到 3D 子视图。是 GameControllerView 类的代码:

使用此代码,我看不到我的 GameSceneView,它是 SCNView(3D 视图)的子类。但是,如果我删除 viewTest 变量的注释(就在 cubeData 下方),我的 GameSceneView 会显示但没有我的控制器视图的内容。

问题:为什么 3D 子视图不能出现在控制器视图上?

编辑:我刚刚注意到 3D 视图位于控制器视图背景的后面。如何在视图控制器中包含的背景上添加我的 3D 视图?

0 投票
1 回答
879 浏览

ios - 使用 SceneKit 控制飞行器的运动

我目前有一个场景,它在场景的根部包含一个具有类地几何形状的中心节点和一个代表飞行器的节点。

但是我找不到控制车辆运动的正确方法。我需要在以静态高度和速度进行轨道运行时左右转的能力。

我尝试了许多动画和物理体力的组合,所有这些都导致了不良结果。

我最接近的是:

  • 将车辆的 pivot 属性设置为场景的中心
  • 然后设置一个像下面这样的动作来控制前进

    /li>
  • 然后最后施加力左转和右转

    /li>

但是,我似乎无法将枢轴和/或位置设置为正确的值以获得所需的结果。

编辑:似乎上述方法将是我正在寻找的解决方案,但是由于某种原因,当我将几何图形添加到车辆节点时,它在场景图中的位置发生了巨大变化。当我添加硬编码按钮以将其位置更改为它所属的位置时,它仅对那个单帧显示正确,然后直接回到不知名的地方。

编辑2:用原始球体替换所有几何体以测试节点现在按预期旋转,但现在不受物理力的影响,似乎忽略了它作为dynamicBody的声明。

0 投票
2 回答
1715 浏览

ios - 物理力不影响动态主体 Scenekit

我的场景包含;
场景根部的静态物体

一个动态体,其枢轴属性位于 (0,-1000,0) 处,并SCNAction永久围绕静态体旋转。

当我尝试申请时;

对节点没有影响,就好像它被声明为静态主体一样。