Sprite3D 和 Sprite 的问题

我在Cocos2dx-3.4 里面,创建了一个Scene , Scene 里面创建了一个Layer ,在Layer 上加载了一张图片作为背景。

然后我想在背景的前面加载一个 3D 模型(模型也加载在了Layer上), 发现无论怎样调整ZOrder , 相机的角度,都是 2d 的 sprite 会挡住3D的模型。

是不是因为无论怎么样,都是先渲染 3d模型,后渲染2d 精灵 ?

后来我只好把背景图片也作为 Sprite3D,再在上面做了个贴图,才实现了想要的效果 (效果就是 3D 模型放在贴图的前面)

背景图片也作为 Sprite3D,这样好一些,全3D处理方便。
不然需要设置globZorder,Sprite3D的glob z oder是零,2D背景要小于零。

谢谢啦。。。原来是glob z oder ,我再试试。

的确全3d要方便许多

我也遇到相同的问题了,是打算搞个Sprite作为平面,X轴转了-90°。
但是渲染一直有问题,
只有Sprite的父节点是Sprite3D的时候 才显示OK,不然就不对了。
感觉是FLAGS_RENDER_AS_3D这个标识,父节点是3D时,子节点的2D UI才能在3D空间中 正常的和3D模型显示。
不过子节点层级多了后还是有问题。。。。
当然用两个Camera也可以把一个2D UI最为背景,但是不会跟前面的3D模型产生 穿插遮挡关系,
正在犯愁中,有没有好的方案啊。

director:setDepthTest(true)
这个开启后,可以3D模型可以显示在Sprite上,但是 UI按钮上的文字不显示了:joy:

目前看来,确实是 深度测试的问题了,
不过2D UI默认是关闭深度测试的,这个目前也没有针对某些UI开启深度测试的 接口,
只能通过Director直接开关所有的 GLOBALZ_ZERO 这个队列里面的 深度测试,
OPAQUE_3D 和 TRANSPARENT_3D 这个rendercommod::is3D()时,会进入到这两个队列,但是set3D的调用,基本上是在3D模块里面写死的。