标签: scenekit

创建与节点几何尺寸相同的物理形状

我有两个盒子。顶部的框具有连接的动态PhysicalBody,底部的框具有连接的静态主体。

physicShapes使用以下方法创建:

topBox.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Dynamic, shape: nil)
bottomBox.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Static, shape: nil)
Run Code Online (Sandbox Code Playgroud)

当它们静止时,顶部的框比应有的高,这表明PhysicalShape大于应有的形状。这是静止的对象:

在此处输入图片说明

如何创建与要附加节点的几何形状相同的大小/形状的物理形状?

仅供参考:该SCNScene文件来自从Cheetah 3D导出的导入DAE文件。

ios scenekit swift

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

SceneKit中的allowRotation?

如何禁止在SceneKit中旋转节点?

例如,我想要一个模型(锥形)是动态的,跳跃的和飞行的,但总是垂直定向的?

我在苹果的车辆演示中尝试修复它,这是一个糟糕的解决方案.我也尝试了下面的代码,但模型只是缓慢而且小故障掉了下来

?- (void)renderer:(id<SCNSceneRenderer>)aRenderer didSimulatePhysicsAtTime:(NSTimeInterval)time{
    _node.rotation = SCNVector4Make(0, 0, 0, 0);
    //[_node.physicsBody resetTransform]; // - tried this too
}
Run Code Online (Sandbox Code Playgroud)

...最后我在scenekit手册中没有找到任何"allowRotation = NO".

scenekit ios8

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

Scene Kit SCNMorpher无法与SCNSphere等原语一起使用

有人让SCNMorpher工作吗?如果是这样,您到底做了什么?

我现在使用的是一个小型测试程序,该程序应该显示一个红色的圆锥体,当我点击屏幕时,它应该(应该!)将其变形为球形/球形。但是唯一发生的是,第一个几何图形消失了(变得非常小),而第二个几何图形(Morphers第一个目标)却从未出现。

我必须错过一些非常简单的事情。有人可以让我骑马吗?

import SceneKit
private let DISTANCE_FAKTOR = CGFloat(sqrt(3.0)/2.0)

class GameViewController: UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()

    let (scene, view) = configScene(self.view.frame)
    self.view = view

    // Position camera to see picture full screen and light at same position
    let pov = SCNVector3(x: 0.0, y: 0.0, z: Float(max(view.frame.width, view.frame.height) * DISTANCE_FAKTOR))
    let pol = SCNVector3(x: 0.0, y: 0.0, z: Float(max(view.frame.width, view.frame.height) * DISTANCE_FAKTOR))

    scene.rootNode.addChildNode(makeShapes()) // Create and add background plane
    scene.rootNode.addChildNode(makeCamera(pov)) // Add camera to scene
    scene.rootNode.addChildNode(makeLight(pol)) // Add …
Run Code Online (Sandbox Code Playgroud)

morphing ios scenekit

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

更改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
查看次数

SceneKit:使块更逼真或类似3D

下面的代码用于创建场景并在SceneKit中创建块.根据我们的用户,这些街区看起来平坦而不是"足够3D".截图1-2显示了我们的应用程序.

屏幕截图3-5显示了用户期望块看起来像什么,更像3D.

在与不同的人交谈之后,对于如何渲染看起来更像截图3-5的块有不同的看法.有人说使用环境遮挡,其他人说体素照明,有人说使用聚光灯和使用阴影或定向照明.

我们以前尝试添加全向照明,但这不起作用,因此它被删除.正如您在代码中看到的那样,我们还尝试了环境光节点,但也没有产生正确的结果.

渲染我们的块并获得与截图3-5类似的外观的最佳方法是什么?

注意:我们理解代码未针对性能进行优化,即显示的多边形不应显示.好的,可以.重点不在于性能,而在于实现更多类似3D的渲染.您可以假设节点有一些硬限制,例如场景中不超过1K或10K.

码:

func createScene() {
    // Set scene view
    let scene = SCNScene()
    sceneView.jitteringEnabled = true
    sceneView.scene = scene

    // Add camera node
    sceneView.pointOfView = cameraNode

    // Make delegate to capture screenshots
    sceneView.delegate = self

    // Set ambient lighting
    let ambientLightNode = SCNNode()
    ambientLightNode.light = SCNLight()
    ambientLightNode.light!.type = SCNLightTypeAmbient
    ambientLightNode.light!.color = UIColor(white: 0.50, alpha: 1.0)
    //scene.rootNode.addChildNode(ambientLightNode)
    //sceneView.autoenablesDefaultLighting = true

    // Set floor
    setFloor()

    // Set sky
    setSky()

    // Set initial position for user node
    userNode.position …
Run Code Online (Sandbox Code Playgroud)

voxel ios scenekit

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

如何在iOS上的GPU上将3D SceneKit内容合成到视频帧上?

我正在开发AR应用程序.我有一个SceneKit场景被渲染到SCNView(使用OpenGL ES作为渲染API).在此下方是另一个显示相机实时预览的视图.我想创建一个包含视频和3D场景的电影.

我正在使用基于Apple的RosyWriter示例代码的代码来处理带有OpenGL着色器的视频帧像素缓冲区.我认为我不太了解这些概念,因为我不确定如何在视频帧上叠加SceneKit渲染.我可以从SCNView/SCNSceneRenderer获取像素缓冲区,还是需要使用SCNRenderer将场景重新渲染到OpenGL捕获管道用于处理视频帧的屏幕外缓冲区中的纹理?

opengl-es core-video ios scenekit

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

使用SceneKit时如何将文本放在特定位置?

我试图遵循与圆柱体,盒子......相同的简单逻辑,所以只需定义textNode的位置,但它不起作用.

func makeText(text3D: String, position: SCNVector3, depthOfText: CGFloat, color: NSColor, transparency: CGFloat) -> SCNNode
{
    let textTodraw = SCNText(string: text3D, extrusionDepth: depthOfText)
    textTodraw.firstMaterial?.transparency = transparency
    textTodraw.firstMaterial?.diffuse.contents = color
    let textNode = SCNNode(geometry: textTodraw)
    textNode.position = position        
    return textNode
}
Run Code Online (Sandbox Code Playgroud)

textnode scenekit swift3

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

如何在SceneKit中绘制成千上万行?

我打算画很多线SceneKit.我搜索了如何绘制线条并找到了答案

它适用于我,除了它不适合绘制大量的线条.当我绘制数万行时,占用的RAM将是可怕的(n Gb).

我想知道是否有办法可以有效地绘制大量的线条.我只需要3D线,其从 - 到协调和长度可能不同.

graphics ios scenekit swift

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

hitTest在SceneKit/ARKit中不起作用

我设置了tapGestureRecognizer来检测ARSceneKit场景中对象的点击.我在handleTap方法中设置的hitTest方法在我非常接近对象时工作正常,但是当我走得更远时,hitTest方法总是失败.

scenekit arkit

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

如何设计ARKit使用的Animoji 3D模型?

我想在我的APP中创建一个Animoji.但是,当我与一些设计师联系时,他们不知道如何设计Animoji 3D模型.我在哪里可以找到供参考的解决方案?

解决方法我认为是创建3D模型的脸许多骨头,而当我得到blendShapesARFaceAnchor,其中包含脸部表情的详细信息,然后我用它来更新部分人脸的骨骼动画.

谢谢你的阅读.任何建议表示赞赏.

unity-game-engine ios scenekit arkit

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