Tag: scenekit

如何在SceneKit中添加着色器的透明度?

我想从图像中获得透明度效果,现在我只是用一个圆环来testing,但着色器似乎不能用于alpha。 从我从这个线程( 使用Scenekit中的混合函数 )和这个有关透明度的维基链接( http://en.wikibooks.org/wiki/GLSL_Programming/GLUT/Transparency )所了解的内容中, GLBlendFunc被SceneKit中的杂pragma transparencyreplace。 你会知道这个代码有什么问题吗? 我使用SceneKit创build了一个新项目,并将船舶网格更改为圆环。 编辑: 我正在尝试搭乘飞机,但是下面的图片并没有出现在飞机内部,而是在下面的红色和棕色框中显示。 我的形象与阿尔法: 结果(带有alpha的图像应该代替棕色): let plane = SCNPlane(width: 2, height: 2) var texture = SKTexture(imageNamed:"small") texture.filteringMode = SKTextureFilteringMode.Nearest plane.firstMaterial?.diffuse.contents = texture let ship = SCNNode(geometry: plane) //SCNTorus(ringRadius: 1, pipeRadius: 0.5) ship.position = SCNVector3(x: 0, y: 0, z: 15) scene.rootNode.addChildNode(ship) let myscale : CGFloat = 10 […]

SceneKit – 照明和投射阴影

我试图创build一个聚光灯照亮一个立方体。 下面的表面应该显示一个阴影。 不幸的是,我无法做到这一点。 光忽视立方体,并将光投射在表面和立方体上 – 无论立方体是否挡在路上。 它看起来像: 代码,我只是在每个节点上设置castsShadow为YES来进行testing,但没有什么帮助: BOOL shadows = YES; _baseNode.castsShadow = shadows; _scene.rootNode.castsShadow = shadows; SCNBox *box = [SCNBox boxWithWidth: 50 height: 50 length: 50 chamferRadius: 10]; box.firstMaterial.diffuse.contents = [UIColor colorWithRed: 0.0 green:0.0 blue: 0.8 alpha: 1.0]; box.firstMaterial.doubleSided = YES; SCNNode *boxNode = [SCNNode nodeWithGeometry: box]; boxNode.position = SCNVector3Make(100, 100, 100); boxNode.castsShadow […]

SCNText渲染没有曲线,不像字体

当我运行这个SceneKit代码时: let txt = SCNText(string: "Hello", extrusionDepth: 0.2) let textNode = SCNNode(geometry: txt) scene.rootNode.addChildNode(textNode) 我得到非常有angular度的文字: 它似乎这样做,不pipe字体,它在设备上的行为与在模拟器中的行为相同。 以下是上下文中的代码: // create a new scene let scene = SCNScene() // create and add a camera to the scene let cameraNode = SCNNode() cameraNode.camera = SCNCamera() scene.rootNode.addChildNode(cameraNode) // place the camera cameraNode.position = SCNVector3(x: 10, y: 0, z: 75) […]

在SceneKit中的COLLADA转换

我们尝试在Xcode中查看模型并使用SceneKit来渲染模型。 如果我们将COLLADA(.dae)文件添加到Xcode,它会使用scntool将模型scntool为c3d格式(在Internet上find这个格式)。 但是我们希望在运行时加载模型(我们将它们从服务器下载到iOS设备)。 我们如何将.dae转换成这种格式,而不是从Mac OS? 我们运行Ubuntu的服务器,我们可以转换模型,并发送它已经转换到iOS设备。 非常感谢!

在从Blender导出到COLLADA / .dae格式以供在SceneKit中使用时包括纹理

我能够通过使用COLLADA / .dae格式导出在Blender中创build的在SceneKit中使用的网格,但是iOS设备上不会显示任何纹理。 此外,在OS X上预览将不会打开从Blender导出的任何COLLADA文件 – 但侧边栏预览显示网格。 出口需要哪些选项才能完成这项工作?

SceneKit。 哪个方法是?

似乎大多数3D创作应用程序使用Z作为“上”轴。 而SceneKit使用Y作为“上”轴。 SceneKit允许您将场景加载为Collada .DAE文件。 通过以下任一方式加载场景时: SCNScene(named: String?, inDirectory: String?, options: [NSObject : AnyObject]?) 要么 SCNSceneSource(URL url: NSURL!, options: [NSObject : AnyObject]!) 您可以指定选项,包括SCNSceneSourceConvertToYUpKey和SCNSceneSourceConvertUnitsToMetersKey。 设置这些相应地,我期望各个节点被转换和缩放时,我把它们join到我自己的场景构造的节点在加载的场景。 但是这些选项似乎没有效果。 let myScene = SCNScene(named: "Scene.dae", inDirectory: nil, options: [SCNSceneSourceConvertToYUpKey:true, SCNSceneSourceConvertUnitsToMetersKey:25.4]) 我误解了这些选项参数的含义吗?

使用iOS场景套件加载未压缩的collada文件

我需要加载我在iOS上下载的collada文件,我打算使用Scene Kit来做到这一点。 但是阅读文档,我发现XCode在编译时压缩collada文件,而Scene Kit只能加载压缩文件。 经过一番研究之后,我碰到了这篇文章 ,作者能够findXCode使用的脚本,并使用它们压缩文件。 问题是,我无法在我的服务器上运行它们。 所以我的问题是:有没有其他的方式来加载使用场景套件的collada文件? 还是有一个地方我可以find一个algorithm来做自己的压缩?

如何将场景背景的内容设置为立方体贴图

我试图设置一个场景的背景内容使用大约6个图像的天空盒效果。 我以正确的顺序创build了图像数组,我知道我需要使用 + (instancetype) materialPropertyWithContents:(id)contents 不过,我正在努力解决如何以及在哪里使用该类方法返回包含立方体贴图的属性。

代码签名错误每当我尝试更换新的SceneKit应用程序中的股票文件

所以Xcode 8最近刚刚发布,我还不确定究竟是什么原因导致了这个问题(这可能只是Xcode的一个testing版本,或者我可能是在某种程度上做错了)。 现在的问题是,我正在尝试创build一个新的SceneKit应用程序,我正在搞乱.scn文件。 我在“hero.scnassets”里面创build了一个.scn文件,“hero.scn”,并且在hero.scnassets文件夹内以“heroTexture.png”的名字提供了一个.png文件。 这个项目在“GameViewController.swift”文件中通常由Xcode 8.0 beta 1提供的代码被编辑如下: 原始代码: … let scene = SCNScene(named: "art.scnassets/ship.scn")! … let ship = scene.rootNode.childNode(withName: "ship", recursively: true)! ship.run(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1))) 编辑的代码: … let scene = SCNScene(named: "hero.scnassets/hero.scn")! … let hero = scene.rootNode.childNode(withName: "hero", recursively: true)! hero.run(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1))) 收到的错误: […]

使用SceneKit行原始types的笔触宽度

我正在尝试使用场景工具包复制此多维数据集图像形状(来自原始创build者的许可)。 到目前为止,我有线和顶点的绘图代码。 我不能使用图像,因为背景必须是透明的。 我正在尝试解决的具体问题是如何编辑SCNGeometryPrimitiveType.Line元素的描边宽度。 我创build线条的基本方式是这样的: private func squareVertices(length: Float) -> [SCNVector3] { let m = length/Float(2) let topLeft = SCNVector3Make(-mq, m+q, m+q) let topRight = SCNVector3Make( m+q, m+q, m+q) let bottomLeft = SCNVector3Make(-mq, -mq, m+q) let bottomRight = SCNVector3Make( m+q, -mq, m+q) return [topLeft, topRight, bottomLeft, bottomRight] } private func cubeFace() -> SCNGeometry { let […]