我一直在尝试使用场景工具包创建一个场景,其中指定的对象始终位于其他对象的前面,尽管事实上它实际上位于其他对象的后面.与 blender中使用的效果类似.

显然,blender使用GUI和大量数学来转换2D对象,但我需要在具有SCNGeometry的SCNNode中使用此效果,换句话说,当前位于场景中的3D对象.

我考虑使用类别掩码,但在阅读Apple的文档后,我意识到这对我正在寻找的效果不起作用.

有没有人知道在SceneKit中做这个的方法?或者更好的是,甚至可以这样做吗?

非常感谢大家,现在以及我从StackExchange获得的所有其他帮助!

所以,结果我找到了我的问题的答案(在mnuages的帮助下).我只想发一个完整的答案.

像mnuages建议的那样,我尝试将readsFromDepthBuffer和writesToDepthBuffer都设置为false并将节点的renderingOrder设置为高数字.它的工作方式不对.它总是落后于每个物体,而不是总是在前面.获取图片中显示的结果的方法是将readsFromDepthBuffer设置为false,并将cube的renderingOrder设置为-1,否则将无法绘制它.

由于立方体和其他节点的材料有readFromDepthBuffer和writesToDepthBuffer设置为默认值true,它仍然会在它后面的对象前面,并且在它前面的对象后面,它将是正常的,只有箭头会表现我们想要的方式.

从图像中可以看出,立方体前面的线条部分是可见的.对于背后的部分,不能说同样的事情.

swift – 有没有办法把SCNNode总是放在别人面前?的更多相关文章

  1. ios – SceneKit.哪种方式起来了?

    似乎大多数3D创作应用程序使用Z作为“向上”轴.而SceneKit使用Y作为’向上’轴.SceneKit允许您将场景加载为Collada.DAE文件.通过以下任一方式加载场景时:要么您可以指定选项,包括SCNScenesourceConvertToYUpKey和SCNScenesourceConvertUnitsToMetersKey.相应地设置这些,我期望当我将它们添加到从加载场景中的节点构造的

  2. 如何在iOS 11 ARKit-Scenekit中为SCNNode创建边框以指示其选择?

    如何绘制边框以突出显示SCNNode并向用户指示该节点已被选中?在我的项目中,用户可以放置多个虚拟对象,用户可以随时选择任何对象.选择后,我应该向用户显示高亮显示的3D对象.有没有办法直接实现这个或在SCNNode上绘制边框?

  3. ios – 如何使用blender和PowerVR SDK为cocos3d创建一个简单的3d球体

    我是cocos3d的新手.我想创建一个简单的项目–旋转的3d球体.我用搅拌机设计了一个3d球体.所以我想要帮助创建collada文件和pod文件.使用blender和PowerVRSDK创建这个简单的3d对象时应该注意什么.谢谢解决方法如何在搅拌机中制作简单的球体,然后使用JeffLamarche的Blender-to-iOSscript将其导出?这甚至不需要Cocos或PowerVR,但这是一个良好的开端.由于您可以在iOS中轻松地将Cocos与非Cocos类集成,因此可能会有所帮助.你可以更进一步,利

  4. ios – 在球体表面SceneKit上写文字?

    我想知道是否有一种方法可以在SceneKit中沿着球体对象的表面写入文本.我知道如果我有一个图像,我会在表面上放置纹理并实现这种效果,但我想知道我是否可以在球体表面上以某种方式动态添加文本.任何的想法?

  5. ios – Swift Scenekit – 居中SCNText – getBoundingBoxMin:Max问题

    享受SCNText上的alignmentMode选项.谷歌搜索周围看起来像alignmentMode和containerFrame有问题.我发现的替代方案建议使用获取边界框功能来查找文本大小,然后相应地手动调整.很棒,除了我不能让功能工作.当我试图得到两个向量时,我得到一个错误:‘SCNVector3’无法转换为’UnsafeMutablePointer”我在几何和节点上得

  6. ios – 永远动画SCNNode – SceneKit,Swift

    我想永远动画2个立方体,直到用户点击其中一个.动画应该像∞一样.这些是我想要动画的sceneView中的我的立方体:我试图用嵌套动画做到这一点,它确实部分工作.现在,由于动画总是等到它们在开始新动画之前完成,它看起来并不光滑.在继续开发∞动画之前,我想知道是否有更好的方式.这是我目前的代码:输出显示以下内容:log0,log5,log6,log1,log2,log4,log2…解决方法如果要为SCNNode设置动画,请让节点运行SCNAction.迅速:Objective-C的:上面的代码将永久地上下调整

  7. xcode – 物理模拟的SceneKit更新方法

    我玩过精灵套件,并使用更新方法设置每个时间步骤处理的东西.我正试图学习一些快速的场景套件,似乎无法找到相应的.你能指点一下为SceneKit实现更新方法的例子吗?

  8. 如何正确使用iOS(Swift)SceneKit SCNSceneRenderer unprojectPoint

    那么,如果那架飞机与摄像机是正交的–那就是你的帮助.那么你需要做的就是在那架飞机上投射一点:现在,您可以在三维视图中拥有世界起源的位置归一化深度空间.要将2D视图空间中的其他点映射到此平面上,请使用此矢量中的z坐标:这让您在世界空间中将点击/分接位置映射到z=0平面,适合用作节点的位置,如果要向用户显示该位置.

  9. ios – SceneKit统计窗口告诉我们什么?

    到目前为止,我发现每秒帧数需要尽可能高,并且也要保持不变.别人的意思是什么,它们对什么有用?解决方法这就是你所看到的:>红色和灰色条是一种性能审查.它基于FPS,您应该尽一切努力使其保持绿色和饱满.现在,它非常糟糕!

  10. ios – 如何在不阻塞主线程的情况下添加SCNNode?

    解决方法我不认为使用dispatchQueue可以解决这个问题.如果我替换其他任务而不是创建SCNNode它按预期工作,所以我认为问题与SceneKit有关.thisquestion的答案表明SceneKit有自己的私有后台线程,它将所有更改批量化.因此,无论我使用什么线程来创建我的SCNNode,它们都会在与渲染循环相同的线程中的同一队列中结束.我正在使用的丑陋的解决方法是在SceneKit的委托渲染器方法中一次添加一些节点,直到它们全部完成.

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部