标签: scnnode

SceneKit:让子球体在半透明父球体内可见?

在SceneKit中,假设您要在半透明节点Parent中嵌入一个节点Child,这样Parent就像一个"笼子",您可以看到并查看Child.

具体地说,Parent表示半径为2的SCNSphere.Child是半径为1的SCNSphere,是Parent的子节点.

由于它在父母内部,因此儿童不可见.将Parent的不透明度设置为0.3或半透明的东西也会影响Child的不透明度,让您看到Child,但现在Child不再是完全不透明的.

你怎么能让孩子完全不透明,但仍可通过家长看到?

一个选项是Child一个独立节点,不再是Parent的子节点,而是手动计算将Child"inside"Parent中心所需的位置.但这需要每次父移动时手动移动Child,而当Child已经是Parent的子节点时,此移动自动发生.

有更好的方法吗?

ios scenekit scnnode scnsphere

2
推荐指数
1
解决办法
679
查看次数

在SceneKit中跨球体绘制文本

我刚开始在我的UIKit应用程序中使用SceneKit,目的是显示和操作一些3D模型.我需要显示一个球体,上面写着一些短文.我正在渲染这样的球体:

let sphereGeometry = SCNSphere(radius: 1)
let sphereNode = SCNNode(geometry: sphereGeometry)
sphereNode.position = SCNVector3(x: -1, y: 0, z: 8)
sphereGeometry.firstMaterial?.diffuse.contents = UIColor.cyan

self.rootNode.addChildNode(sphereNode)
Run Code Online (Sandbox Code Playgroud)

我尝试使用a CATextLayer来实现我的需要,但我没有运气.这样做的正确方法是什么?

3d text ios scenekit scnnode

2
推荐指数
1
解决办法
737
查看次数

如何使SCNNode水平旋转/旋转

我试图让我的 SCNNode 自动水平旋转。这是我到目前为止的代码:

box.scale = SCNVector3(x: 0.26, y: 0.26, z: 0.26)
box.position = SCNVector3(0.15, 3.85, -3)
Run Code Online (Sandbox Code Playgroud)

如何让这个盒子自动水平旋转?另外,有没有办法在启用用户交互的情况下实现这一点?谢谢!

更新:如果我听起来不太清楚,这就是我的意思:你知道当你在手指上旋转篮球时以及它是如何水平旋转的吗?这就是我想要达到的效果!谢谢!

scenekit scnnode swift4 xcode9

2
推荐指数
1
解决办法
3851
查看次数

更改SCNText上的字符串值不会产生任何更改

我正在阅读陀螺仪并将SCNText几何形状的弦更改为陀螺仪的偏航值.这种变化发生在陀螺仪处理器内部,每1/30秒调用一次.在SCNText几何与Interface Builder中创建.

我正在使用此代码来检索对文本的引用:

SCNNode *textNode = [scene.rootNode childNodeWithName:@"yawText" recursively:YES];
self.text = [textNode geometry]; 
//self.txt is declared as @property (strong, nonatomic) SCNText *text;
Run Code Online (Sandbox Code Playgroud)

稍后在陀螺仪手柄上我这样做:

CGFloat yaw = convertToDegrees(attitude.yaw);
[weakSelfText setString:[NSString stringWithFormat:@"%.1f", yaw]];
NSLog(@"yaw = %1f", yaw);

// I had to declare weakSelfText outside the gyro handler
// because Xcode was complaining
// weakSelfText is declared like this
// __weak typeof(self.text) weakSelfText = self.text;
Run Code Online (Sandbox Code Playgroud)

NSLog正确打印值但是没有变化SCNText.

是的,我试图更改主线程上的文本.没变.

ios scenekit scnnode scntext

1
推荐指数
1
解决办法
884
查看次数

如何使用SCNMaterial快速创建霓虹灯材料?

我一直在尝试SCNMaterials,着重于发射以尝试创建霓虹灯材料。不知道是否可能,但是如果它可以发光,那就太好了。谢谢 :)

material scenekit swift scnnode

1
推荐指数
1
解决办法
1442
查看次数

将物理添加到 SCNGeometryElement 基元

我是 SceneKit 的新手,所以我尝试做的事情完全有可能/很可能不是正确的方法。所以这是我的总体意图:

我正在建造一个玩家穿越的“隧道”。这是一个程序生成的隧道。我正在确定代表隧道网格的点的位置,然后将点与三角形连接在一起以对其进行蒙皮。我使用以下方法来生成我的三角形:

func addTriangleFromPositions(scene: SCNScene, point1: SCNVector3, point2: SCNVector3, point3: SCNVector3)
{   
    let vector12 = GLKVector3Make(point1.x - point2.x, point1.y - point2.y, point1.z - point2.z)
    let vector32 = GLKVector3Make(point3.x - point2.x, point3.y - point2.y, point3.z - point2.z)
    let normalVector = SCNVector3FromGLKVector3(GLKVector3CrossProduct(vector12, vector32))


    let positions: [SCNVector3] = [point1, point2, point3]
    let normals: [SCNVector3] = [normalVector, normalVector, normalVector]
    let indices: [Int32] = [0, 2, 1]
    let vertexSource = SCNGeometrySource(vertices: positions, count: positions.count)
    let normalSource = SCNGeometrySource(normals: normals, count: normals.count)
    let indexData …
Run Code Online (Sandbox Code Playgroud)

scenekit scnnode

1
推荐指数
1
解决办法
348
查看次数

Xcode 7 SceneKit对象的position属性在移动时不会更新?

所以我正在制作游戏,在游戏中,你将使用DPad在场景中移动你的球.虽然beta 4中存在同样的问题,但我正在使用Xcode 7 Beta 5.这是测试视图控制器的代码:

class TestController: UIViewController,DPadDelegate {
@IBOutlet var scnView:SCNView!
@IBOutlet var dpad:DPad!
var timer:NSTimer?
var update:NSTimer?
var colors = [UIColor.blueColor(),UIColor.redColor(),UIColor.whiteColor(),UIColor.yellowColor(),UIColor.cyanColor(),UIColor.orangeColor(),UIColor.magentaColor(),UIColor.purpleColor()]
var player:SCNNode!
var camera:SCNNode = SCNNode()
var i = 0
override func viewDidLoad() {
    super.viewDidLoad()
    NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "ColorCubeUpdate", userInfo: nil, repeats: true)
    NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "updateCamera", userInfo: nil, repeats: true)
    dpad.delegate = self
    player = SCNNode(geometry: SCNSphere(radius: 0.25))
    player.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "PlainEyes1")
    player.geometry?.firstMaterial?.multiply.contents = UIColor(red: 1.0, green: 0.5, blue: 0.5, alpha: 1.0)
    player.position = …
Run Code Online (Sandbox Code Playgroud)

xcode camera scenekit scnnode xcode7-beta5

0
推荐指数
1
解决办法
1280
查看次数

绘制SCNBox的边缘时没有对角线?

我正在使用Apple的ARKit制作AR应用程序,并且想要绘制盒子的线框轮廓。代码中描述的和图片中所示的斜线在盒子的每个面上绘制了斜边。它也隐藏了盒子另一侧的角。场景工具包中是否有办法让我摆脱对角线并使之成为透明的框,从而显示所有边缘和顶点?

let box:SCNNode = SCNNode(geometry: SCNBox(width: CGFloat(0.1), height: CGFloat(0.1), length: CGFloat(0.1), chamferRadius: CGFloat(0)))
box.geometry?.firstMaterial?.fillMode = .lines
box.geometry?.firstMaterial?.diffuse.contents = UIColor.green
Run Code Online (Sandbox Code Playgroud)

当前的SCNBox

scenekit swift scnnode arkit

0
推荐指数
1
解决办法
1017
查看次数

标签 统计

scenekit ×8

scnnode ×8

ios ×3

swift ×2

3d ×1

arkit ×1

camera ×1

material ×1

scnsphere ×1

scntext ×1

swift4 ×1

text ×1

xcode ×1

xcode7-beta5 ×1

xcode9 ×1